1

我一直在努力争取一天的大部分时间。作为管理员,我试图要求用户在创建 S3 存储桶时检查“对象存储在 S3 中时自动加密”按钮 (AES256)。我已经尝试了所有能想到的。到目前为止,我只得到了 2 个单独的结果。

作为测试用户,我要么被允许创建存储桶(有或没有检查加密),要么我被拒绝(有或没有检查加密)。

最后的努力导致将以下策略应用于测试用户,在这种情况下,无论我是否选中加密框,我都被拒绝创建存储桶

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": [
                "s3:CreateBucket"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-content-sha256": "AES256"
                },
                "Null": {
                    "s3:x-amz-content-sha256": true
                }
            }
     ]

}

我已将上述策略与 S3AllowFullAccess 以及其他允许访问的自定义策略相结合,但我根本无法让它发挥作用。

任何帮助表示赞赏

4

1 回答 1

2

CreateBucket()命令不接受存储桶加密设置。

例如,从 AWS CLI 创建存储桶时,选项包括:

aws s3api  create-bucket
[--acl <value>]
--bucket <value>
[--create-bucket-configuration <value>]
[--grant-full-control <value>]
[--grant-read <value>]
[--grant-read-acp <value>]
[--grant-write <value>]
[--grant-write-acp <value>]
[--object-lock-enabled-for-bucket | --no-object-lock-enabled-for-bucket]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

无法指定存储桶加密。

而是使用以下put-bucket-encryption命令指定存储桶加密:

aws s3api put-bucket-encryption
--bucket <value>
[--content-md5 <value>]
--server-side-encryption-configuration <value>
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

这意味着不可能创建CreateBucket()强制服务器端加密值的策略。需要在桶创建后设置。

您可以创建一个在 上激活CreateBucket()并触发 AWS Lambda 函数的 Amazon CloudWatch 事件规则。然后,您可以编写函数来调用PutBucketEncryption()存储桶。

更新:您可以使用要求对对象本身进行加密的策略,而不是在存储桶级别设置加密。

这是来自 AWS Organizations 的示例服务控制策略,它要求每个人只上传加密对象:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyIncorrectEncryptionHeader",
      "Effect": "Deny",
      "Action": "s3:PutObject",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    },
    {
      "Sid": "DenyUnEncryptedObjectUploads",
      "Effect": "Deny",
      "Action": "s3:PutObject",
      "Resource": "*",
      "Condition": {
        "Null": {
          "s3:x-amz-server-side-encryption": true
        }
      }
    }
  ]
}
于 2019-07-24T05:46:59.570 回答