Azure DocumentDB 中的数据加密

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

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

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

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

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

为了实现数据的加密,Azure DocumentDB 对 静态数据使用 Azure 存储的服务器端加密。 使用 CMK 时,你负责提供密钥来加密和解密 Azure 存储服务中的数据。 这些密钥必须存储在 Azure 密钥保管库 中。

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

使用 Azure DocumentDB 的服务管理的密钥 进行数据加密具有以下优势:

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

使用 Azure DocumentDB 的客户管理的密钥 进行数据加密具有以下优势:

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

CMK 要求

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

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

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

下面是 Azure DocumentDB 数据加密配置的要求和建议列表:

密钥保管库

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

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

加密密钥

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

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

Permissions

向 Azure DocumentDB 的用户分配的托管标识授予对加密密钥的访问权限:

  • 首选:应使用 RBAC 权限模型配置 Azure 密钥保管库,并应为托管标识分配 密钥保管库 加密服务加密用户角色
  • 旧版:如果为 Azure 密钥保管库 配置了访问策略权限模型,请向托管标识授予以下权限:
    • get:检索密钥保管库中密钥的属性和公共部分。
    • list:列出并循环访问密钥保管库中存储的密钥。
    • wrapKey:加密数据加密密钥
    • unwrapKey:解密数据加密密钥

CMK 密钥版本更新

Azure DocumentDB 中的 CMK 支持自动密钥版本更新,也称为无版本密钥。 Azure DocumentDB 服务会自动选取新的密钥版本,并重新加密数据加密密钥。 此功能可与 Azure 密钥保管库 的 自动轮换功能结合使用。

注意事项

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

  • 为防止意外删除或未经授权删除此关键资源,请在密钥保管库上设置 Azure 资源锁
  • 查看并启用 Azure 密钥保管库 的可用性和冗余选项。
  • 在用于存储密钥的 Azure 密钥保管库 实例上启用日志记录警报。 密钥保管库提供可以轻松注入到其他安全信息和事件管理 (SIEM) 工具的日志。 Azure Monitor 日志就是一项已集成的服务。
  • 启用密钥自动轮换。 Azure DocumentDB 服务始终选取所选密钥的最新版本。
  • 通过选择“禁用公共访问”和“允许受信任的 Microsoft 服务绕过此防火墙”来锁定对 密钥保管库 的公共网络访问

注释

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

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