无法从AWS外部获取S3存储桶读取权限问题求助
问题:AWS S3存储桶可外部创建/上传,但无法列出内容
我在AWS创建了一个公开S3存储桶,能通过Access Key和Secret Key从AWS外部访问。使用MinIO命令行工具可以正常创建存储桶、上传文件,这些操作的结果在AWS控制台中都能看到,但无法从AWS外部列出存储桶及文件内容。尝试过多种存储桶策略来启用列表权限,均未生效。
当前应用的存储桶策略如下:
{ "Version": "2012-10-17", "Id": "Policy1693297634765", "Statement": [ { "Sid": "Stmt1693297627638", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::bucket-name/*" } ] }
执行MinIO命令后,mc ls无输出:
(base) user@host:/mnt/c/folder/Data$ mc mb aws/test-29-8-23 Bucket created successfully `aws/test-29-8-23`. (base) user@host:/mnt/c/folder/Data$ mc cp 230601_0000.csv aws/test-29-8-23 .../230601_0000.csv: 321 B / 321 B ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 922 B/s 0s (base) user@host:/mnt/c/folder/Data$ mc ls aws/test-29-8-23
解决方案
问题根源在于存储桶策略的Resource配置:当前策略仅授权了桶内对象(arn:aws:s3:::bucket-name/*)的操作权限,但列出桶内容(对应s3:ListBucket动作)需要的是针对桶本身(arn:aws:s3:::bucket-name)的权限,而非桶内对象。
修改后的存储桶策略需要同时包含桶和桶内对象的资源:
{ "Version": "2012-10-17", "Id": "Policy1693297634765", "Statement": [ { "Sid": "Stmt1693297627638", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] } ] }
额外注意事项
- 为了安全性,建议不要使用
s3:*全权限,而是根据实际需求缩小动作范围,比如仅授权s3:ListBucket、s3:GetObject、s3:PutObject等必要操作 - 若使用的是IAM用户密钥而非AWS根密钥,需确认该IAM用户本身也配置了对应的列表权限——存储桶策略与IAM权限是叠加生效的
内容的提问来源于stack exchange,提问作者user207453
相关产品推荐
相关产品推荐

