You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: COMPONENTS.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -137,6 +137,21 @@ Usage:
137
137
138
138
Images are normally stored in the '/static' folder in `img` or `diagrams`.
139
139
140
+
### Dark mode images
141
+
142
+
To provide a separate image for dark mode, use the `srcDark` prop:
143
+
144
+
```
145
+
<CaptionedImage
146
+
src="/diagrams/my-diagram.svg"
147
+
srcDark="/diagrams/my-diagram-dark.svg"
148
+
title="My diagram"
149
+
alt="Description of the diagram"
150
+
/>
151
+
```
152
+
153
+
When `srcDark` is provided, both images are rendered in the DOM and the browser loads both upfront. CSS toggles visibility based on the active theme, so switching between light and dark mode is instant with no loading delay. When `srcDark` is omitted, the component renders a single image as usual.
154
+
140
155
### Zooming images
141
156
142
157
When images are complex and may not render in a readable fashion on normal monitors, you can enable a minimal form of zooming by setting the `zoom` prop to true:
Copy file name to clipboardExpand all lines: docs/best-practices/cloud-access-control.mdx
+61-7Lines changed: 61 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,6 +22,13 @@ Temporal Cloud supports two secure authentication methods for Workers:
22
22
23
23
Both options help secure communication between workers and Temporal Cloud. Choosing the right method and managing it properly is key to maintaining security and minimizing downtime.
24
24
25
+
Use this page to define your operating model for machine access to Temporal Cloud. For setup steps and product-specific
26
+
mechanics, see [Manage API keys](/cloud/api-keys) and [Manage service accounts](/cloud/service-accounts).
27
+
28
+
Related guidance:
29
+
-[Namespace best practices](/best-practices/managing-namespace)
1.**Generate new credentials**: Create new certificates or API keys in Temporal Cloud before the current ones expire
@@ -45,17 +52,64 @@ In the case that you are using multiple certificates signed by the same CA, and
45
52
46
53
One convention is to give certificates a common name that matches the namespace. If you do this when using the same CA for dev and prod, then you can leverage Certificate Filters to prevent access to production environments. This is described in detail under the [authorization section](https://docs.temporal.io/cloud/certificates#control-authorization) of the documentation.
47
54
48
-
## Best practices:
49
-
#### 1. Establish clear guidelines on authentication methods: Teams should standardize on either [mTLS certificates](https://docs.temporal.io/cloud/certificates) or [API keys](https://docs.temporal.io/cloud/api-keys) for the following operations:
55
+
## Best practices
56
+
57
+
### Establish clear guidelines on authentication methods
58
+
59
+
Teams should standardize on either [mTLS certificates](https://docs.temporal.io/cloud/certificates) or
60
+
[API keys](https://docs.temporal.io/cloud/api-keys) for the following operations:
50
61
- Connect Temporal clients to Temporal Cloud (e.g. Worker processes)
By default, it is recommended for teams to use API keys and [service accounts](https://docs.temporal.io/cloud/service-accounts) for both operations because API keys are easier to manage and rotate for most teams. In addition, you can control account-level and namespace-level roles for service accounts.
64
+
By default, teams should use API keys with [service accounts](/cloud/service-accounts) for both operations. API keys
65
+
are generally easier to set up and rotate than mTLS certificates, and service accounts let you assign account-level and
66
+
namespace-level roles.
67
+
68
+
If your organization requires mutual authentication and stronger cryptographic guarantees, use
69
+
[mTLS certificates](/cloud/certificates) to authenticate Temporal clients to Temporal Cloud and use API keys for
70
+
automation, because the Temporal Cloud [Operations API](/ops) and [Terraform provider](/cloud/terraform-provider) only
71
+
support API key authentication. Unlike API keys tied to users or service accounts, mTLS certificate authentication is
72
+
not tied to Temporal Cloud RBAC identities. Namespace access is based on CA trust, with optional
73
+
[Certificate Filters](/cloud/certificates#manage-certificate-filters) to narrow access by Common Name.
74
+
75
+
### Default operating model for service accounts and API keys
76
+
77
+
For most organizations, use the following defaults:
78
+
79
+
- Create one Service Account per service or worker deployment, not one shared Service Account for an entire team
80
+
- Use account-level Service Accounts only when a service genuinely needs cross-Namespace or account-wide access
81
+
- Prefer Namespace-scoped Service Accounts when a service should only access one Namespace
82
+
- Grant Service Accounts namespace-level access only to the specific Namespaces they need
83
+
84
+
This approach gives you cleaner ownership, easier rotation, and better auditability than sharing a single machine
85
+
identity across multiple services.
86
+
87
+
### Use access boundaries that match your Namespace boundaries
88
+
89
+
The way you partition Namespaces should usually match the way you partition machine identities.
90
+
91
+
- If multiple services share a Namespace, you may still want one Service Account per service so that each deployment can
92
+
rotate credentials independently.
93
+
- If you split workloads into separate Namespaces for security, capacity, or team ownership reasons, those Namespaces
94
+
should usually have separate Service Accounts and API keys as well.
95
+
- If you use Namespace-per-tenant isolation, expect your credential model and RBAC model to become correspondingly more
96
+
granular.
97
+
98
+
For more on topology tradeoffs, see [Namespace best practices](/best-practices/managing-namespace) and
Use the following sequence when rotating credentials:
54
104
55
-
If your organization requires mutual authentication and stronger cryptographic guarantees, then it is encouraged for your teams to use mTLS certificates to authenticate Temporal clients to Temporal Cloud and use API keys for automation (because Temporal Cloud [Operations API](https://docs.temporal.io/ops) and [Terraform provider](https://docs.temporal.io/cloud/terraform-provider) only supports API key for authentication)
105
+
1. Create the replacement credential before the existing one expires.
106
+
2. For API keys, create the new valid key while the old key still works, then roll your Workers and clients to use the new key.
107
+
3. For client certificates, stage the new certificate before removing the old one when your deployment process supports that transition.
108
+
4. Validate connectivity and normal Workflow execution using the new credential.
109
+
5. Remove the old credential only after all clients and Workers have switched.
56
110
57
-
#### 2. Use Certificate Filters to restrict access when using shared CAs (e.g., `dev` vs `prod`):
111
+
###Use Certificate Filters to restrict access when using shared CAs (e.g., `dev` vs `prod`)
58
112
59
-
Certificate Filters are an additional way of validating using the client certificate presented during client authentication. Give certificates a common name that matches the namespace. This is not a requirement.
113
+
Certificate Filters are an additional way of validating using the client certificate presented during client authentication. Give certificates a common name that matches the namespace. This is not a requirement.
60
114
61
-
If you do this when using the same CA for dev and prod environments, then you can leverage Certificate Filters to prevent access to production.
115
+
If you do this when using the same CA for dev and prod environments, then you can leverage Certificate Filters to prevent access to production.
Copy file name to clipboardExpand all lines: docs/best-practices/cost-optimization.mdx
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,7 +62,7 @@ See [Spooky Stories: Chilling Temporal Anti-Patterns](https://temporal.io/blog/s
62
62
### Large payloads in Workflow History
63
63
64
64
Passing multi-megabyte payloads through Workflows when external storage (S3, blob storage) is more appropriate.
65
-
Use [compression](/troubleshooting/blob-size-limit-error#why-does-this-error-occur) or the [claim check pattern](https://dataengineering.wiki/Concepts/Software+Engineering/Claim+Check+Pattern) for large data.
65
+
Use [compression](/troubleshooting/blob-size-limit-error#payload-size-limit) or the [claim check pattern](https://dataengineering.wiki/Concepts/Software+Engineering/Claim+Check+Pattern) for large data.
66
66
67
67
### Over-optimization at the expense of observability
68
68
@@ -137,7 +137,7 @@ For detailed discussion of this tradeoff, see [How many Activities should I use
137
137
138
138
### Child Workflows vs Activities
139
139
140
-
[Child Workflows cost 2 Actions](/cloud/actions#child-workflows) compared to an Activity's 1 Action.
140
+
[Child Workflows cost 2 Actions](/cloud/actions#workflow) compared to an Activity's 1 Action.
141
141
See [Child Workflows documentation](/child-workflows) for detailed comparison of capabilities and use cases.
142
142
143
143
### Retry Policies
@@ -165,7 +165,7 @@ Refer to this blog post on [Mastering Workflow retry logic for resilient applica
165
165
### Local Activities
166
166
167
167
A [Local Activity](/local-activity#local-activity) is an Activity Execution that executes in the same process as the Workflow Execution that spawns it.
168
-
Therefore, multiple Local Activities that run back-to-back only [count as a single billable action](/cloud/actions#activities), whereas each regular Activity counts as a billable action.
168
+
Therefore, multiple Local Activities that run back-to-back only [count as a single billable action](/cloud/actions#activity), whereas each regular Activity counts as a billable action.
169
169
However, there are tradeoffs to converting regular Activities to Local Activities.
170
170
For example, if a specific Local Activity fails, *all* of them will be retried together.
171
171
Review [the docs](/local-activity) or reach out to your account team to learn more.
@@ -189,7 +189,7 @@ Use Regular Activities instead of Local Activities if you require any of the fol
189
189
2. For Search Attributes that must be updated during Workflow Execution, each `UpsertSearchAttributes` call counts as 1 Action regardless of how many attributes are updated.
190
190
Batch multiple related attribute updates into single operations to reduce Actions consumed.
191
191
192
-
See the [Temporal Cloud Action Documentation](/cloud/actions#workflows) for details.
192
+
See the [Temporal Cloud Action Documentation](/cloud/actions#workflow) for details.
193
193
194
194
#### Signal handling
195
195
@@ -252,7 +252,7 @@ Alternatively, if you are looking to do analysis on closed Workflow Executions,
252
252
### Validation approach
253
253
254
254
1.**Test in non-production**: Validate functional correctness before production deployment
255
-
2.**Monitor comprehensively**: Leverage the [Usage dashboard](/cloud/actions#usage) in the Cloud UI to track the impact on Actions and Storage after optimizations are made
255
+
2.**Monitor comprehensively**: Leverage the [Usage dashboard](/cloud/actions-usage#usage) in the Cloud UI to track the impact on Actions and Storage after optimizations are made
256
256
3.**Progressive rollout**: Deploy to a small percentage, validate, then expand. Review the [Worker Versioning documentation](/production-deployment/worker-deployments/worker-versioning) to learn about rolling out changes to Workflows
257
257
4.**Continuous review**: Re-evaluate optimization effectiveness quarterly as system evolves
0 commit comments