在 Azure Cosmos DB for PostgreSQL 中使用客户管理的密钥启用数据加密

适用对象: Azure Cosmos DB for PostgreSQL(由 PostgreSQL 的 Citus 数据库扩展提供支持)

先决条件

  • 现有的一个 Azure Cosmos DB for PostgreSQL 帐户。

使用客户管理的密钥启用数据加密

重要

在将部署 Azure Cosmos DB for PostgreSQL 群集的同一区域中创建以下所有资源。

  1. 创建用户分配的托管标识。 目前,Azure Cosmos DB for PostgreSQL 仅支持用户分配的托管标识。

  2. 创建 Azure 密钥保管库,并使用以下密钥权限向创建的用户分配的托管标识添加访问策略:获取、解包密钥和包装密钥。

  3. 在密钥保管库(支持的密钥类型:RSA 2048、3071、4096)中生成密钥。

  4. 在创建 Azure Cosmos DB for PostgreSQL 群集期间选择“客户管理的密钥”加密选项,并选择适当的用户分配的托管标识、密钥保管库和步骤 1、2 和 3 中创建的密钥。

详细步骤

用户分配的托管标识

  1. 在全局搜索框中搜索“托管标识”

    Azure 门户中托管标识的屏幕截图。

  2. 在 Azure Cosmos DB for PostgreSQL 群集所在的同一区域中创建新的用户分配的托管标识。

    Azure 门户中用户分配的托管标识页的屏幕截图。

详细了解用户分配的托管标识

密钥保管库

将客户管理的密钥与 Azure Cosmos DB for PostgreSQL 结合使用时,需要在计划用于托管加密密钥的 Azure Key Vault 实例上设置两个属性:“软删除”和“清除保护”。

  1. 如果创建新的 Azure Key Vault 实例,请在创建过程中启用以下属性:

    密钥保管库属性的屏幕截图。

  2. 如果使用的是现有 Azure Key Vault 实例,则可以通过查看 Azure 门户中的“属性”部分来验证是否已启用这些属性。 如果未启用任一属性,请参阅以下文章中的“启用软删除”和“启用清除保护”部分。

  3. 密钥保管库的“已删除保管库的保留天数”必须设置为 90 天。 如果现有的密钥保管库配置为了较小的数字,则需要创建一个新的密钥保管库,因为创建后无法对此设置进行修改。

    重要

    Azure Key Vault 实例必须允许从所有网络进行公共访问。

将访问策略添加到密钥保管库

  1. 在 Azure 门户中,转到你打算用来托管加密密钥的 Azure Key Vault 实例。 从左侧菜单中选择“访问配置”。 请确保在“权限模型”下选择了“保管库访问策略”,然后选择“转到访问策略”。

    密钥保管库访问策略的屏幕截图。

  2. 选择“+ 新建”。

  3. 在“密钥权限”下拉菜单中的“权限”选项卡中,选择“获取”、“解包密钥”和“包装密钥”权限。

    密钥保管库的权限设置的屏幕截图。

  4. 在“主体”选项卡中,选择在先决条件步骤中创建的“用户分配的托管标识”。

  5. 导航到“查看+创建”,然后选择“创建”。

创建/导入密钥

  1. 在 Azure 门户中,转到你打算用来托管加密密钥的 Azure Key Vault 实例。

  2. 从左侧菜单中选择“密钥”,然后选择“+生成/导入”。

    密钥生成页的屏幕截图。

  3. 用于加密 DEK 的客户管理的密钥只能是非对称的 RSA 密钥类型。 支持所有 RSA 密钥大小 2048、3072 和 4096。

  4. 密钥激活日期(如果已设置)必须是过去的日期和时间。 到期日期(若已设置)必须是将来的日期和时间。

  5. 密钥必须处于“已启用”状态。

  6. 若要将现有密钥导入 Key Vault,请确保以受支持的文件格式(.pfx.byok.backup)提供该密钥。

  7. 如果要手动轮换密钥,则至少 24 小时内不应删除旧密钥版本。

在预配新群集期间启用 CMK 加密

  1. 在预配新的 Azure Cosmos DB for PostgreSQL 群集期间,在“基本信息”和“网络”选项卡下提供必要的信息后,导航到“加密”选项卡“加密配置”页的屏幕截图。

  2. 在“数据加密密钥”选项下选择“客户管理的密钥”

  3. 选择在上一部分中创建的用户分配的托管标识。

  4. 选择在上一步中创建的密钥保管库,该密钥保管库在上一步中选择了对用户管理的标识的访问策略。

  5. 选择在上一步中创建的密钥,然后选择“查看 + 创建”

  6. 创建群集后,通过在 Azure 门户中导航到 Azure Cosmos DB for PostgreSQL 群集的“数据加密”边栏选项卡,验证 CMK 加密是否处于启用状态“数据加密”选项卡的屏幕截图。

注意

数据加密只能在创建新群集期间配置,不能在现有群集上更新。 更新现有群集上的加密配置的一种方法是执行群集还原,并在创建新还原的群集期间配置数据加密。

高可用性

在主群集上启用 CMK 加密后,主群集的密钥会自动加密所有 HA 备用节点。

通过执行 PITR 更改加密配置

在执行群集还原操作(PITR - 时间点还原)时,可以将加密配置从服务托管加密更改为客户管理的加密,反之亦然。

  1. 导航到“数据加密”边栏选项卡,然后选择“启动还原操作”。 或者,可以通过选择“概述”边栏选项卡中的“还原”选项来执行 PITRPITR 的屏幕截图。

  2. 可以从群集还原页的“加密”选项卡中更改/配置数据加密。

在 Key Vault 中监视客户管理的密钥

若要监视数据库状态并在透明数据加密保护程序访问权限丢失时发出警报,请配置以下 Azure 功能:

  • Azure 资源运行状况:在与数据库的第一次连接遭到拒绝后,已失去客户密钥访问权限的无法访问的数据库将显示为“无法访问”。

  • 活动日志:对密钥保管库中客户管理的密钥访问失败时,活动日志中会添加相应条目。 如果为这些事件创建警报,就可尽快恢复访问。

  • 操作组:定义这些组,使其根据首选项向你发送通知和警报。

后续步骤