允许用户访问 S3 存储桶中的一个目录
Posted
技术标签:
【中文标题】允许用户访问 S3 存储桶中的一个目录【英文标题】:Allow user access to one directory in a S3 Bucket 【发布时间】:2017-07-05 20:00:51 【问题描述】:我搜索了现有的问题,但找不到答案。
我想限制某个用户访问一个目录 S3 存储桶。例如,我有目录 my-bucket/test/123。我在这个目录中放了一些图像。其他用户不应访问此目录。 然后我创建了 Bucket 策略:
"Version": "2012-10-17",
"Statement": [
"Sid": "AddPerm",
"Effect": "Allow",
"Principal":
"AWS": "arn:aws:iam::123456789000:user/some-user"
,
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/test/123/*"
]
但是当我尝试在浏览器中打开文件时,我收到“拒绝访问”消息。
我尝试使用 Deny 效果和 NotPrincipal。在这种情况下,这些文件可供其他用户使用。 请帮忙!
【问题讨论】:
“我试图在浏览器中打开文件”是什么意思?您是否使用了文件的完整 URL,例如http://s3.amazonaws.com/my-bucket/test/123/foo.txt
?你是如何向 AWS 验证你是 some-user
的?您是否尝试通过 AWS Command-Line Interface (CLI) aws s3 cp
命令访问该对象?
是的,我使用完整的 URL。我确实使用 AWS 控制台的用户名和密码向 AWS 进行了身份验证。我也使用 php 代码进行了身份验证。
能否请您编辑问题并提供有关您在收到拒绝访问消息时如何连接到 Amazon S3 的更多详细信息。我们需要看看您是如何进行身份验证的。请提供您正在使用的代码,或说明您是如何连接和验证的。
【参考方案1】:
您还需要根前缀(文件夹)的存储桶列表权限,如本 AWS 文档 Writing IAM Policies: Grant Access to User-Specific Folders in an Amazon S3 Bucket 中所述:
虽然大卫应该只能访问他的主文件夹,但他需要 附加权限,以便他可以导航到他在 亚马逊 S3 控制台。 David 需要权限才能列出根目录下的对象 my-company 存储桶的级别和 home/ 文件夹中。
【讨论】:
以上是关于允许用户访问 S3 存储桶中的一个目录的主要内容,如果未能解决你的问题,请参考以下文章
允许管理员访问 s3 存储桶中的子文件夹。保持所有其他文件夹公开
通过 terraform 创建 IAM 用户并在 S3 存储桶中上传密钥和访问密钥