Amazon Redshift 数据库加密 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Redshift 数据库加密

在 Amazon Redshift 中,您可以为集群启用数据库加密,以保护静态数据。为群集启用加密时,会对群集及其快照的数据块和系统元数据进行加密。

您可以在启动集群时启用加密,也可以修改未加密的集群以使用 Amazon Key Management Service (Amazon KMS) 加密。为此,您可以使用Amazon托管密钥或客户管理密钥 (CMK)。当您修改集群以启用 KMS 加密时,Amazon Redshift 会自动将您的数据迁移到新加密的集群。从加密群集创建的快照也会被加密。您还可以通过修改集群并将已加密的集群迁移到未加密的集群,方法是:修改集群并更改加密数据库选项。有关更多信息,请参阅 更改集群加密

虽然加密是 Amazon Redshift 中的一项可选设置,但我们建议您为包含敏感数据的集群启用该设置。此外,根据管理数据的准则或法规,您可能需要使用加密。例如,支付卡行业数据安全标准 (PCI DSS)、萨班斯-奥克斯利法 (SOX)、Health 保险可携性与责任法 (HIPAA) 以及其他此类法规为处理特定类型数据提供了指导原则。

Amazon Redshift 使用加密钥层次结构来加密数据库。您可以使用 Amazon Key Management Service (Amazon KMS) 或硬件安全模块 (HSM) 来管理该层次结构中的顶级加密密钥。Amazon Redshift 使用的加密流程因您管理密钥的方式而异。Amazon Redshift 自动集成了Amazon KMS但不能使用 HSM。当您使用 HSM 时,必须使用客户端和服务器证书在 Amazon Redshift 和 HSM 之间配置受信任的连接。

Amazon Redshift 使用的数据库加密Amazon KMS

当您选择Amazon KMS对于 Amazon Redshift 进行密钥管理,加密密密钥层次结构有四层。按层次顺序,这些密钥是主密钥、群集加密密钥 (CEK)、数据库加密密钥 (DEK) 和数据加密密钥。

当您启动集群时,Amazon Redshift 会返回一个客户主密钥 (CMK) 列表,该列表包含您的Amazon帐户已创建或有权在Amazon KMS。在加密层次结构中选择要用作主密钥的 CMK。

默认情况下,Amazon Redshift 会选择您的默认密钥作为主密钥。默认密钥是Amazon托管密钥,该密钥是为Amazon帐户,以便在 Amazon Redshift 中使用。Amazon KMS会在您第一次启动加密集群时创建此密钥Amazon区域并选择默认密钥。

如果不希望使用默认密钥,则必须在Amazon KMS之前,您在 Amazon Redshift 中启动集群。客户管理的 CMK 可为您提供更大灵活性,包括创建、轮换、禁用、定义访问控制,以及审核用于保护数据的加密密密钥的能力。有关创建 CMK 的更多信息,请参阅创建密钥中的Amazon Key Management Service开发人员指南

如果要使用Amazon KMS来自另一个Amazon账户中,您必须有权使用密钥并在 Amazon Redshift 中指定其 Amazon 资源名称 (ARN)。有关访问密钥的更多信息,请参阅Amazon KMS,请参阅控制对您的密钥的访问权限中的Amazon Key Management Service开发人员指南

在您选择主密钥后,Amazon Redshift 会请求Amazon KMS生成数据密钥,并使用所选的主密钥对其进行加密。此数据密钥用作 Amazon Redshift 中的 CEK。Amazon KMS将已加密的 CEK 导出到 Amazon Redshift 中,在独立于该集群的网络中的磁盘内部存储以及 CEK 的授权和 CEK 的加密上下文。只有加密的 CEK 才会导出到 Amazon Redshift;CMK 仍保留在Amazon KMS。Amazon Redshift 还会通过安全通道将已加密的 CEK 传递到集群中,并将其加载到内存中。然后,Amazon Redshift 调用Amazon KMS来解密 CEK 并将已解密的 CEK 加载到内存中。有关授予、加密上下文和其他的更多信息Amazon KMS相关概念,请参阅概念中的Amazon Key Management Service开发人员指南

