【问题标题】:AWS s3 "public access"AWS s3“公共访问”
【发布时间】:2017-10-25 23:35:35
【问题描述】:

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

这是否意味着 每个人 都可以访问这个存储桶文件(给定 url)?

如何向通过我的用户池连接的每个人授予访问权限,无论是否是文件的所有者?

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    是的,如果您公开访问控制,那么全世界都应该可以访问它。您可以做的是设置存储桶策略来限制对您的存储桶的访问。在存储桶策略中,您可以指定要连接的用户。请在下面找到示例存储桶策略,

    {
    	"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/*"
    		}
    	]
    }

    在“主体”部分提及您要连接的用户(逗号分隔)。例如,如果您必须向 ARN 添加主体,那么,

     "Principal" :  {"AWS": ["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666‌​:root"]} 
    

    如果只有一个,

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

    桶策略详情请看here

    如果您想要对象级别权限而不是存储桶级别权限,请查看访问控制列表。更多详情请查看here

    【讨论】:

    • 谢谢!如果我想限制对用户池的访问,我想我需要使用“Pool ARN”,但如果我想将其更多地限制为我的一组用户池怎么办? (他们没有任何角色)
    • 该组将有一个 ARN,因此您可以在那里指定组 ARN,它应该可以工作。示例组 ARN 类似于 'arn:aws:iam::123456789012:group/Developers'
    • 我已将角色 ARN 添加到我的组(列出、读取、写入 s3)。但是,当我尝试添加上面的代码并用 groupe 角色 ARN 和 BUCKETNAME 用存储桶名称替换“*”但从 Principal 收到“无效存储桶策略语法”时......?
    • "Principal": {"AWS": ["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666:root"]} 你能这样试试吗?在这里,我们有不止一个 ARN
    • 我的错,我阅读了更多文档,发现我错过了'{“AWS”:“link_to_role_ARN”}(我只是把link_to_role_ARN)再次感谢:)
    猜你喜欢
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2016-04-22
    • 2019-01-19
    相关资源
    最近更新 更多