有一个存储桶,一些用户可能会将他们的数据写入其中以用于备份目的。
他们习惯s3cmd
将put
新文件放入他们的存储桶中。
我想对这些存储桶实施非破坏性策略 - 这意味着用户不可能破坏数据,而只能添加数据。
我如何创建一个存储桶策略,仅允许特定用户放置尚不存在的文件,并且不允许他对该存储桶执行任何其他操作。
答案1
考虑启用版本控制对于存储桶。这样,用户可以更改和删除他们想要的内容,但实际上不会删除任何数据,除非通过特定调用删除旧版本。此外,还可以启用 MFA 删除,这意味着您需要一个多因素身份验证令牌才能永久删除任何内容。
答案2
您可以使用 amazons 策略生成器轻松生成新策略。
http://awspolicygen.s3.amazonaws.com/policygen.html
您可以轻松地仅向某人授予 ListBuckets 和 PutObject 的权限。问题是 PutObject 也可以更新对象。我不确定您是否可以使用策略将两者分开。只要您同意用户能够更新和添加,那么策略就非常简单。
{
"Id": "Policy1334428511844",
"Statement": [
{
"Sid": "Stmt1334428508621",
"Action": [
"s3:GetObject",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::<bucket>\<folder>",
"Principal": {
"AWS": [
"<account-id>"
]
}
}
] }