我正在寻找一个存储桶策略,该策略仅允许root帐户用户和存储桶创建者删除存储桶。像下面这样。请提出建议。如何仅限制存储桶创建者和根用户?
{
"Version": "2012-10-17",
"Id": "PutObjBucketPolicy",
"Statement": [
{
"Sid": "Prevent bucket delete",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::xxxxxxx:root"
},
"Action": "s3:DeleteBucket",
"Resource": "arn:aws:s3:::test-bucket-s3"
},
{
"Sid": "Prevent bucket delete",
"Effect": "Deny",
"Principal": *,
"Action": "s3:DeleteBucket",
"Resource": "arn:aws:s3:::test-bucket-s3"
}
]
}
答案 0 :(得分:0)
Deny
总是胜过Allow
。因此,根据这项政策,没人将被允许删除存储桶。 (但是,我认为根用户可以这样做,因为它位于IAM之外。)
由于root
始终可以执行任何操作,因此无需分配权限。
此外,没有“存储桶创建者”的概念。它属于帐户,而不是用户。
因此:
Allow
部分(不执行任何操作)答案 1 :(得分:0)
S3中有2种不同类型的权限。
因此存储桶策略和访问控制列表(ACL)是“基于资源”的一部分,并附加到存储桶中。
如果所有用户都在同一个AWS帐户中。您可以考虑附加到用户或角色的用户策略。
如果您要处理多个AWS帐户,则最好使用Bucket策略或ACL。
唯一不同的是,存储桶策略允许您授予或拒绝访问权限,并在存储桶中应用所有对象。
ACL被授予基本的读取或写入权限,并且无法添加条件检查。