View a markdown version of this page

Amazon DocumentDB 静态数据加密 - Amazon DocumentDB

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

Amazon DocumentDB 静态数据加密

注意

AWS KMS 正在将客户主密钥 (CMK) 一词替换为AWS KMS key KMS 密钥。这一概念并未改变。为了防止重大更改, 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 集群启用静态加密

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

Amazon DocumentDB 用于检索和管理加密密钥,并定义控制如何使用这些密钥的策略。 AWS KMS 如果您未指定 AWS KMS 密钥标识符,Amazon DocumentDB 将使用默认的 AWS 托管服务 KMS 密钥。Amazon DocumentDB 会为您的 AWS 区域 AWS 账户中的每个密钥创建单独的 KMS 密钥。有关更多信息,请参阅 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状态时,您可以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状态为终端。无法启动集群,也无法恢复数据库的运行状态。要恢复数据,请从快照还原或对新集群执行时间点还原。您仍必须有权访问原始 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

如果运行上述命令后集群未删除,请联系AWS 支持

Amazon DocumentDB 加密集群的限制

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

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

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

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

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