我希望对我在 Amazon Simple Storage Service (Amazon S3) 上存储的对象进行 AWS Key Management Service 服务器端加密 (SSE-KMS)。我应该使用客户管理的 AWS KMS 密钥吗? 还是应该使用 AWS KMS 管理的密钥(称作 aws/s3)? 这两者之间有何区别?
解决方法
AWS Key Management Service (AWS KMS) 管理原定设置的 aws/s3 AWS KMS 密钥,但您可以完全控制客户管理的密钥。
使用原定设置的 aws/s3 KMS 密钥
**注意:**在 Amazon S3 控制台中 KMS 密钥名称为 aws/s3。但是,如果您使用 AWS 命令行界面(AWS CLI),请不要指定该名称或 ID。
如果有下列任何情况,请考虑使用原定设置的 aws/s3 KMS 密钥:
- 您上传或访问 S3 对象时将使用的 AWS Identity and Access Management (IAM) 主体与该 AWS KMS 密钥来自同一 AWS 账户。
- 您不希望管理 KMS 密钥的策略。
如要使用原定设置的 aws/s3 KMS 密钥进行对象加密,请在上载期间将加密方法定义为 SSE-KMS,但不要指定密钥:
aws s3 cp ./mytextfile.txt s3://DOC-EXAMPLE-BUCKET/ --sse aws:kms
**注意:**如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
使用客户管理的密钥
如果有下列任何情况,请考虑使用客户管理的密钥:
- 您希望创建、转动、禁用密钥或定义其访问控制。
- 您希望授予对 S3 对象的跨账户访问权限。您可以配置客户管理的密钥的策略以允许来自其他账户的访问。
如要使用客户管理的密钥进行对象加密,请在上载期间将加密方法选择为 SSE-KMS。然后将密钥指定为您的客户管理的密钥 (--sse-kms-key-id):
aws s3 cp ./mytextfile.txt s3://DOC-EXAMPLE-BUCKET/ --sse aws:kms --sse-kms-key-id testkey
要控制对客户管理的密钥的访问,请修改密钥策略。有关如何创建密钥策略的更多信息,请参阅新建密钥策略。
相关信息
使用服务器端加密保护数据
Amazon Simple Storage Service (Amazon S3) 如何使用 AWS KMS