View a markdown version of this page

Amazon DocumentDB 静态数据加密 - Amazon DocumentDB

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

Amazon DocumentDB 静态数据加密

注意

AWS KMS 正在将 “客户主密钥 (CMK)” 一词替换为 “AWS KMS keyKMS 密钥”。这一概念并未改变。为了防止重大更改, AWS KMS 保留了该术语的一些变体。

您可以通过在创建集群时指定存储加密选项来在 Amazon DocumentDB 集群中加密静态数据。存储加密在整个集群范围内启用,应用于所有实例,包括主实例和任何副本。它还应用于集群的存储卷、数据、索引、日志、自动备份和快照。

Amazon DocumentDB 使用 256 位高级加密标准 (AES-256),使用存储在 () 中的加密密钥来加密您的数据。 AWS Key Management Service AWS KMS使用静态加密启用的 Amazon DocumentDB 集群时,您无需修改应用程序逻辑或客户端连接。Amazon DocumentDB 以透明方式处理数据的加密和解密,这对性能产生的影响最小。

Amazon DocumentDB 集成 AWS KMS 并使用一种称为信封加密的方法来保护您的数据。当使用 Amazon DocumentDB 集群进行加密时 AWS KMS,Amazon DocumentDB AWS KMS 会要求使用您的 KMS 密钥生成用于加密存储卷的密文数据密钥。加密文字数据密钥使用您定义的 KMS 密钥进行加密,并与加密的数据和存储元数据一起存储。当 Amazon DocumentDB 需要访问您的加密数据时,它会请求 AWS KMS 使用您的 KMS 密钥解密密文数据密钥,并将明文数据密钥缓存在内存中,以高效地加密和解密存储卷中的数据。

Amazon DocumentDB 中的存储加密功能适用于所有支持的实例大小以及所有可用 Amazon DocumentDB AWS 区域 的地方。

为 Amazon DocumentDB 集群启用静态加密

当使用或 () 配置集群时,您可以在 Amazon DocumentDB 集群上启用 AWS 管理控制台 或禁用静态加密。 AWS Command Line Interface AWS CLI默认情况下,您使用控制台创建的集群启用了静态加密功能。默认情况下,您使用创建的 AWS CLI 集群会禁用静态加密。因此,您必须使用 --storage-encrypted 参数显式启用静态加密。无论哪种情况,在创建集群后,都无法更改静态加密选项。

Amazon DocumentDB 用于检索和管理加密密钥,并定义控制如何使用 AWS KMS 这些密钥的策略。如果您未指定 AWS KMS 密钥标识符,Amazon DocumentDB 将使用默认的 AWS 托管服务 KMS 密钥。Amazon DocumentDB 会为你的每个 KMS 密钥创建一个单独的 KMS 密钥 AWS 区域 。 AWS 账户有关更多信息,请参阅 AWS Key Management Service 概念

要开始创建自己的 KMS 密钥,请参阅AWS Key Management Service 开发人员指南中的入门

重要

您必须使用对称加密 KMS 密钥加密您的集群,因为 Amazon DocumentDB 仅支持对称加密 KMS 密钥。请勿使用非对称 KMS 密钥尝试对 Amazon DocumentDB 集群中的数据进行加密。有关更多信息,请参阅AWS Key Management Service 开发人员指南中的非对称 KMS 密钥 AWS KMS

如果 Amazon DocumentDB 无法再访问集群的 KMS 密钥(例如,当拥有 AWS 账户 该密钥的被暂停、密钥被禁用、密钥计划删除、Amazon DocumentDB 所依赖的密钥策略或授权被移除时),则集群将首先转换为状态。inaccessible-encryption-credentials-recoverable当集群处于此状态时,Amazon DocumentDB 会停止集群的实例,并且您无法读取或写入集群,但是如果在 7 天内恢复对 KMS 密钥的访问权限,集群仍然可以恢复。如果在 7 天内未恢复访问权限,则集群将转换为终端inaccessible-encryption-credentials状态。从终端状态来看,集群不再可用,数据库的当前状态也无法恢复 — 您只能从备份中恢复或使用原始 KMS 密钥执行时间点还原。对于 Amazon DocumentDB,备份始终启用至少 1 天。