接着,Amazon Redshift 会随机生成一个密钥以用作 DEK,并将其加载到集群的内存中。已解密的 CEK 用于加密 DEK,然后,便会通过安全通道从该集群传递 DEK,由 Amazon Redshift 在独立于该集群的网络中的磁盘内部存储。与 CEK 一样,DEK 的加密版本和解密版本都会加载到集群中的内存中。然后,DEK 的解密版本将用于加密为数据库中的每个数据块随机生成的各个加密密钥。

当集群重新启动时,Amazon Redshift 会以内部存储的加密版 CEK 和 DEK 开始,然后调用Amazon KMS再次用 CMK 解密 CEK,以便它可以加载到内存中。然后使用解密的 CEK 再次解密 DEK,并将解密的 DEK 加载到内存中,并根据需要用于加密和解密数据块密钥。

有关创建 Amazon Redshift 集群的更多信息,这些集群使用Amazon KMS密钥,请参阅创建集群使用Amazon CLI和 Amazon Redshift API

复制Amazon KMS— 加密的快照到另一个Amazon区域

Amazon KMS键特定于Amazon区域。如果您启用了将亚 Amazon Redshift 快照复制到其他Amazon区域以及源群集及其快照使用Amazon KMS,您需要为 Amazon Redshift 配置授权,以便在目标位置使用主密钥Amazon区域。此授权使 Amazon Redshift 可以在目标中加密快照Amazon区域。有关跨区域快照复制的更多信息,请参阅将快照复制到另一个Amazon区域

注意

如果您启用已加密集群中的快照复制功能,并针对主密钥使用 Amazon KMS,则无法重命名集群,因为集群名称是加密上下文的一部分。如果您必须重命名集群,则可以禁用源中的快照复制Amazon区域,重命名群集,然后再次配置并启用快照复制。

配置复制快照的授权的过程如下所示。

  1. 在目标中Amazon区域,通过执行以下操作创建快照复制授权:

    • 如果您没有 Amazon KMS 密钥可用,请创建一个。有关创建的更多信息Amazon KMS密钥,请参阅创建密钥中的Amazon Key Management Service开发人员指南

    • 指定快照复制授权的名称。此名称必须具有唯一性,因为Amazon您的区域Amazonaccount.

    • 为您创建的授权指定 Amazon KMS 密钥 ID。如果您不指定密钥,则授予将应用于您的默认密钥。

  2. 在 SourceAmazon区域,启用快照复制并指定您在目标中创建的快照复制授权的名称Amazon区域。

前述流程仅适用于您使用Amazon CLI、Amazon Redshift API 或软件开发工具包。如果您使用控制台,Amazon Redshift 会在您启用跨区域快照复制时提供配置授权的相应工作流程。有关使用控制台为 Amazon KMS 加密的集群配置跨区域快照复制的更多信息,请参阅配置跨区域快照复制Amazon KMS— 加密集

快照复制到目标之前Amazon区域,Amazon Redshift 使用源中的主密钥解密快照Amazon区域并使用 Amazon Redshift 内部管理的随机生成的 RSA 密钥临时对其进行重新加密。然后,Amazon Redshift 将快照通过安全通道复制到目标Amazon区域,使用内部管理的 RSA 密钥解密快照,然后使用目标中的主密钥重新加密快照Amazon区域。

有关为 Amazon KMS 加密的集群配置快照复制授权的更多信息,请参阅将 Amazon Redshift 配置为使用Amazon KMS使用 Amazon Redshift API 和加密钥Amazon CLI

使用硬件安全模块进行 Amazon Redshift 的加密

如果您未使用Amazon KMS对于密钥管理,您可以使用硬件安全模块 (HSM) 在 Amazon Redshift 中管理密钥。

重要

DC2 和 RA3 节点类型不支持 HSM 加密。

HSM 是直接控制密钥生成和管理的设备。它们通过将密钥管理独立于应用程序和数据库层,以提供更强的安全性。Amazon Redshift 支持 Amazon RedshiftAmazon CloudHSMClassic 的密钥管理。使用 HSM 管理加密密钥的加密流程与 Amazon KMS 不同。

重要

Amazon Redshift 仅支持 Amazon RedshiftAmazon CloudHSMClassic。我们不支持较新的Amazon CloudHSM服务。

Amazon CloudHSM经典是关闭的新客户。有关更多信息,请参阅 。CloudHSM Classic 定价。Amazon CloudHSM并非所有 ClassicAmazon区域。有关可用的更多信息Amazon区域,请参阅Amazon区域表

