使用跨账号访问角色(Cross-Account Access Role)
可以通过创建一个带有所需权限的 IAM 角色,并向其所需使用的多个 AWS 账号授予跨账号访问权限来解决此问题。这样,其他 AWS 账号就可以通过使用该角色进行操作,而无需单独为每个账号创建相同的权限。
以下是一个示例 CloudFormation 模板,用于创建一个具有跨账号访问权限的 IAM 角色:
Resources:
CrossAccountRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
AWS: arn:aws:iam::AccountID1:root
Action: sts:AssumeRole
Path: "/"
Policies:
- PolicyName: CrossAccountAccessPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action: s3:GetObject
Resource: arn:aws:s3:::bucket-name/*
上面的模板中:
AccountID1
是要使用此角色的 AWS 账号的 ID。s3:GetObject
是允许访问的权限。bucket-name
是要访问的 S3 存储桶名称。要将此角色授予其他 AWS 账号,请向其他账号的 IAM 用户添加以下权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sts:AssumeRole"
],
"Effect": "Allow",
"Resource": "arn:aws:iam::AccountID2:role/CrossAccountRole"
}
]
}
上面的示例代码中,AccountID2
是要使用跨账号访问角色的其他 AWS 账号的 ID。
当其他 AWS