次の方法で共有

Azure Cosmos DB for MongoDB vCore 中的数据加密

Azure Cosmos DB for MongoDB vCore 管理的所有数据始终静态加密。 这些数据包括所有系统和用户数据库、临时文件、日志和备份。

重要

Azure Cosmos DB for MongoDB vCore 中的客户管理的密钥(CMK)加密目前为预览版。 此预览版在没有服务级别协议的情况下提供,不建议用于生产工作负荷。 某些功能不受支持或功能有限。

使用服务管理的密钥(SMK)或客户管理的密钥(CMK)进行静态加密

Azure Cosmos DB for MongoDB vCore 支持两种静态数据加密模式:服务管理的密钥(SMK)客户管理的密钥(CMK)。 使用服务管理的密钥进行数据加密是 Azure Cosmos DB for MongoDB vCore 的默认模式。 在此模式下,该服务会自动管理用于加密数据的加密密钥。 无需执行任何作即可在此模式下启用或管理加密。

客户管理的密钥 模式下,可以自带加密密钥来加密数据。 指定客户管理的密钥时,该密钥用于保护和控制对加密数据的密钥的访问。 客户管理的密钥提供更大的灵活性来管理访问控制。 必须部署自己的 Azure Key Vault 并将其配置为存储 Azure Cosmos DB for MongoDB vCore 群集使用的加密密钥。

只能在群集创建时选择配置模式。 在群集的生存期内,无法将其从一种模式更改为另一种模式。

为了实现数据的加密,Azure Cosmos DB for MongoDB vCore 对 静态数据使用 Azure 存储的服务器端加密。 使用 CMK 时,你负责提供密钥来加密和解密 Azure 存储服务中的数据。 这些密钥必须存储在 Azure Key Vault 中。

每个模式提供的优势(SMK 或 CMK)

使用 Azure Cosmos DB for MongoDB vCore 的服务托管密钥 进行数据加密具有以下优势:

  • 该服务会自动完全控制数据访问。
  • 该服务会自动和完全控制密钥的生命周期,包括密钥的轮换。
  • 无需担心管理数据加密密钥。
  • 基于服务托管密钥的数据加密不会对工作负荷的性能产生负面影响。
  • 它简化了加密密钥的管理(包括其常规轮换),以及用于访问这些密钥的标识的管理。

使用 Azure Cosmos DB for MongoDB vCore 的客户管理的密钥 进行数据加密具有以下优势:

  • 完全控制数据访问。 可以撤销密钥以使数据库不可访问。
  • 可以完全控制密钥的生命周期,使其与公司策略保持一致。
  • 可以在自己的 Azure Key Vault 实例中集中管理和组织所有加密密钥。
  • 基于客户管理的密钥的数据加密不会对工作负荷的性能产生负面影响。
  • 可以在安全人员、数据库管理员和系统管理员之间实现职责分离。

CMK 要求

使用 客户管理的加密密钥 ,你承担了维护 CMK 正常运行所需的正确配置组件的所有责任。 因此,必须部署自己的 Azure Key Vault 并提供 用户分配的托管标识。 必须生成或导入自己的密钥。 必须向 Key Vault 授予所需的权限,以便 Azure Cosmos DB for MongoDB vCore 可以对密钥执行必要的作。 必须负责配置保留密钥的 Azure Key Vault 的所有网络方面,以便 Azure Cosmos DB for MongoDB vCore 实例可以访问密钥。 审核对密钥的访问权限也是你的责任。

为用于 MonogDB vCore 群集的 Azure Cosmos DB 配置客户管理的密钥时,Azure 存储会将帐户的根数据加密密钥(DEK)包装到关联的密钥保管库中,该帐户的根数据加密密钥(DEK)。 根加密密钥的保护会更改,但 Azure 存储帐户中的数据始终保持加密状态。 无需执行额外的作,以确保数据保持加密状态。 客户管理的密钥的保护会立即生效。

Azure Key Vault 是基于云的外部密钥管理系统。 它高度可用,可为 RSA 加密密钥提供可缩放的安全存储。 它不允许直接访问存储的密钥,而是向授权实体提供加密和解密服务。 Key Vault 可以生成密钥、导入密钥或接收从本地 HSM 设备传输的密钥。

