通过IAM用户存储桶策略无法在副账号查看主账号S3存储桶
问题原因及解决办法
核心原因:缺少控制台列出桶所需的权限
S3控制台查看跨账号桶需要两个关键权限,当前配置均缺失:
副账号IAM用户缺少
s3:ListAllMyBuckets权限
控制台加载账号所有桶列表时,会调用s3:ListAllMyBuckets接口,这是账号级全局操作,必须在副账号给maddy的IAM策略中明确授权。当前内联策略仅包含对象操作权限,无此列表权限,导致控制台无法加载出该跨账号桶。存储桶策略缺少
s3:ListBucket权限(可选但必要)
即便能看到桶,要查看桶内对象列表,还需在主账号的存储桶策略中添加s3:ListBucket操作权限,否则进入桶后会显示空内容。
修正方案
1. 更新副账号maddy的内联策略
添加s3:ListAllMyBuckets权限,同时保留原有对象操作权限:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToS3Bucket", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl", "s3:ListAllMyBuckets" ], "Resource": [ "arn:aws:s3:::input-read", "arn:aws:s3:::input-read/*", "*" ] } ] }
注:
s3:ListAllMyBuckets需将Resource设为*,因这是账号级全局操作,无法限定到单个桶。
2. 更新主账号的存储桶策略(可选但建议)
添加s3:ListBucket权限,确保能查看桶内对象:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<secondary-account>:user/maddy" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::input-read", "arn:aws:s3:::input-read/*" ] } ] }
验证方法
修改策略后,重新以maddy身份登录S3控制台:
- 可看到
input-read桶出现在列表中 - 点击桶后能正常查看、上传、下载对象
内容的提问来源于stack exchange,提问作者whatsinthename
相关产品推荐
相关产品推荐

