如何使用 AWS KMS 加密 Amazon S3 存储桶中的特定文件夹?

上次更新日期:2021 年 1 月 5 日

我想使用 AWS Key Management Service (AWS KMS) 密钥加密 Amazon Simple Storage Service (Amazon S3) 存储桶中的特定文件夹。该如何操作?

解决方法

使用 Amazon S3 控制台对文件夹进行加密

1.    打开 Amazon S3 控制台

2.    导航到您要加密的文件夹。

3.    选择文件夹,然后选择 Actions(操作)。

4.    选择 Edit server-side encryption(编辑服务器端加密)。

5.    为 Enabling Server-side encryption(启用服务器端加密)选择 Enable(启用)。

6.    为您的 AWS Key Management Service 密钥 (SSE-KMS) 选择加密密钥类型

7.    选择要用于文件夹加密的 AWS KMS 密钥。

注意:名为 aws/s3 的密钥是由 AWS KMS 管理的默认密钥。您可以使用默认密钥或自定义密钥对文件夹进行加密。

8.    选择 Save changes(保存更改)。

使用 AWS CLI 加密文件夹

注意:您不能使用 AWS 命令行界面 (AWS CLI) 命令更改现有文件夹的加密。而是可以通过运行命令,在启用 AWS KMS 加密的情况下复制文件夹覆盖自身。

要使用默认的 AWS KMS 密钥 (aws/s3) 加密文件,请运行以下命令:

aws s3 cp s3://awsexamplebucket/abc s3://awsexamplebucket/abc --recursive --sse aws:kms

此命令语法使用 AWS KMS 加密将文件夹复制到自身。

注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本

要使用自定义 AWS KMS 密钥对文件进行加密,请运行以下命令:

aws s3 cp s3://awsexamplebucket/abc s3://awsexamplebucket/abc --recursive --sse aws:kms --sse-kms-key-id a1b2c3d4-e5f6-7890-g1h2-123456789abc

确保为 --sse-kms-key-id 指定您自己的密钥 ID。

要求以后的上传使用 AWS KMS 加密对象

更改加密后,系统仅对文件夹中已包含的对象进行加密。更改加密后添加到文件夹的对象可以在不加密的情况下上传。您可以使用存储桶策略要求以后的上传使用 AWS KMS 加密的对象。

例如:

{
  "Version": "2012-10-17",
  "Id": "PutObjPolicy",
  "Statement": [
    {
      "Sid": "DenyIncorrectEncryptionHeader",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/awsexamplefolder/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "aws:kms"
        }
      }
    },
    {
      "Sid": "DenyUnEncryptedObjectUploads",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/awsexamplefolder/*",
      "Condition": {
        "Null": {
          "s3:x-amz-server-side-encryption": true
        }
      }
    }
  ]
}

此存储桶策略将拒绝访问 docexamplebucket/docexamplefolder/* 上的 s3:PutObject,除非请求包含使用 AWS KMS 进行的服务器端加密。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?