Cloud permissions¶
The cloud identity Trust3 services assume to reach your bucket, your secret store, and your DNS zone.
Not needed on Trust3 AI Cloud
A Trust3 AI Cloud plane runs in Trust3AICloud, so Trust3AI provides all of this. See Deployment Options.
| Deployment type | When you need it |
|---|---|
| Partially Managed (D2P) | Optional to start with. A cloud identity becomes required as soon as the runtime plane touches a cloud service — your own bucket, your own secret manager, or automatic DNS. |
| Self-Managed | Required. S3 and DNS access are always configured. |
The wizard's Cloud Permissions step shows the same commands with your values filled in. Self-Managed runs on AWS only.
AWS — IAM role (IRSA)¶
Create an IAM role named trust3-<runtime-name>-role that Trust3 services assume through the cluster's OIDC provider (IRSA). You can use an existing role if the trust relationship and policy match.
Create the role¶
Set your EKS cluster name, then create the role with the OIDC trust policy:
Retrieve the role ARN (this is what you enter in the wizard):
| Bash | |
|---|---|
OIDC provider not associated?
If your EKS cluster does not have an OIDC provider associated with IAM, create one first — see the AWS IRSA documentation:
| Bash | |
|---|---|
Attach the permissions policy¶
Attach one inline policy named Trust3PermissionsPolicy, covering Secrets Manager (your own secret store), S3 (your own bucket), and Route 53 (automatic DNS).
- On Partially Managed (D2P), include only the statements for the services you configured.
- On Self-Managed, the S3 and Route 53 statements are always needed; include the Secrets Manager statement only when AWS Secrets Manager is your secret store.
Trust relationship for an existing role¶
If you reuse an existing role, set its trust policy — replace <oidc-arn> and <oidc-url> with your cluster's OIDC provider values:
| JSON | |
|---|---|
Apply it — put the JSON above in a TRUST_POLICY variable, then:
| Bash | |
|---|---|
Find your OIDC values
| Bash | |
|---|---|
Remove https:// from the output to get <oidc-url>; the matching <oidc-arn> is arn:aws:iam::<account-id>:oidc-provider/<oidc-url>.
Azure — managed identity¶
Partially Managed (D2P) only. Create a User-Assigned Managed Identity named trust3-<runtime-name>-identity and a federated credential so Kubernetes service accounts in the runtime namespace can authenticate as it via Workload Identity. You can use an existing identity if the configuration matches.
Create the managed identity¶
| Bash | |
|---|---|
Retrieve the Client ID (this is what you enter in the wizard):
| Bash | |
|---|---|
Create the federated identity credential¶
Find your AKS OIDC issuer URL:
| Bash | |
|---|---|
Workload Identity not enabled on your AKS cluster?
Enable it first — see the AKS Workload Identity documentation:
| Bash | |
|---|---|
Role assignments¶
Assign only the roles for the services you configured.
When using your own blob container:
| Bash | |
|---|---|
When using automatic DNS management:
Google Cloud — service account¶
Partially Managed (D2P) only. Create a GCP service account named trust3-<runtime-name>-sa and bind it to the runtime's Kubernetes service account via Workload Identity. You can use an existing service account if the email and bindings match.
Create the service account¶
| Bash | |
|---|---|
Retrieve the service account email (this is what you enter in the wizard — format trust3-<runtime-name>-sa@<project-id>.iam.gserviceaccount.com):
| Bash | |
|---|---|
Workload Identity binding¶
Always required when using the service account:
| Bash | |
|---|---|
Workload Identity not enabled on your GKE cluster?
Enable it first — see the GKE Workload Identity documentation:
Role bindings¶
Grant only the roles for the services you configured.
roles/storage.objectAdmin — when using your own GCS bucket:
roles/dns.admin — when using automatic DNS management:
- Prev topic: DNS and ingress
- Next topic: Before You Begin