You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨账号假定角色访问S3桶时遇权限拒绝问题排查

跨AWS账号假定角色访问S3桶权限问题

环境配置

  • 账号A:ID为1111,包含名为data的角色
  • 账号B:包含名为lakehouse的S3桶

操作情况

已成功假定data角色,执行aws sts get-caller-identity返回身份ARN为arn:aws:sts::1111:assumed-role/data/AWSCLI-Session。

权限配置

账号B中lakehouse桶的权限策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::lakehouse/*",
                "arn:aws:s3:::lakehouse"
            ],
            "Condition": {
                "StringLike": {
                    "aws:PrincipalArn": "arn:aws:sts::1111:assumed-role/data/*"
                }
            }
        }
    ]
}

错误信息

执行aws s3 ls lakehouse时收到报错:

aws s3 ls lakehouse
调用ListObjectsV2操作时出错(AccessDenied):访问被拒绝

问题诊断与解决办法

  1. 检查账号A的data角色权限策略
    跨账号访问S3需要双向授权:桶策略允许角色访问,同时角色自身必须拥有执行对应操作的权限。确认data角色的权限策略中包含以下语句(可根据实际需求调整操作范围):
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::lakehouse",
                "arn:aws:s3:::lakehouse/*"
            ]
        }
    ]
}
  1. 排查服务控制策略(SCP)限制
    检查账号A和账号B的组织单元(OU)是否有SCP限制了跨账号S3访问。比如账号A的SCP是否禁止访问外部S3资源,或者账号B的SCP是否拒绝非本账号实体的访问请求。

  2. 验证权限匹配逻辑
    虽然桶策略中的StringLike条件arn:aws:sts::1111:assumed-role/data/*看起来能匹配当前会话ARN,但可以尝试将条件改为StringEquals并指定完整的会话ARN进行测试,排除通配符匹配问题:

"Condition": {
    "StringEquals": {
        "aws:PrincipalArn": "arn:aws:sts::1111:assumed-role/data/AWSCLI-Session"
    }
}
  1. 启用调试模式排查细节
    执行命令时添加--debug参数,查看完整的请求签名和服务端响应,定位具体的拒绝原因:
aws s3 ls lakehouse --debug

内容的提问来源于stack exchange,提问作者Eyal Solomon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:26:21