当您配置集群以使用 HSM 时,Amazon Redshift 会向 HSM 发出请求,以生成并存储要用作 CEK 的密钥。然而,与Amazon KMS,HSM 不会将 CEK 导出到 Amazon Redshift。相反,Amazon Redshift 会在集群中随机生成 DEK,并将其传递到 HSM 中,由 CEK 进行加密。HSM 会将已加密的 DEK 返回到 Amazon Redshift 中,由随机生成的内部主密钥进一步加密并在独立于该集群的网络中的磁盘内部存储。Amazon Redshift 还会将解密版 DEK 加载到集群的内存中,以便 DEK 可用于加密和解密数据块的各个密钥。

如果该集群重启,Amazon Redshift 会使用内部主密钥解密内部存储的双重加密 DEK,以将内部存储的 DEK 还原为 CEK 加密状态。然后,CEK 加密的 DEK 会传递到 HSM 进行加密并传递回 Amazon Redshift,以便再次加载到内存中用于各个数据块密钥。

在 Amazon Redshift 和 HSM 之间配置受信任的连接

当您选择使用 HSM 管理集群密钥时,需要在 Amazon Redshift 和 HSM 之间配置受信任的网络连接。执行此操作需要配置客户端和服务器证书。在加密和解密操作过程中,受信任的连接用于在 HSM 和 Amazon Redshift 之间传递加密密密密钥。

Amazon Redshift 会通过随机生成的私有和公有 key pair 创建公有客户端证书。这些都是加密的,并在内部存储。您可以在 HSM 中下载并注册公共客户端证书,并将其分配给适用的 HSM 分区。

您需要为提供 HSM IP 地址、HSM 分区名称、HSM 分区密码以及公有 HSM 服务器证书,该证书使用内部主密钥进行了加密。Amazon Redshift 会完成配置流程并验证其能否连接到 HSM。如果无法使用,则集群将进入不兼容的 HSM 状态,并且不会创建集群。在这种情况下,您必须删除不完整的集群,然后重试。

重要

当您将集群修改为使用不同 HSM 分区时,Amazon Redshift 会验证该集群是否可连接到新分区,但不会验证是否存在有效的加密密钥。在使用新分区之前,您必须将密钥复制到新分区。如果集群已重新启动,而 Amazon Redshift 无法找到有效密钥,重新启动将失败。有关更多信息,请参阅在 HSM 中复制密钥

有关配置 Amazon Redshift 以使用 HSM 的更多信息,请参阅使用 Amazon Redshift 控制台配置 Amazon Redshift 以使用 HSM配置 Amazon Redshift 以使用 Amazon Redshift API 和Amazon CLI

初始配置之后,如果 Amazon Redshift 无法连接到 HSM,则系统会记录一个事件。有关这些事件的更多信息,请参阅Amazon Redshift 事件通知

Amazon Redshift 中的加密钥轮换

在 Amazon Redshift 中,您可以轮换已加密集群的加密密钥。当您启动密钥轮换流程时,Amazon Redshift 会轮换指定集群以及该集群的任何自动或手动快照的 CEK。Amazon Redshift 还会轮换指定集群的 DEK,但不会轮换快照(这些快照在 Amazon 简单存储服务 (Amazon S3) 内部存储并使用现有 DEK 进行了加密)的 DEK。

在轮换进行过程中,该集群将处于 ROTATING_KEYS 状态一直到轮换完成为止,届时,该集群将还原为 AVABLE 状态。Amazon Redshift 在密钥轮换过程中处理解密和重新加密。

注意

如果没有源群集,则无法轮换快照的密钥。在删除集群之前,请考虑其快照是否依赖密钥轮换。

由于集群在密钥轮换过程中暂时不可用,因此您只应按照数据需求或怀疑密钥可能已被泄露时的频率轮换密钥。作为最佳做法,您应该查看存储的数据类型,并规划对该数据进行加密的密钥的轮换频率。轮换密钥的频率取决于贵公司的数据安全策略以及关于敏感数据和法规遵从性的任何行业标准。确保您的计划平衡安全需求和群集的可用性考虑因素。

有关轮换键的更多信息,请参阅使用 Amazon Redshift 控制台轮换加密密钥使用 Amazon Redshift API 和轮换加密密钥Amazon CLI