amazon-web-services - 在 S3 存储桶中,“public”和“Objects can be public”有什么区别?
问题描述
我们有几个桶,一些是“公共的”,另一些是“对象可以是公共的”。而且我不明白有什么区别?
我不希望任何存储桶都可以公开列出。在所有存储桶上,我想控制人们可以访问或看到的内容。一些密钥是公开的(你仍然需要知道访问它的 URL,不允许列出)和一些私有密钥,所以你甚至不能告诉它在那里。
我应该使用什么配置?
我有时会收到来自 AWS 的警告通知,说存储桶是公开的,我应该检查我是否真的想要这个。有什么风险?我可以改变
在“权限”下的两个配置中,它都说
- 阻止所有公共访问 - 关闭
- 阻止对通过新访问控制列表 (ACL) 授予的存储桶和对象的公共访问 -- 关闭
- 阻止对通过任何访问控制列表 (ACL) 授予的存储桶和对象的公共访问 -- 关闭
- 阻止对通过新的公共存储桶或访问点策略授予的存储桶和对象的公共访问 -- 关闭
- 通过任何公共存储桶或访问点策略阻止对存储桶和对象的公共和跨账户访问 -- 关闭
所以我什至看不出有什么区别?
解决方案
要使存储桶成为“公共”,它必须具有向所有人授予某些权限的存储桶策略 ( *
)。
对于“对象可以是公共的”,存储桶必须允许 ACL 允许将某些对象设置为公共(但不是整个存储桶)。这需要“关闭”阻止公共访问的“ACL”选项。
通过将 Block Public Access 设置为“on”,将无法通过存储桶策略或 ACL 访问任何内容。只能通过 IAM 权限进行访问。
推荐阅读
- tsql - 关于:尝试插入数据时设置 IDENTITY_INSERT ON 的问题
- javascript - jQuery window.open() 不允许在 Chrome 中加载本地资源
- php - 在 Laravel 中使用很多包是不是很糟糕?
- node.js - npx react-native init AwesomeProject 错误 enolocal
- angular-material - 角度材料步进标题水平线和底部边框css
- javascript - setState 方法中的回调函数什么时候执行?
- mono - 如何使用 Visual Studio Mac 成功运行/调试 NUnit + SpecFlow 测试
- java - 使用 firebase 时任务尚未完成
- java - XLConnect 错误:NoClassDefFoundError (Java):org/apache/poi/openxml4j/exceptions/InvalidFormatException
- vb.net - VB.net Aforge 视频捕获 - 内存被消耗并冻结相机