如何为用户添加s3:ListBucket权限?选S3桶策略还是IAM内联策略?
解决S3桶ListBucket权限缺失的问题
嘿,这个场景我碰到过好多次,给你拆解清楚怎么处理,以及该选哪种方式:
结论:两种方式都可行,看你的管理需求选
用户x需要的s3:ListBucket权限,既可以加到用户的IAM内联策略,也可以加到目标S3桶的桶策略里,下面分别说操作步骤和适用场景:
方式一:添加到用户x的IAM内联策略
这种方式把权限直接绑定给用户,适合单独给这个用户授权的场景,管理起来更集中:
- 打开IAM控制台,找到用户x的详情页
- 切换到「权限」标签,点击「添加内联策略」
- 在可视化编辑器里,选择「S3」服务,找到并勾选
s3:ListBucket权限 - 在「资源」部分,指定目标桶的ARN(格式是
arn:aws:s3:::你的目标桶名称) - 预览策略没问题后,给策略起个名字(比如
AllowListTargetS3Bucket),保存即可
方式二:添加到目标S3桶的桶策略
这种方式把权限配置在桶上,适合多个用户/角色需要访问该桶,或者跨账号授权的场景:
- 打开S3控制台,找到目标桶的详情页
- 切换到「权限」标签,点击「桶策略」进入编辑器
- 在现有的JSON策略里,新增一条允许用户x执行
s3:ListBucket的语句,示例如下:
{ "Version": "2012-10-17", "Statement": [ // 保留你原来的GetObject权限语句 { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::你的AWS账号ID:user/x" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::你的目标桶名称" } ] }
- 验证桶策略语法无误后,保存即可
关键提醒
用户现有的s3:ListAllMyBuckets权限只是让他能看到自己账号下所有桶的列表,但要查看某个桶内的具体内容,必须要有该桶的s3:ListBucket权限,这两个权限是互补的,不能互相替代哦。
内容的提问来源于stack exchange,提问作者mugi
相关产品推荐
相关产品推荐

