1. Principal (User/Role) → STS AssumeRole
2. STS → Verify trust policy + permissions
3. STS → Return temporary credentials
- AccessKeyId
- SecretAccessKey
- SessionToken
- Expiration
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "my-external-id"
}
}
}
]
}
Account A (111111111111):
- User/Role cần access resources ở Account B
- IAM Policy: Allow sts:AssumeRole on Account B role
Account B (222222222222):
- Role với Trust Policy cho Account A
- Permission Policy cho phép access resources
| Scenario | Min | Max | Default |
|---|---|---|---|
| AssumeRole | 15 min | 12 hours | 1 hour |
| AssumeRoleWithSAML | 15 min | 12 hours | 1 hour |
| AssumeRoleWithWebIdentity | 15 min | 12 hours | 1 hour |
Exam Tip: Cross-account access = AssumeRole. ExternalId chống confused deputy. Trust policy + permission policy đều phải allow.