How it works
When you run an AWS CLI command with a Cone-managed profile, the following happens automatically:- The AWS CLI calls
cone aws credentialsvia the profile’scredential_process. - Cone checks ConductorOne for an active grant on the permission set using the entitlement and app IDs stored in the profile.
- If you have access, Cone fetches temporary credentials from AWS SSO and returns them to the AWS CLI.
- If you don’t have access, Cone automatically submits an access request, monitors the policy step, and returns credentials if the request is auto-approved.
aws s3 ls --profile production-admin triggers the entire access request and credential flow transparently.
Prerequisites
Before you begin, make sure you have the following:- Cone installed and authenticated (
cone login) - AWS CLI v2 installed and available on your PATH
- Your organization uses ConductorOne to manage AWS IAM Identity Center permission sets
Set up Cone for AWS SSO
Runcone aws setup to configure your SSO settings and generate AWS CLI profiles for every AWS permission set available to you in ConductorOne.
Step 1: Run the setup command
On your first run, provide your SSO start URL and regions:Find your SSO start URL
Locate your AWS SSO start URL in the IAM Identity Center console. It looks like
https://myorg.awsapps.com/start.Identify your regions
You need two region values:
- SSO region: The AWS region where your IAM Identity Center is configured (where the SSO service runs). This is used for authentication API calls.
- Default region: The default AWS region for CLI commands (such as where your S3 buckets or EC2 instances are).
Run the command
| Flag | Description |
|---|---|
--sso-url | Your AWS SSO start URL. Required on first run. |
--sso-region | AWS region where IAM Identity Center is configured. Default: us-east-1. |
--region | Default AWS region for generated CLI profiles. Default: us-east-1. |
~/.conductorone/config.yaml, queries ConductorOne for all AWS permission set entitlements you can see, and creates a profile in ~/.aws/config for each one. Each profile stores the ConductorOne app and entitlement IDs so that credential lookups work without any additional configuration.Step 2: Verify your configuration
Run the following to confirm your settings were saved:Step 3: Refresh profiles when needed
If new AWS permission sets are added in ConductorOne, re-run the setup command. Existing profiles are skipped automatically, and new ones are added.Use AWS CLI with Cone
Once setup is complete, use the AWS CLI as you normally would by specifying a profile:What happens when you have access
If you have an active grant for the permission set in ConductorOne, Cone fetches temporary credentials from AWS SSO and returns them to the AWS CLI. The command succeeds as if you were using native AWS SSO. If your SSO session has expired, Cone automatically opens a browser for you to re-authenticate (the same flow asaws sso login).
If the grant was just approved and AWS hasn’t finished provisioning the permission yet, Cone retries automatically for up to 60 seconds until the credentials become available.
What happens when you don’t have access
If you don’t have an active grant, Cone checks whether the entitlement requires a request form. If it does, Cone directs you to request access interactively:Profile naming
Cone generates profile names from the AWS account name and the permission set role name:Get credentials directly
You can also usecone aws credentials outside of the AWS CLI to fetch temporary credentials as JSON:
Troubleshoot common issues
”SSO session expired. Logging in…”
Your AWS SSO session has expired. Cone automatically opens a browser for you to re-authenticate. This is the same flow as runningaws sso login.
”Session token not found or invalid”
This usually means the--sso-region doesn’t match where your IAM Identity Center is actually configured. Verify your settings:
“Missing cone_app_id or cone_entitlement_id”
The AWS profile was created by an older version of Cone that didn’t store entitlement IDs. Delete the profile from~/.aws/config and re-run cone aws setup to recreate it.
”This entitlement requires a request form”
The entitlement has custom form fields that must be filled out when requesting access. Cone can’t do this non-interactively. Use thecone get command shown in the error message to request access with the form.
”A pending request already exists”
A previous access request for this permission set is still open. Usecone task get <task-id> to check its status, or complete it in the ConductorOne web UI.
”The AWS CLI is required but was not found on PATH”
Install AWS CLI v2 and make sure theaws command is available in your shell.
Profiles not appearing after setup
cone aws setup only creates profiles for entitlements that ConductorOne identifies as AWS permission sets. If your AWS integration was recently set up, the permission sets may not have synced yet. Check the ConductorOne admin console to confirm the integration is active.