你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

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

使用服务托管密钥 (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 实例可以访问密钥。 审核对密钥的访问权限也是你的责任。

为 Azure Cosmos DB for MonogDB vCore 群集配置客户管理的密钥时,Azure 存储会将帐户的根数据加密密钥 (DEK) 与关联的密钥保管库中的客户管理的密钥一起包装。 根加密密钥的保护会更改,但是 Azure 存储帐户中的数据会保持加密状态。 你无需执行额外操作即可确保数据保持加密。 客户管理的密钥的保护会立即生效。

Azure Key Vault 是一种基于云的外部密钥管理系统。 它具有高可用性,并为 RSA 加密密钥提供可扩展的安全存储。 它不允许直接访问存储的密钥,而是为已获授权的实体提供加密和解密服务。 Key Vault 可以生成密钥并将其导入,或者接收从本地 HSM 设备传输的密钥。

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

密钥保管库

用于 CMK 设置的密钥保管库必须满足以下要求:

  • 密钥保管库和 Azure Cosmos DB for MongoDB vCore 必须属于同一个 Microsoft Entra 租户
  • 建议:将 Key Vault 的“保留已删除保管库的天数”设置设为“90 天”。 只能在密钥保管库创建时定义此配置设置。 创建实例后,无法修改此设置。
  • 启用密钥保管库中的 soft-delete 功能,以便在意外删除密钥或密钥保管库实例时防止数据丢失。 密钥保管库会将软删除资源保留 90 天,除非用户在此期间恢复或清除这些资源。 恢复和清除作具有与密钥保管库、基于角色的访问控制(RBAC)角色或访问策略权限关联的自己的权限。 软删除功能默认处于打开状态。 如果在很久以前部署了密钥保管库,它可能仍禁用了软删除。 在这种情况下,可以启用它
  • 启用清除保护以对已删除的保管库和保管库对象执行强制保留期。
  • 配置网络访问,以允许群集访问密钥保管库中的加密密钥。 使用以下配置选项之一:
    • 允许从所有网络进行公共访问 ,允许 Internet 上的所有主机访问密钥保管库。
    • 选择“禁用公共访问”和“允许受信任的Microsoft服务绕过此防火墙以禁用所有公共访问,但允许群集访问密钥保管库。

加密密钥

为 CMK 配置选择的加密密钥必须满足以下要求:

  • 用于加密数据加密密钥的密钥只能是非对称、RSA 或 RSA-HSM 密钥。 支持的密钥大小为 2048、3072 和 4096。
    • 建议:使用 4,096 位密钥来提高安全性。
  • 密钥激活的日期和时间(如果已设置)必须是过去的日期和时间。 过期的日期和时间(如果已设置)必须在未来。
  • 密钥必须处于“已启用”状态
  • 要将现有密钥导入 Azure Key Vault,请确保以受支持的文件格式(.pfx.byok.backup)提供该密钥。

Permissions

向 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 资源锁
  • 查看并启用 Azure Key Vault 的可用性和冗余选项。
  • 在用于存储密钥的 Azure Key Vault 实例上启用日志记录警报。 密钥保管库提供可以轻松注入到其他安全信息和事件管理 (SIEM) 工具的日志。 Azure Monitor 日志就是一项已集成的服务。
  • 启用 密钥自动启动。 Azure Cosmos DB for MongoDB vCore 服务始终选取所选密钥的最新版本。
  • 通过选择“禁用公共访问”并允许受信任的Microsoft服务绕过此防火墙,锁定对 Key Vault 的公共网络访问

注释

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

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