AWS跨账号S3访问配置报错排查及权限配置全流程咨询
AWS跨账号S3访问问题排查与分步解决
一、ARN无效报错原因分析
你遇到的ARN无效、资源错误,核心问题出在账号ID位数不符合AWS规范:
AWS账号ID必须是12位数字,但你提供的ARN中账号部分868990465仅9位,格式不合法导致校验失败。
另外需确认角色ARN的完整性:SSO自动生成的角色ARN固定格式为:arn:aws:iam::<12位账号ID>:role/aws-reserved/sso.amazonaws.com/<区域>/AWSReservedSSO_<权限集名称>_<随机字符串>
复制时要从IAM角色详情页完整复制,避免手动截断或输入错误。
你配置的S3资源部分是正确的:arn:aws:s3:::example-data对应桶本身(适配s3:ListBucket操作),arn:aws:s3:::example-data/*对应桶内所有对象(适配s3:Get*操作),这部分无问题。
二、修正桶策略及后续访问步骤
1. 修正并验证桶策略
将Principal中的ARN替换为包含12位正确账号ID的完整角色ARN,示例修正后策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionsForExampleAccount", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/eu-west-1/AWSReservedSSO_AWSAdministratorAccess_67237874g479d" }, "Action": [ "s3:ListBucket", "s3:Get*" ], "Resource": [ "arn:aws:s3:::example-data", "arn:aws:s3:::example-data/*" ] } ] }
保存前用IAM Access Analyzer验证策略,确保无语法错误和权限逻辑冲突。
2. 检查中央SSO权限集
确认中央账号的SSO权限集(如AWSAdministratorAccess)没有显式拒绝s3:ListBucket、s3:Get*操作——IAM的显式拒绝规则会覆盖桶策略的允许规则。
3. 用户端测试访问
用户需按以下步骤验证:
- 通过SSO门户登录,切换到桶策略中授权的SSO角色。
- 直接在S3控制台访问目标桶,或用AWS CLI执行测试命令:
aws s3 ls s3://example-data --profile <你的SSO配置文件名称> aws s3 cp s3://example-data/test-file.txt ./ --profile <你的SSO配置文件名称>
额外注意事项
- 如果用户是从常用账号(非中央SSO账号)的角色访问目标S3桶,需将桶策略的Principal改为常用账号的角色ARN,同时确保常用账号的角色权限中允许访问该跨账号S3桶。
- 检查目标S3桶的访问控制列表(ACL),确保无冲突的拒绝规则(ACL优先级低于桶策略,但显式拒绝会阻断访问)。
内容的提问来源于stack exchange,提问作者mags355
相关产品推荐
相关产品推荐

