你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本指南旨在帮助你在使用 客户管理的密钥(CMK)通过 Azure DocumentDB 进行静态数据加密 时解决常见问题。 它提供了用于排查 CMK 设置中涉及的各种组件的实用解决方案。
在 Azure DocumentDB 群集上配置 CMK 需要 托管标识、密钥保管库、密钥保管库中的加密密钥以及授予托管标识的适当权限。
如果托管标识、密钥保管库、密钥或权限未根据要求进行配置,则可能无法在群集预配期间启用 CMK。 如果已启用 CMK 的群集上的正确设置失效,则由于使用客户管理的密钥加密这一核心安全要求,此群集上的数据将变得不可用。
请按照本部分中的步骤对正确 CMK 设置所需的所有组件进行故障排除。
从 Azure Key Vault 吊销密钥访问的原因
对 Key Vault 具有足够访问权限的人员可能通过下列方式意外禁用群集对密钥的访问:
- 取消分配 RBAC 角色“Key Vault 加密服务加密用户”或从用于检索密钥保管库中的密钥的标识中撤消权限。
- 删除密钥。
- 删除 Key Vault 实例。
- 更改密钥保管库防火墙规则或错误配置密钥保管库的网络设置。
- 删除 Microsoft Entra ID 中群集的托管标识。
这些操作会导致用于数据加密的客户管理的密钥变得不可访问。
对无法访问的客户管理的密钥条件进行故障排除
使用密钥保管库中存储的客户管理的密钥配置数据加密时,群集需要持续访问该密钥才能保持在线。 如果不是这种情况,群集会将其状态更改为“不可访问”并开始拒绝所有连接。
群集状态变为“不可访问”的一些可能原因包括:
| 原因 | 决议 |
|---|---|
| 群集指向的加密密钥已配置到期日期和时间,并且已达到该日期和时间。 | 你必须延长密钥的到期日期。 然后,你必须等待服务重新验证密钥,并自动将群集状态转换为“就绪”。 只有当群集回到“就绪”状态时,你才能将密钥轮换到较新版本或创建新密钥,并更新群集,使其引用同一密钥的新版本或新密钥。 |
| 删除 Key Vault 实例,Azure DocumentDB 实例无法访问密钥并移动到 不可访问 状态。 | 恢复 Key Vault 实例并等待服务运行密钥的定期重新验证,并自动将群集状态转换为“就绪”。 |
| 你从 Microsoft Entra ID 中删除了用于检索密钥保管库中存储的任何加密密钥的托管标识。 | 恢复标识,并等待服务运行密钥的定期重新验证并自动将群集状态转换为“就绪”。 |
| 你的密钥保管库权限模型配置为使用基于角色的访问控制。 你从为检索任何密钥而配置的托管标识中移除了密钥保管库加密服务加密用户 RBAC 角色分配。 | 再次向该托管标识授予 RBAC 角色,并等待服务运行密钥的周期性重新验证,并自动将群集状态转换为“就绪”。 或者,可以将密钥保管库上的角色授予其他托管标识,并更新群集,以便它使用此其他托管标识来访问密钥。 |
| 密钥保管库权限模型配置为使用访问策略。 你从为检索任何密钥而配置的托管标识中撤销了 list、get、wrapKey 或 unwrapKey 访问策略。 | 向该托管标识授予 RBAC 角色,并等待服务运行密钥的周期性重新验证,并自动将群集状态转换为“就绪”。 或者,可以将密钥保管库上的所需访问策略授予其他托管标识,并更新群集,以便它使用此其他托管标识来访问密钥。 |
| 设置过于严格的密钥保管库防火墙规则,以便 Azure DocumentDB 群集无法与密钥保管库通信以检索密钥。 | 配置密钥保管库防火墙时,请确保禁用公共访问并选择允许受信任的 Microsoft 服务或允许来自所有网络的公共访问的选项。 通过从所有网络进行公共访问,Azure DocumentDB 群集可以访问密钥保管库。 禁用公共访问并选择允许受信任的 Microsoft 服务访问密钥值后,群集可以绕过防火墙。 |
注释
当密钥被禁用、删除、过期或无法访问时,通过该密钥加密数据的群集将变为“不可访问”,如前所述。 群集状态不会再次更改为“就绪”,直到它可以重新验证加密密钥。
通常情况下,在密钥被禁用、删除、过期或无法访问后,群集将在 60 分钟内变为“不可访问”。 密钥可用后,群集可能需要长达 60 分钟才能再次变为“就绪”状态。
恢复删除的托管标识
如果用于访问密钥保管库中存储的加密密钥的用户分配的托管标识在 Microsoft Entra ID 中被删除,则应按照以下步骤进行恢复:
- 恢复标识或创建新的托管 Entra ID 标识。
- 如果创建了新标识,即使其名称与已删除的标识相同,也请更新 Azure Cosmos DB for MongoDB vCore 群集属性,使其知道必须使用此新标识来访问加密密钥。
- 请确保此标识对 Azure Key Vault (AKV) 中的密钥具有适当的操作权限。
- 等待大约一小时,直到群集重新评估密钥。
重要
创建新的与已删除标识同名的 Entra ID 标识不会从托管标识删除中恢复。
排查已启用 CMK 的群集预配失败问题
如果未满足任何 CMK 要求,则尝试预配启用了 CMK 的群集会失败。 群集预配期间的以下错误指示未正确设置密钥保管库、加密密钥或托管标识的权限:“无法访问密钥。 它可能缺失,提供的用户标识没有对它的 GET 权限,或者密钥保管库未启用对公共 Internet 的访问。”
针对此情况进行故障排除:
- 检查所有 CMK 要求。
- 使用已检查的托管标识和密钥保管库预配群集。
- 删除失败的群集实体。 失败的群集的属性
clusterStatus设置为“失败”。 在 Azure 门户中,可以在群集属性的“概述”边栏选项卡上找到群集状态。