cal*_*eld 3 amazon-s3 amazon-web-services
我有一个名为 的存储桶prod,其目录树如下所示:
prod
logs
uploads
user
doc
1
a.jpg
b.jpg
2
a.jpg
b.jpg
thing
photos
1
a.jpg
b.jpg
2
a.jpg
b.jpg
Run Code Online (Sandbox Code Playgroud)
里面的一切都thing/photos应该是公开的。GET请求应该允许所有人,但PUT并POST当用户通过我的应用程序上传文件的要求应该只被允许。
在user/doc另一方面目录,我想是完全私有的。POST通过我的应用上传文件的用户应该允许请求,但唯一应该能够访问GET这些资源的人是管理员。该数据在存储之前已加密,但我想确保公众或我的应用程序的其他用户无法访问该文件夹。
阅读深入了解 AWS S3 访问控制 – 完全控制您的资产和ACL - 我可以授予哪些权限?我仍然对如何完成我想要的事情感到困惑。重叠的访问控制让我感到困惑,我找不到以面向操作的方法解释任何这些的教程。鉴于 S3 存储桶策略设置不当导致的数据泄漏数量,似乎我不是唯一误解这一点的人。
你的政策是如何制定的?你有比我找到的更好的教程的链接吗?谢谢!
Joh*_*ein 10
默认情况下,Amazon S3 存储桶是私有的。因此,仅当您专门配置访问权限时,访问权限才可用。
thing/photos应该是公开的如果您希望将整个存储桶或部分存储桶设为公开,请使用存储桶策略。
从@avlazarov 的回答中复制:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"Example",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/things/photos/*"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这意味着:
GetObject, 意思是读取一个对象examplebucket,在things/photos/路径中请注意,他们将无法列出路径的内容,因此他们需要知道他们正在检索的对象的确切名称。
在添加存储桶策略之前,您需要停用阻止添加存储桶策略的Amazon S3 阻止公共访问中的设置。
一般规则:授予公共访问权限时,使用存储桶策略。
user/doc目录应该是完全私有的默认情况下,Amazon S3 存储桶是私有的。因此,什么都不用做。
但是,您随后提到移动应用程序应该具有访问权限。此类权限应通过身份和访问管理 (IAM) 设置授予。
由于您提到了“用户”,因此您的应用程序可能正在使用某种身份验证方法,大概是后端服务。因此,与其将 IAM 凭证直接放在应用程序中,不如说流程应该是:
最好只授予应用程序(以及用户)使用服务所需的最小权限。这避免了可能因提供过多访问而导致的有意或无意的问题。
一般规则:仅向移动应用程序提供所需的最低权限。假设会发生事故或故意黑客攻击。
在向您自己的员工授予访问权限时,请使用附加到IAM 用户或 IAM 组的策略。
我会推荐:
这样,所有管理员(包括未来的管理员)都将获得适当的访问权限,并且您可以跟踪每个 IAM 用户独立执行的操作。永远不要让多个员工使用相同的登录名。还建议将多因素身份验证设备与每个管理员帐户相关联,因为如果访问受到威胁,权限可能会很危险。MFA 可以像在手机上运行身份验证应用程序一样简单,该应用程序提供一个每 30 秒更改一次的号码。
事实上,一些公司只给管理员“普通”账户(没有超能力)。然后,如果他们需要做一些非凡的事情,他们会让管理员暂时切换到提供“管理员”功能的 IAM 角色。这最大限度地减少了意外执行可能对系统产生影响的事情的机会。
一般规则:使用 IAM 向组织内的员工授予访问权限。
如果您想了解有关 IAM 的更多信息,我强烈推荐来自年度 AWS re:Invent 会议的 IAM 视频。有关会议的完整列表,请参阅:AWS re:Invent 2019 会议和播客源
| 归档时间: |
|
| 查看次数: |
994 次 |
| 最近记录: |