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