AWS Key Management Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon Redshift 如何使用 AWS KMS

本主题讨论 Amazon Redshift 如何使用 AWS KMS 加密数据。

Amazon Redshift 加密

Amazon Redshift 数据仓库是一个由称作节点的各种计算资源构成的集合,这些节点已整理到名为群集的组中。每个群集运行一个 Amazon Redshift 引擎并包含一个或多个数据库。

Amazon Redshift 使用基于密钥的四层架构来进行加密。此架构包括数据加密密钥、数据库密钥、群集密钥和主密钥。

数据加密密钥对群集中的数据块进行加密。每个数据块分配有一个随机生成的 AES-256 密钥。这些密钥使用群集的数据库密钥进行加密。

数据库密钥对群集中的数据加密密钥进行加密。数据库密钥是随机生成的 AES-256 密钥。它存储在独立于 Amazon Redshift 群集的网络中的磁盘上,并跨安全通道传递到群集中。

群集密钥对 Amazon Redshift 群集的数据库密钥进行加密。您可以使用 AWS KMS、AWS CloudHSM 或外部硬件安全模块 (HSM) 来管理群集密钥。有关更多详细信息,请参阅 Amazon Redshift 数据库加密文档。

如果主密钥位于 AWS KMS 中,它会对群集密钥进行加密。您可以通过选中 Amazon Redshift 控制台中相应的框请求加密。您可以从加密框下方显示的列表中选择,指定一个客户托管的主密钥来使用。如果您不指定客户托管的 CMK,将使用您的账户下适用于 Amazon Redshift 的 AWS 托管密钥。

加密上下文

与 AWS KMS 集成的每项服务在请求数据密钥、加密和解密时会指定一个加密上下文。加密上下文是 AWS KMS 检查数据完整性时使用的额外的身份验证数据 (AAD)。也就是说,在为加密操作指定加密上下文时,该服务还要为解密操作指定同一加密上下文,否则解密会失败。Amazon Redshift 使用加密上下文的群集 ID 和创建时间。在 CloudTrail 日志文件的 requestParameters 字段中,加密上下文与以下示例类似。

"encryptionContext": { "aws:redshift:arn": "arn:aws:redshift:region:account_ID:cluster:cluster_name", "aws:redshift:createtime": "20150206T1832Z" },

您可以使用客户主密钥 (CMK) 在 CloudTrail 日志中搜索集群名称,以了解具体执行了哪些操作。这些操作包括集群加密、集群解密以及生成数据密钥。