AWS S3存储桶加密-存储桶属性设置与存储桶策略设置

时间:2018-10-22 19:42:24

标签: amazon-s3

我创建了一个AWS S3存储桶,并在属性中启用了“默认加密”。那我还需要创建类似于下面的存储桶策略吗?

请注意,我只是想以一种通用的方式对s3进行加密,没有特别的要求。

  "Statement": [
    {
        "Sid": "DenyIncorrectEncryptionHeader",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:PutObject",
        "Resource": "arn:aws:s3:::s3_bucket_name/*",
        "Condition": {
            "StringNotEquals": {
                "s3:x-amz-server-side-encryption": "AES256"
            }
        }
    },
    {
        "Sid": "DenyUnEncryptedObjectUploads",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:PutObject",
        "Resource": "arn:aws:s3:::s3_bucket_name/*",
        "Condition": {
            "Null": {
                "s3:x-amz-server-side-encryption": "true"
            }
        }
    }
  ]

1 个答案:

答案 0 :(得分:2)

为了对此进行测试,我创建了一个存储桶并激活了默认加密

然后我尝试通过管理控制台上传文件时,它说:

  

如果将此存储桶设置为默认加密,则S3将按照存储桶设置对对象进行加密。

Default encryption

我上传的文件 did 已加密。

然后我通过AWS CLI上传文件

aws s3 cp foo s3://my-bucket/

已对上传的文件 进行加密。

但是,请注意,该设置称为默认加密。这意味着,除非另有说明,否则对象将被加密。但是,它不强制加密,因此,如果用户专门选择了不同类型的加密(例如MKS而不是AES256),则可以这样做。 (我看不到他们可以具体要求“不加密”的方式。)

这是您的策略(上)的来源。它们可以强制执行特定的加密形式。如果不满足这些要求,则PutObject被拒绝。

然后,我从How to Prevent Uploads of Unencrypted Objects to Amazon S3 | AWS Security Blog中提取了加密策略(看起来与您使用的加密策略匹配),并将其放在 Bucket Policy (桶策略)中。

然后我尝试从管理控制台上载,但失败了!!只有当我特别选择“ Amazon S3主密钥”作为加密选项时,此方法才有效。因此,“默认加密”选项与策略不兼容。

我还尝试使用“ AWS KMS主密钥”作为加密选项进行上传,并再次失败,因为这与策略不符(该策略专门检查AES256,而不是KMS加密)。 / p>

底线:使用默认加密将导致对象以某种方式进行加密。这些策略可以强制执行特定类型的加密。