Json 如果对象不使用 aws s3 加密或 aws:kms 加密,则拒绝将对象上传到 aws s3 的策略脚本

Json policy script for denying object upload to aws s3 if the object doesn't uses aws s3 encryption or aws:kms encryption

您好,我想为我的存储桶创建一个 s3 策略,该策略拒绝用户上传不使用 aws s3 加密或 aws kms 加密(它必须使用其中一种加密)的对象。这是策略生成器 https://awspolicygen.s3.amazonaws.com/policygen.html

的 link

我已生成此政策。

{
  "Id": "Policy1631518070654",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1631518063107",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::webserver7/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        },
        "StringNotLike": {
          "s3:x-amz-server-side-encryption-aws-kms-key-id": "aws:kms"
        }
      },
      "Principal": "*"
    }
  ]
}

我们可以按如下方式解释政策....“如果对象不使用 aws s3 加密 AND aws:kms 加密则拒绝上传。

但是我们不能同时使用两种加密方式。所以我想要政策如下。

"如果对象不使用 aws s3 加密 aws:kms 加密则拒绝对象上传。

如果你想要OR,你需要有两个语句:

{
  "Id": "Policy1631518070654",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1631518063107",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::webserver7/*",
      "Condition": {
        "StringNotLike": {
          "s3:x-amz-server-side-encryption-aws-kms-key-id": "aws:kms"
        }
      },
      "Principal": "*"
    },
    {
      "Sid": "Stmt16315180631072",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::webserver7/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      },
      "Principal": "*"
    }
  ]
}

目前无法添加此类政策。尝试仅对单一加密使用策略。