注意

作为全局群集一部分的集群的行为有所不同。当 Amazon DocumentDB 检测到无法再访问 KMS 密钥时,全局集群中的所有集群都将直接转换为终端inaccessible-encryption-credentials状态,跳过可恢复状态。这是因为作为全局群集一部分的群集只有在它是全局群集中唯一的集群时才能停止和启动。要恢复,必须从快照恢复或执行时间点恢复。要删除原始群集,必须先从全局群集中移除每个群集,然后再将其删除。

重要

在已创建加密集群的 KMS 密钥后,您无法更改它。请确保先确定您的加密密钥要求,然后再创建加密的集群。

Using the AWS 管理控制台

您可在创建集群时,指定静态加密选项。默认情况下,当您使用 AWS 管理控制台创建集群时,静态加密处于启用状态。集群创建之后无法修改该选项。

在创建集群时指定静态加密选项
  1. 入门部分所述创建 Amazon DocumentDB 集群。但在步骤 6 中,不要选择创建集群

  2. Authentication (身份验证) 部分下,选择 Show advanced settings (显示高级设置)

  3. 向下滚动到 Encryption-at-rest部分。

  4. 选择要进行静态加密的选项。无论您选择哪个选项,都无法在创建集群后更改它。

    • 要对此集群中的静态数据进行加密,请选择启用加密

    • 如果您不想对此集群中的静态数据进行加密,请选择Disable encryption (禁用加密)

  5. 选择您想要的主密钥。Amazon DocumentDB 使用 AWS Key Management Service (AWS KMS) 来检索和管理加密密钥,并定义控制如何使用这些密钥的策略。如果您未指定 AWS KMS 密钥标识符,Amazon DocumentDB 将使用默认的 AWS 托管服务 KMS 密钥。有关更多信息,请参阅 AWS Key Management Service 概念

    注意

    创建加密的集群后,您无法更改该集群的 KMS 密钥。请确保先确定您的加密密钥要求,然后再创建加密的集群。

  6. 根据需要完成其他部分,然后创建您的集群。

Using the AWS CLI

要使用加密 Amazon DocumentDB 集群 AWS CLI,请运行create-db-cluster命令并指定选项。--storage-encrypted默认情况下,使用创建的 Amazon DocumentDB 集群 AWS CLI 不启用存储加密。

以下示例创建启用了存储加密的 Amazon DocumentDB 集群。

在以下示例中,将每个user input placeholder示例替换为集群的信息。

对于 Linux、macOS 或 Unix:

aws docdb create-db-cluster \ --db-cluster-identifier mydocdbcluster \ --port 27017 \ --engine docdb \ --master-username SampleUser1 \ --master-user-password primaryPassword \ --storage-encrypted

对于 Windows:

aws docdb create-db-cluster ^ --db-cluster-identifier SampleUser1 ^ --port 27017 ^ --engine docdb ^ --master-username SampleUser1 ^ --master-user-password primaryPassword ^ --storage-encrypted

在创建加密的 Amazon DocumentDB 集群时,您可以指定 AWS KMS 密钥标识符,如以下示例所示。

对于 Linux、macOS 或 Unix:

aws docdb create-db-cluster \ --db-cluster-identifier SampleUser1 \ --port 27017 \ --engine docdb \ --master-username primaryUsername \ --master-user-password yourPrimaryPassword \ --storage-encrypted \ --kms-key-id key-arn-or-alias

对于 Windows:

aws docdb create-db-cluster ^ --db-cluster-identifier SampleUser1 ^ --port 27017 ^ --engine docdb ^ --master-username SampleUser1 ^ --master-user-password primaryPassword ^ --storage-encrypted ^ --kms-key-id key-arn-or-alias
注意