下面是 Azure Cosmos DB for MongoDB vCore 数据加密配置的要求和建议列表:

  • Key Vault
    • Key Vault 和 Azure Cosmos DB for MongoDB vCore 必须属于同 一Microsoft Entra 租户
    • 建议:将 Key Vault 的已删除保管库 设置设置为 90 天。 只能在密钥保管库创建时定义此配置设置。 创建实例后,无法修改此设置。
    • soft-delete 启用密钥保管库中的功能,以帮助防止数据丢失,如果意外删除了密钥或密钥保管库实例。 密钥保管库将软删除的资源保留 90 天,除非用户在此期间恢复或清除它们。 恢复和清除作具有与密钥保管库、RBAC 角色或访问策略权限关联的自己的权限。 软删除功能默认处于打开状态。 如果密钥保管库部署了很久以前,它可能仍禁用软删除。 在这种情况下,可以 打开它
    • 启用 清除保护 以强制删除的保管库和保管库对象保留期。
  • 钥匙
    • 用于加密数据加密密钥的密钥只能非对称、RSA 或 RSA-HSM。 支持 2,048、3,072 和 4,096 的密钥大小。
      • 建议:使用 4,096 位密钥来提高安全性。
    • 密钥激活的日期和时间(如果已设置)必须过去。 过期的日期和时间(如果已设置)必须在将来。
    • 密钥必须处于 “已启用” 状态。
    • 如果要将现有密钥导入 Azure Key Vault,请以受支持的文件格式(.pfx.byok.backup提供它。
  • 权限:通过以下方式授予 Azure Cosmos DB for MongoDB vCore 用户分配的托管标识对密钥的访问权限:
    • 首选:应使用 RBAC 权限模型 配置 Azure Key Vault,并且应为托管标识分配 Key Vault 加密服务加密用户 角色。
    • 旧版:如果 Azure Key Vault 配置了 访问策略权限模型,请向托管标识授予以下权限:
      • get:检索密钥保管库中密钥的属性和公共部分。
      • list:列出并循环访问密钥保管库中存储的密钥。
      • wrapKey:加密数据加密密钥。
      • unwrapKey:解密数据加密密钥。

CMK 密钥版本更新

Azure Cosmos DB for MongoDB vCore 中的 CMK 支持自动密钥版本更新,也称为无版本密钥。 Azure Cosmos DB for MonogoDB vCore 服务会自动选取新密钥版本并重新加密数据加密密钥。 此功能可与 Azure Key Vault 的 自动启动功能结合使用。

注意事项

使用客户管理的密钥进行数据加密时,请按照以下建议配置 Key Vault:

  • 若要防止意外或未经授权的删除此关键资源,请对密钥保管库设置 资源锁
  • 查看并启用 Azure Key Vault 可用性和冗余 选项。
  • 在用于存储密钥的 Azure Key Vault 实例上启用 日志记录警报 。 Key Vault 提供易于注入到其他安全信息和事件管理(SIEM)工具中的日志。 Azure Monitor 日志是已集成的服务的一个示例。

注释

选择“ 禁用公共访问 ”和 “允许受信任的Microsoft服务绕过此防火墙”后,尝试使用公共访问通过门户管理 Key Vault 时,可能会收到如下错误:“已启用网络访问控制。 只有允许的网络才能访问此密钥保管库。此错误不排除在客户管理的密钥设置期间提供密钥或在群集作期间从 Key Vault 提取密钥的能力。

  • 将客户托管密钥的副本保留在安全的位置,或将其托管到托管服务。
  • 如果 Key Vault 生成密钥,请在首次使用该密钥之前创建 密钥备份 。 只能将备份还原到 Key Vault。

从 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 中删除托管标识,该 标识 用于检索密钥保管库中存储的任何加密密钥。 恢复标识 并等待服务运行密钥的定期重新验证,并自动将群集状态转换为 “就绪”。
密钥保管库权限模型配置为使用基于角色的访问控制。 从配置为检索任何密钥的托管标识中删除 Key Vault 加密服务加密用户 RBAC 角色分配。 再次将 RBAC 角色授予 托管标识 ,并等待服务运行密钥的定期重新验证,并自动将群集状态转换为 “就绪”。 另一种方法包括向密钥保管库授予其他 托管标识的角色,并更新群集,以便它使用此其他 托管标识 来访问密钥。
密钥保管库权限模型配置为使用访问策略。 从配置为检索任何密钥的托管标识中撤消列表获取wrapKey解包Key 访问策略。 将 RBAC 角色授予托管标识,并等待服务运行密钥的定期重新验证,并自动将群集状态转换为 就绪。 另一种方法包括向密钥保管库授予其他托管标识所需的访问策略,并更新群集,以便它使用此其他托管标识来访问密钥。
设置了过于严格的密钥保管库防火墙规则,以便 Azure Cosmos DB for MongoDB vCore 群集无法与密钥保管库通信以检索密钥。 配置密钥保管库防火墙时,请确保选择允许 受信任的Microsoft服务 的选项,以便 Azure Cosmos DB for MongoDB vCore 可以绕过防火墙。

注释

禁用、删除、过期或无法访问密钥时,使用该密钥加密数据的群集将 变得不可访问,如前所述。 在重新验证加密密钥之前,群集状态不会再次更改为 “就绪 ”。

通常,在禁用、删除、过期或无法访问密钥后,群集在 60 分钟内 变得不可访问 。 密钥可用后,群集可能需要长达 60 分钟才能再次 准备就绪

从托管标识删除中恢复

如果用于访问密钥保管库中存储的加密密钥的用户分配托管标识在 Microsoft Entra ID 中删除,则应按照以下步骤恢复:

  1. 恢复标识 或创建新的托管 Entra ID 标识。
  2. 如果创建了一个新标识(即使其名称与已删除的标识相同),请更新 Azure Database for 灵活群集属性,使其知道必须使用此新标识来访问加密密钥。
  3. 请确保此标识对 Azure Key Vault(AKV)中的密钥的作具有适当的权限。
  4. 等待大约一小时,直到群集重新评估密钥。

重要

只需使用与已删除标识相同的名称创建新的 Entra ID 标识不会从托管标识删除中恢复。