如何配置权限实现仅允许用户向单个S3存储桶上传文件
问题原因
- 资源匹配错误:对象级操作(比如
s3:PutObject上传文件)的作用资源需要指定到桶内对象路径arn:aws:s3:::my-bucket/*,你最初的策略只填写了存储桶本身的ARN,导致上传类权限不生效。 - 控制台访问必备权限缺失:如果通过AWS网页控制台操作,必须授予
s3:ListAllMyBuckets权限才能正常加载S3控制台的桶列表界面,否则登录后看不到任何存储桶。 - 冗余权限过多:你最初通过可视化编辑器生成的策略包含大量不需要的高危权限,比如删除桶配置、删除对象版本、修改加密规则等,完全不符合你最小权限的需求。
- 你后续补充的标记为正确的策略仍存在权限过宽问题:包含了下载文件
s3:GetObject、删除文件s3:DeleteObject等你明确禁止的操作,需要进一步精简。
符合需求的最小权限策略
以下策略仅允许用户:1. 登录S3控制台看到存储桶列表(仅能访问你指定的my-bucket的内容,无法操作其他桶);2. 查看my-bucket内的文件列表;3. 上传文件到my-bucket,不允许下载、删除、修改配置等任何其他操作:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListAllBucketsForConsole", "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Sid": "AllowListSpecificBucketContent", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::my-bucket" }, { "Sid": "AllowOnlyUploadFiles", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::my-bucket/*" } ] }
额外注意事项
如果你的存储桶开启了强制服务器端加密,需要确保上传的用户在上传时指定正确的加密配置,或者存储桶配置了默认加密,否则会触发权限拒绝报错。
内容的提问来源于stack exchange,提问作者Davtho1983
相关产品推荐
相关产品推荐

