AWS Credentials¶
Cloudrift requires read-only access to AWS resources for drift detection.
Required IAM Permissions¶
Minimum Policy¶
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation",
"s3:GetBucketVersioning",
"s3:GetBucketEncryption",
"s3:GetBucketLogging",
"s3:GetBucketTagging",
"s3:GetBucketPublicAccessBlock",
"s3:GetLifecycleConfiguration",
"s3:GetBucketAcl",
"ec2:DescribeInstances",
"ec2:DescribeTags",
"sts:GetCallerIdentity"
],
"Resource": "*"
}
]
}
Per-Service Breakdown¶
| Permission | Purpose |
|---|---|
s3:ListAllMyBuckets | Enumerate buckets |
s3:GetBucketLocation | Determine bucket region |
s3:GetBucketVersioning | Check versioning status |
s3:GetBucketEncryption | Check encryption config |
s3:GetBucketLogging | Check access logging |
s3:GetBucketTagging | Read resource tags |
s3:GetBucketPublicAccessBlock | Check public access settings |
s3:GetLifecycleConfiguration | Read lifecycle rules |
s3:GetBucketAcl | Read bucket ACL |
| Permission | Purpose |
|---|---|
ec2:DescribeInstances | List and describe EC2 instances |
ec2:DescribeTags | Read instance tags |
| Permission | Purpose |
|---|---|
sts:GetCallerIdentity | Validate credentials and display account info |
AWS Profile Configuration¶
Configure profiles in ~/.aws/credentials:
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[production]
aws_access_key_id = AKIAI44QH8DHBEXAMPLE
aws_secret_access_key = je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
Reference the profile in your config:
Environment Variables¶
AWS SDK v2 supports standard environment variables:
| Variable | Description |
|---|---|
AWS_PROFILE | Profile name from credentials file |
AWS_REGION | AWS region |
AWS_ACCESS_KEY_ID | Access key (overrides profile) |
AWS_SECRET_ACCESS_KEY | Secret key (overrides profile) |
AWS_SESSION_TOKEN | Session token for temporary credentials |
IAM Roles (Assumed Roles)¶
For cross-account scanning, configure a role in ~/.aws/config:
[profile cross-account]
role_arn = arn:aws:iam::ACCOUNT_ID:role/CloudriftReadOnly
source_profile = default
region = us-east-1
Then reference it:
Permissions
Cloudrift only needs read-only access. Never grant write or delete permissions to the scanning role.