AWS S3“公共访问”

3

当我浏览我的存储桶权限 --> 访问控制 --> 公共访问 时,我可以勾选“所有人”的选项。

这是否意味着每个人都可以访问这个存储桶文件(只要知道URL)?

如何让使用我的用户池连接的所有人无论是文件所有者还是非所有者都有访问权限?

1个回答

3

如果将访问控制公开,则整个世界都可以访问。您可以设置存储桶策略来限制对存储桶的访问。在存储桶策略中,您可以指定要连接的用户。以下是一个示例存储桶策略:

{
 "Version": "2012-10-17",
 "Id": "Policy12345",
 "Statement": [
  {
   "Sid": "Stmt12345",
   "Effect": "Allow",
   "Principal": "*", //* means public . Specify your users here
   "Action": "s3:GetObject",
   "Resource": "arn:aws:s3:::BUCKETNAME/*"
  }
 ]
}

在“Principal”部分提到您想要连接的用户(逗号分隔)。例如,如果您有两个ARN需要添加到主体中,则:
 "Principal" :  {"AWS": ["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666‌​:root"]} 

如果只有一个,则:

"Principal" : {"AWS" : "arn:aws:iam::111122223333:root"}

请查看有关Bucket策略的详细信息此处
如果您想要对象级别的权限而不是Bucket级别的权限,则可以使用访问控制列表。 请在此处找到更多详细信息。

如果我想限制对用户池的访问,我猜我需要使用“池ARN”,但是如果我想将其限制在我的用户池的一组人员中,该怎么办?(他们没有任何角色) - Niavart
1
{btsdaf} - Vijayanath Viswanathan
我已将角色ARN添加到我的组中(对s3进行列表、读取、写入)。但是,当我尝试添加上述代码并将'*'替换为组角色ARN和BUCKETNAME替换为存储桶名称时,出现了“无效的存储桶策略语法”错误,来自于Principal...? - Niavart
"Principal": {"AWS": ["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666:root"]},您可以尝试这样吗?这里有多个ARN。 - Vijayanath Viswanathan
我的错,我阅读了更多的文档,并发现我漏掉了'{ "AWS": "link_to_role_ARN"}'(我只是放了link_to_role_ARN)。 再次感谢 :) - Niavart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接