Amazon Redshift 如何使用 Amazon KMS - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon Redshift 如何使用 Amazon KMS

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

Amazon Redshift 加密

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

Amazon Redshift 使用基于密钥的四层架构来进行加密。此架构包括数据加密密钥、数据库密钥、群集密钥和根密钥。您可以使用 Amazon KMS key 作为根密钥。

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

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

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

您可以通过选中 Amazon Redshift 控制台中相应的框请求加密。您可以从加密框下方显示的列表中选择,指定一个客户托管密钥。如果您不指定客户托管的密钥,则 Amazon Redshift 将 Amazon 托管式密钥 用于您账户下的 Amazon Redshift。

重要

Amazon Redshift 仅支持对称 KMS 密钥。您不能在 Amazon Redshift 加密工作流中使用非对称 KMS 密钥。要获取确定 KMS 密钥是对称还是非对称的帮助,请参阅 识别对称 KMS 密钥和非对称 KMS 密钥

加密上下文

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

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

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