Capabilities
| Resource | Sync | Provision |
|---|---|---|
| IAM and Identity Center user accounts | ||
| IAM roles | ||
| IAM groups | ||
| IAM accounts | ||
| Identity Center groups | ||
| Accounts via Permission Sets | * | |
| Secrets - Access keys |
Known limitations
- Cross-account Assume Role is not currently supported
Gather AWS credentials
Configuring the connector requires you to pass in credentials generated in AWS. Gather these credentials before you move on. Follow the relevant set of instructions below to set up the AWS connector for IAM or SSO, as your configuration dictates.- IAM setup
- SSO setup
IAM setup: Gather credentials that support syncing child account data
To sync IAM data (like users, roles, and groups) from multiple AWS child accounts, ConductorOne uses a secure, read-only mechanism called cross-account access. This setup works by allowing a central role in your root account to temporarily assume a specific role in each child account. This method ensures that the connector can gather the necessary data without storing credentials or requiring permanent access.If you’re using this setup, make sure to click Enable support for AWS Organizations when setting up the connector in the ConductorOne web UI, and DO NOT click Enable support for AWS IAM Identity Center or Enable usage of the AWS IAM Identity Center SCIM API.In order to use the connector to gather IAM AWS data, you’ll need to configure each sub-account to have a role with a trust policy. There are two options here:- Use
OrganizationAccountAccessRole, and add the following to the management role:{ "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::*:role/OrganizationAccountAccessRole" } - Create a new custom role by following the steps below
Create a custom IAM role
This custom role acts as a bridge, allowing ConductorOne to securely access your child account. The trust policy you’re about to create is the key to this connection.1
Navigate to the IAM Dashboard and select Roles > Create Role.
2
Select Custom Trust Policy and paste the following into the Trust Policy JSON editor, replacing Notes on the Trust Policy:
“Action”: “sts:AssumeRole”: This is the core permission. It’s the only action allowed by this policy, and it specifically allows the ConductorOne role in your root account to temporarily assume this role in the child account. Think of it like a temporary key that only the main account can use.
“Principal”: “arn:aws:iam::
{ROOT_ID} with the root ID from the main account, ConductorOneService with the role name from the root account, and EXTERNAL_ID_FROM_C1_INTEGRATIONS_PAGE with the External ID from ConductorOne.{ROOT\_ID}:role/ConductorOneService”: This is the trusted entity. It specifies that only the ConductorOne role in your main root account is allowed to assume this role. This ensures that no other account can use this trust policy.3
Click Next.
4
Skip Add permissions and click Next.
5
Give the role a name, such as ConductorOneIntegration.

6
Add any tags relevant to your organization and click Create Role.
7
Find the newly created role, and click on it to view the role details page.

Grant permission for data sync
Next, you will create an inline policy to define the specific data this role can gather from the child account. These are read-only permissions that enable ConductorOne to securely sync your IAM data.1
Under Permissions Policies, click Add Permissions and select Create Inline Policy.
2
Switch to the JSON Editor tab and paste the following policy into the editor:Notes about permissions:
iam:ListUsers: Allows ConductorOne to retrieve a list of all IAM user accounts in this AWS account.
iam:ListGroups: Allows ConductorOne to retrieve a list of all IAM groups.
iam:ListRoles: Allows ConductorOne to retrieve a list of all IAM roles.
iam:GetGroup: Required to see which users belong to which groups. The ListGroups action only provides the group name, while GetGroup provides the group’s members.
iam:ListAccessKeys and iam:GetAccessKeyLastUsed: These are optional permissions. They allow ConductorOne to gather data on the status of your IAM access keys, such as when they were last used. This is useful for auditing and security purposes (such as identifying unused or old keys). ConductorOne does not store or access the secret access key itself.
3
Click Review Policy.
4
Give the policy a name, such as ConductorOnePermissions and click Create Policy.

5
Copy the Role ARN for the Role we created, it should look like: 
arn:aws:iam::NNNNNNNNNN:role/ConductorOneIntegration.
Configure the AWS connector
- Cloud-hosted
- Self-hosted
- Terraform
Follow these instructions to use a built-in, no-code connector hosted by ConductorOne.That’s it! Your AWS connector is now pulling access data into ConductorOne.
1
Return to the AWS v2 connector setup page in ConductorOne.
2
Find the Settings area of the page and click Edit.
3
Paste the AWS Role ARN into the Role ARN field.
4
Optional. Click to Enable support for AWS Organizations.
If support for AWS Organizations is enabled, the IAM Role (as described in Step 2) must be created in the management (formerly called master) account of the AWS Organization. If the IAM Role is created on a member account and support for AWS Organizations is enabled, the integration will return a 400 error.
5
Optional. Click to Enable support for AWS IAM Identity Center and select the region for AWS IAM Identity Center from the dropdown.
6
Optional. To enable ConductorOne to sync the statuses of SSO accounts, click to Enable usage of the AWS IAM Identity Center SCIM API and enter the SCIM endpoint and access token in the relevant fields.
7
Optional. Enable Sync secrets to display them on the Inventory page.
8
Click Save.
9
The connector’s label changes to Syncing, followed by Connected. You can view the logs to ensure that information is syncing.