This guide walks you through gathering AWS credentials and configuration needed to create an AWS IAM Identity integration. The integration lists IAM users and groups and queries AWS CloudTrail management events for audit log data.
Before you begin, ensure that you have:
- Access to an AWS account with the ability to create IAM policies, roles, and users.
- AWS CloudTrail enabled in the AWS Region you plan to use for the integration.
IAM is a global service, but CloudTrail LookupEvents is Regional. The integration uses the same Region for both IAM and CloudTrail API clients, so pick the Region where the audit history you need is recorded.
| Operation | Required Policy Action |
|---|---|
| Query Users | iam:ListUsers |
| Query Groups | iam:ListGroups |
| Get User | iam:GetUser, iam:ListUserTags, iam:ListGroupsForUser, iam:ListMFADevices, iam:ListAccessKeys |
| Get Group | iam:GetGroup |
| Get Group Members | iam:GetGroup |
| Query Audit Log | cloudtrail:LookupEvents |
Synqly supports two methods for authenticating with AWS: static credentials (IAM user access keys) and role-based access (IAM role assumption). Role-based access is recommended for production environments because it uses short-lived credentials and provides better auditability through CloudTrail.
Role-Based access is recommended and is considered an AWS best practice.
Role-based access uses AWS IAM roles to grant Synqly temporary credentials to access resources in your AWS account. This eliminates long-lived credentials and provides better security through the principle of least privilege.
Create a role in your AWS account with a name that starts with SynqlyAccess (for example, SynqlyAccessS3Reader). This naming convention is required.
- In the AWS IAM console, go to Roles and choose Create role.
- For trusted entity type, choose Custom trust policy.
- Enter the following trust policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::733459310821:role/SynqlyIntegrationAccess"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "YOUR_EXTERNAL_ID"
}
}
}
]
}Replace YOUR_EXTERNAL_ID with a unique identifier you generate (for example, a UUID). You will provide this External ID when configuring the integration.
- Name the role with a
SynqlyAccessprefix (for example,SynqlyAccessMyIntegration). - Attach the appropriate permissions policy for your use case.
- Create the role and note its ARN.
For more details, see:
The External ID is a security mechanism that prevents the confused deputy problem. It ensures that only authorized requests from Synqly can assume your role.
The External ID must contain only the following characters:
- Alphanumeric characters (a-z, A-Z, 0-9)
- Special characters:
+ = , . @ : / - - Must be between 2 and 1224 characters in length
When creating an AWS integration in Synqly, provide the following configuration values based on your chosen authentication method.
| Credential Parameter | Description |
|---|---|
| Role ARN | The ARN of the IAM role you created, for example arn:aws:iam::123456789012:role/SynqlyAccessMyIntegration. The role name must start with SynqlyAccess |
| External ID | The External ID you specified in the role's trust policy. This value must match exactly |
| Role Session Name | OPTIONAL: A name for the role session. If not specified, Synqly generates a default session name |
| Duration | OPTIONAL: The duration of the role session in seconds. The value can range from 900 seconds (15 minutes) up to the maximum session duration configured on your role (default is 1 hour) |
Create your integration by supplying the following configuration values.
| Integration Parameter | Description |
|---|---|
| Credential | AWS credentials with the policy actions listed above. |
| Region | The AWS Region used for IAM and CloudTrail API clients. |