AWS Batch跨账号Assume Role授权失败问题求助
解决方案:AWS Batch跨账号AssumeRole被拒问题
问题根因
B1角色的信任策略未正确匹配A1角色的假设角色会话(assumed-role)。当AWS Batch以A1作为作业角色运行时,会生成带随机会话ID的临时身份(格式为arn:aws:sts::A:assumed-role/A1/[随机ID]),而原信任策略仅允许A1的角色ARN(arn:aws:iam::A:role/A1),导致权限校验失败。
具体解决方法
方法1:调整B1的信任策略,允许A1的所有假设会话
修改B账号中B1角色的信任策略,通过StringLike条件匹配A1角色的所有assumed-role身份:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::[账号A-ID]:role/A1" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:PrincipalArn": "arn:aws:sts::[账号A-ID]:assumed-role/A1/*" } } } ] }
替换[账号A-ID]为实际的AWS账号A的ID。
方法2:添加更严格的来源限制(可选)
如果需要限制仅允许AWS Batch作业发起的AssumeRole请求,可以在信任策略中增加aws:SourceArn和aws:SourceAccount条件,缩小权限范围:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::[账号A-ID]:role/A1" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:PrincipalArn": "arn:aws:sts::[账号A-ID]:assumed-role/A1/*" }, "StringEquals": { "aws:SourceAccount": "[账号A-ID]", "aws:SourceArn": "arn:aws:batch:[区域ID]:[账号A-ID]:job-definition/[你的作业定义名]:*" } } } ] }
替换[区域ID]和[你的作业定义名]为实际信息。
验证调整
修改完成后,重新触发AWS Batch作业,验证是否能成功AssumeRole并访问B账号的S3存储桶。
内容的提问来源于stack exchange,提问作者Sid
相关产品推荐
相关产品推荐

