我正在开发一个Web应用程序,我目前将以下ACL分配给它用于访问其数据的AWS账户:
{
"Statement": [
{
"Sid": "xxxxxxxxx", // don't know if this is supposed to be confidential
"Action": [
"s3:*"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::cdn.crayze.com/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,我想使其更具限制性,以便在我们的AWS凭据遭到破坏时,攻击者无法销毁任何数据.
从文档中看,我似乎只想允许以下操作:s3:GetObject
而且s3:PutObject
,我特别希望帐户只能创建不存在的对象 - 即应拒绝对现有对象的PUT请求.这可能吗?
Ste*_*pel 48
这在亚马逊S3中是不可能的,就像你可能想象的那样; 但是,您可以通过使用版本控制来解决此限制,这是一种在同一个存储桶中保留对象的多个变体的方法,并且已经开发了这样的用例:
您可以启用版本控制以防止错误地删除或覆盖对象,或者归档对象以便您可以检索它们的先前版本.
还有一些相关的常见问题解答,例如:
什么是版本控制?- 版本控制允许您保留,检索和还原存储在Amazon S3存储桶中的每个对象的每个版本.为存储桶启用版本控制后,只要对它们执行PUT,POST,COPY或DELETE操作,Amazon S3就会保留现有对象.默认情况下,GET请求将检索最近编写的版本.可以通过在请求中指定版本来检索旧版本的已覆盖或已删除对象.
我为什么要使用版本控制?- Amazon S3为客户提供高度耐用的存储基础架构.通过在客户意外覆盖或删除对象时提供恢复方法,版本控制可提供额外的保护.这使您可以轻松地从意外的用户操作和应用程序故障中恢复.您还可以使用版本控制进行数据保留和存档.[强调我的]
版本控制如何保护我免于意外删除我的对象?- 当用户对对象执行DELETE操作时,后续的默认请求将不再检索该对象.但是,该对象的所有版本将继续保留在您的Amazon S3存储桶中,并且可以检索或还原.只有Amazon S3存储桶的所有者才能永久删除版本.[强调我的]
如果您对存储桶拥有者的AWS凭据(当然可能与访问用户不同)非常重要,您可以更进一步,请参阅如何确保对我保留的版本的最大保护?:
版本控制的MFA删除功能使用多因素身份验证,可用于提供额外的安全层.[...]如果您在Amazon S3存储桶上启用了带有MFA删除的版本控制,则需要两种形式的身份验证才能永久删除对象的版本:您的AWS账户凭据以及来自身份验证的有效六位数代码和序列号你实际拥有的装置.[...]
如果这是意外覆盖,您试图避免,并且您的业务需求允许短时间不一致的窗口,您可以在Lambda函数中执行回滚:
x-amz-meta-*
在对象中包含原始上传器是有用的.更多信息在这里).您现在可以使用 S3 Object Lock 锁定对象的版本。这是每个存储桶的设置,并允许您放置两种 WORM 锁中的一种。
https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html
正如下面@Kijana Woodard 所提到的,这不会阻止创建新版本的对象。
归档时间: |
|
查看次数: |
18570 次 |
最近记录: |