我使用 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)