看起来像创建一个存储桶策略可能会有效果,但我在制定政策时遇到了麻烦。
答案1
这AWS 策略生成器是探索和制定此类政策的一个非常有用的工具,其用法在相应的介绍性博客文章(直接链接可同时在大多数政策输入表格中找到AWS 管理控制台也)。
我已经根据您的规范创建了一个示例(当然,请确保为您自己的资源生成一个新的示例):
{
"Id": "ExamplePolicyId12345678",
"Statement": [
{
"Sid": "ExampleStmtSid12345678",
"Action": [
"s3:DeleteBucket"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::test-example-com",
"Principal": {
"AWS": [
"*"
]
}
}
]
}
请注意,对于具有此类策略的存储桶,AWS 管理控制台当前既不会隐藏删除命令,也不会报告其执行失败,但是,存储桶仍然保留在原位;)
答案2
所以@Steffen 的回答是正确的,但我想再强调一点。虽然该策略可以防止实际存储桶被删除。但它无法防止存储桶中的项目被删除。这很有道理,但您应该知道的是,如果您在 AWS 控制台中选择删除存储桶,它将删除存储桶中的所有项目,然后无法删除存储桶。因此,存储桶中的所有数据都将消失。这一点一开始并不明显,如果有人不知情,可能会给他们带来严重问题。
TL;DR; Trying to delete the bucket even with delete bucket prohibited will kill all the items in the bucket but keep the bucket around
答案3
另一个选项是启用版本控制和 MFA 删除。这使得清空和删除存储桶变得更加困难。