可以在策略中使用什么条件来强制执行S3存储桶要求服务器端加密?

时间:2019-06-05 15:52:56

标签: amazon-web-services amazon-s3

将使用显式拒绝规则来阻止创建不包含服务器端加密选项(AES或KMS)的S3存储桶。明确拒绝是防止意外创建的首选结果。

我可以通过控制台找到创建中指定的选项,而不是cli create-bucket命令。

我了解到,put-bucket-encryption命令可以作为行政控制的后续命令,并且可以通过Lambda或其他方式实施侦察/纠正控制,但这绕开了主动控制的要求。

预期结果将是应用一个策略,该策略明确拒绝有关没有附加属性SSEAlgorithm或功能等效项不存在或不匹配的存储桶的创建,修改,读取内容等。

2 个答案:

答案 0 :(得分:0)

{
      "Sid": "DenyNoEncryption",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::test_bucket/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    }

这是一种策略的外观,它可以拒绝在没有sse的情况下将对象添加到s3存储桶。

如果您需要停止创建不带sse的s3存储桶。将s3操作更改为"s3:CreateBucket",我相信这应该对您有用。然后将您的资源更改为*

{
      "Sid": "DenyNoEncryption",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:CreateBucket",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    }

答案 1 :(得分:0)

我首先对此发表评论,OP认为这是合理的缓解措施:

拒绝使用AWS控制台为所有用户创建存储桶的访问权限。
编写一项特殊服务,该服务将根据首选设置(在需要时分散到不同的调用中)创建存储桶。 另一个副作用是,您可以简化其他要求,例如检查存储桶名称(例如,company_project_module_xxx)和文档(将创建者/创建时间/注释添加到文档存储桶中)。