本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 密钥后,您无法更改它。请确保先确定您的加密密钥要求,然后再创建加密的集群。
解析处于不可访问加密状态的 Amazon DocumentDB 集群
当 Amazon DocumentDB 无法访问集群加密时使用的 KMS 密钥时,Amazon DocumentDB 集群将变为不可访问的加密状态。有两种这样的状态,恢复路径取决于集群所在的状态。
无法访问的加密凭证可恢复状态
当集群处于inaccessible-encryption-credentials-recoverable状态时,您可以available通过恢复 Amazon DocumentDB 对 KMS 密钥的访问权限,然后启动集群来将集群返回到。要解决此状态,请执行以下操作:
-
AWS 账户 确认拥有 KMS 密钥的处于活动状态。如果该账户被暂停,请将其重新激活。
-
确认 KMS 密钥已启用。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的启用和禁用密钥。
-
检查 KMS 密钥是否已计划删除。如果是,请取消预定的密钥删除。有关更多信息,请参阅《AWS Key Management Service 开发者指南》中的计划和取消密钥删除。
-
确认 KMS 密钥政策以及亚马逊 DocumentDB 所依赖的任何授权仍允许亚马逊 DocumentDB 使用该密钥。
-
恢复对 KMS 密钥的访问权限后,使用 AWS 管理控制台 或运行
start-db-clusterAWS CLI 命令启动集群。例
对于 Linux、macOS 或 Unix:
aws docdb start-db-cluster \ --db-cluster-identifierexample-cluster对于 Windows:
aws docdb start-db-cluster ^ --db-cluster-identifierexample-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-identifierexample-cluster\ --no-deletion-protection
对于 Windows:
aws docdb modify-db-cluster ^ --db-cluster-identifierexample-cluster^ --no-deletion-protection
然后,您可以使用delete-db-cluster命令删除集群。
例
对于 Linux、macOS 或 Unix:
aws docdb delete-db-cluster \ --db-cluster-identifierexample-cluster\ --skip-final-snapshot
对于 Windows:
aws docdb delete-db-cluster ^ --db-cluster-identifierexample-cluster^ --skip-final-snapshot
如果运行上述命令后集群未删除,请联系AWS 支持
Amazon DocumentDB 加密集群的限制
Amazon DocumentDB 加密的集群存在以下限制。
-
您只能在创建 Amazon DocumentDB 集群时而不能在创建它之后启用或禁用静态加密。但是,您可以通过创建未加密群集的快照,然后将未加密的快照还原为新集群,同时指定静态加密选项。
有关更多信息,请参阅以下主题:
-
不能通过对已启用存储加密的 Amazon DocumentDB 集群进行修改来禁用加密。
-
Amazon DocumentDB 集群中的所有实例、自动备份、快照和索引都使用相同的 KMS 密钥进行加密。