跳至内容

我该使用 AWS KMS 管理型密钥还是客户管理型 AWS KMS 密钥来加密 Amazon S3 中的对象?

2 分钟阅读
0

我使用 AWS Key Management Service (AWS KMS)。我想对存储在 Amazon Simple Storage Service (Amazon S3) 上的对象使用具有 AWS KMS 的服务器端加密 (SSE-KMS)。我需要决定是使用客户管理的 AWS KMS 密钥还是 aws/s3 AWS KMS 管理的密钥。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅排查 AWS CLI 错误。此外,请确保您使用的是最新版本的 AWS CLI

根据所需的控制程度选择密钥。AWS KMS 为您管理默认的 aws/s3 AWS KMS 密钥,但您可以完全控制客户管理型密钥。

何时使用默认的 aws/s3 KMS 密钥

在以下场景中使用默认的 aws/s3 KMS 密钥:

  • 对于与 AWS KMS 密钥位于同一 AWS 账户中的 S3 对象,您可以使用 AWS Identity and Access Management (IAM) 主体。
  • 您不想管理 AWS KMS 密钥的策略。

要使用 aws/s3 AWS KMS 密钥加密对象,请在上传期间将加密方法定义为 SSE-KMS,但不要指定密钥。运行以下 cp AWS CLI 命令:

aws s3 cp ./mytextfile.txt s3://DOC-EXAMPLE-BUCKET/ --sse aws:kms

**注意:**请将 DOC-EXAMPLE-BUCKET 替换为您的 S3 存储桶名称。

何时使用客户管理型密钥

在以下场景中使用客户管理型密钥:

  • 您想创建、轮换、停用密钥或为密钥定义访问控制策略。
  • 您想授予对 S3 对象的跨账户访问权限。
    **注意:**您可以为客户管理型密钥配置策略,以允许其他账户进行访问。

要使用 customer managed key(客户管理型密钥)加密对象,请在上传期间将加密方法定义为 SSE-KMS。此外,指定您的客户管理型密钥作为密钥 (--sse-kms-key-id)。运行以下命令 cp 命令:

aws s3 cp ./mytextfile.txt s3://DOC-EXAMPLE-BUCKET/ --sse aws:kms --sse-kms-key-id testkey

**注意:**请将 mytextfile.txt 替换为您的文件名,将 DOC-EXAMPLE-BUCKET 替换为您的 Amazon S3 存储桶名称,将 testkey 替换为您的密钥 ID。

要控制对客户管理型密钥的访问权限,请修改 key policy(密钥策略)。有关详细信息,请参阅 Creating a key policy(创建密钥策略)。

何时使用 SSE-S3 加密

您可以使用 Amazon S3 管理型密钥 (SSE-S3) 加密来代替 AWS KMS 加密。AWS KMS 加密提供强大的安全控制措施,但您必须在以下场景中使用默认的 SSE-S3 加密:

相关信息

使用服务器端加密保护数据

指定具有 AWS KMS 密钥的服务器端加密 (SSE-KMS)

AWS 官方已更新 1 年前