桶策略,以防止删除桶

时间:2019-08-26 03:47:56

标签: amazon-web-services amazon-s3

我正在寻找一个存储桶策略,该策略仅允许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"
    }
]
}

2 个答案:

答案 0 :(得分:0)

Deny总是胜过Allow。因此,根据这项政策,没人将被允许删除存储桶。 (但是,我认为根用户可以这样做,因为它位于IAM之外。)

由于root始终可以执行任何操作,因此无需分配权限。

此外,没有“存储桶创建者”的概念。它属于帐户,而不是用户。

因此:

  • 删除Allow部分(不执行任何操作)
  • 测试该策略是否阻止非root用户删除它
  • 测试该策略是否仍允许root用户删除它

答案 1 :(得分:0)

S3中有2种不同类型的权限。

  1. 基于资源的策略
  2. 用户政策

因此存储桶策略和访问控制列表(ACL)是“基于资源”的一部分,并附加到存储桶中。

如果所有用户都在同一个AWS帐户中。您可以考虑附加到用户或角色的用户策略。

如果您要处理多个AWS帐户,则最好使用Bucket策略或ACL。

唯一不同的是,存储桶策略允许您授予或拒绝访问权限,并在存储桶中应用所有对象。

ACL被授予基本的读取或写入权限,并且无法添加条件检查。