创建加密的集群后,您无法更改该集群的 KMS 密钥。请确保先确定您的加密密钥要求,然后再创建加密的集群。

解析处于无法访问加密状态的 Amazon DocumentDB 集群

当 Amazon DocumentDB 无法访问集群加密时使用的 KMS 密钥时,Amazon DocumentDB 集群将变为无法访问的加密状态。有两种这样的状态,恢复路径取决于集群所处的状态。

inaccessible-encryption-credentials-recoverable 状态

当集群处于inaccessible-encryption-credentials-recoverable状态时,您可以available通过恢复 Amazon DocumentDB 对 KMS 密钥的访问权限,然后启动集群来恢复集群。要解决此状态,请执行以下操作:

  1. AWS 账户 确认拥有 KMS 密钥的处于活动状态。如果账户被暂停,请重新激活。

  2. 确认已启用 KMS 密钥。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的启用和禁用密钥

  3. 检查是否计划删除 KMS 密钥。如果是,请取消计划中的密钥删除。有关更多信息,请参阅《AWS Key Management Service 开发者指南》中的计划和取消密钥删除

  4. 确认 KMS 密钥策略和亚马逊 DocumentDB 所依赖的任何授权仍然允许亚马逊 DocumentDB 使用该密钥。

  5. 恢复对 KMS 密钥的访问后,使用 AWS 管理控制台 或运行start-db-cluster AWS CLI 命令启动集群。

    对于 Linux、macOS 或 Unix:

    aws docdb start-db-cluster \ --db-cluster-identifier example-cluster

    对于 Windows:

    aws docdb start-db-cluster ^ --db-cluster-identifier example-cluster
重要

如果在 7 天内未恢复对 KMS 密钥的访问权限,则集群将转换为无法启动的终端inaccessible-encryption-credentials状态。

inaccessible-encryption-credentials 状态

inaccessible-encryption-credentials状态为终端。集群无法启动,数据库的运行状态也无法恢复。要恢复数据,请从快照还原或对新集群执行时间点还原。您仍必须有权访问原始 KMS 密钥才能执行恢复。如果 KMS 密钥已删除,则无法恢复数据。

有关更多信息,请参阅从集群快照还原还原到某个时间点

注意

作为全局群集一部分的集群会直接转换到失去对 KMS 密钥的访问权限时的inaccessible-encryption-credentials状态,因为作为全局群集一部分的集群只有在全局集群中唯一的集群时才能停止和启动。要删除处于此状态的群集,请先从全局群集中移除每个群集,然后分别删除这些群集。

如果由于启用了删除保护而无法删除处于inaccessible-encryption-credentials状态的集群, AWS CLI 请在重试删除之前使用关闭删除保护。

对于 Linux、macOS 或 Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier example-cluster \ --no-deletion-protection

对于 Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier example-cluster ^ --no-deletion-protection

然后,您可以使用delete-db-cluster命令删除集群。

对于 Linux、macOS 或 Unix:

aws docdb delete-db-cluster \ --db-cluster-identifier example-cluster \ --skip-final-snapshot

对于 Windows:

aws docdb delete-db-cluster ^ --db-cluster-identifier example-cluster ^ --skip-final-snapshot

如果运行上述命令后集群仍未删除,请联系 Su AWS pp ort。

Amazon DocumentDB 加密集群的限制

Amazon DocumentDB 加密的集群存在以下限制。

  • 您只能在创建 Amazon DocumentDB 集群时而不能在创建它之后启用或禁用静态加密。但是,您可以通过创建未加密群集的快照,然后将未加密的快照还原为新集群,同时指定静态加密选项。

    有关更多信息,请参阅以下主题:

  • 不能通过对已启用存储加密的 Amazon DocumentDB 集群进行修改来禁用加密。

  • Amazon DocumentDB 集群中的所有实例、自动备份、快照和索引都使用相同的 KMS 密钥进行加密。