AWS IAM outbound identity federation lets your AWS workloads (EC2 instances, Lambda functions, ECS tasks, and more) obtain signed JWTs that C1 can trust directly. No long-lived API keys to store or rotate.
Prerequisites
- A service principal with an AWS IAM federation trust. See set up federation if you haven’t created one yet. Use the AWS IAM Outbound preset.
- The trust’s client ID (for example
calm-wolf-40291@yourcompany.conductor.one/wfe)
- AWS IAM outbound identity federation enabled in your AWS account
Step 1: Enable outbound identity federation in AWS
Before your workloads can request tokens, enable the feature in your AWS account. This generates a unique OIDC issuer URL for your account.
The get-outbound-web-identity-federation-info response includes your account-specific issuer URL, for example https://abc123-def456.tokens.sts.global.api.aws. The resource outputs include the issuer URL. Requires AWS provider v6.26.0 or later.
Create an IAM policy that grants sts:GetWebIdentityToken with your C1 tenant domain as the audience. Attach this policy to the IAM role used by your workload.
Step 3: Create a federation trust in C1
When creating the provider in C1, select the AWS IAM Outbound preset and enter the issuer URL from Step 1. Then create a trust with a CEL expression to control which AWS principals can authenticate. See set up federation for the full walkthrough.
Step 4: Request and exchange the token
From your AWS workload, call GetWebIdentityToken to get a signed JWT, then exchange it for a C1 access token:
Use the access token in an Authorization: Bearer header for C1 API calls:
When using C1 tools (cone, Terraform provider), you must set both of these environment variables. The tools require them to handle the token exchange internally:
CEL expression examples
When creating the federation trust, the CEL expression controls which AWS principals can authenticate. The expression evaluates against the JWT’s claims. AWS-specific claims are nested under the https://sts.amazonaws.com/ namespace — use bracket notation to access them.
Restrict to an AWS account
Restrict to a specific IAM role
Restrict to an account and organization
Common AWS OIDC claims
Standard claims
AWS identity claims (under https://sts.amazonaws.com/)
Session context claims (under https://sts.amazonaws.com/)
Custom claims passed via the Tags parameter of GetWebIdentityToken appear in the request_tags field:
Security best practices for AWS IAM
Always bind to a specific AWS account ID and IAM role ARN. A CEL expression that only checks one claim may be too permissive. For production workloads, use principal tags and organization constraints for defense-in-depth.
- Bind to account and role: Use both
aws_account and sub to ensure only specific roles in specific accounts can authenticate.
- Use principal tags: Tag IAM roles with metadata like
environment or team and validate them in CEL for fine-grained control.
- Limit token lifetime: Configure the IAM policy to enforce a short
DurationSeconds on GetWebIdentityToken calls.
- Scope trust roles: Use scoped roles on the federation trust to limit what the exchanged token can do. See security controls for details.