使用 Azure 门户对 Azure Database for PostgreSQL(单一服务器)进行数据加密

了解如何使用 Azure 门户来设置和管理 Azure Database for PostgreSQL(单一服务器)进行数据加密的操作。

Azure CLI 的先决条件

  • 必须有一个 Azure 订阅,并且是该订阅的管理员。

  • 在 Azure Key Vault 中,创建密钥保管库和用于客户托管密钥的密钥。

  • 该密钥保管库必须具有以下属性才能用作客户托管的密钥:

    • 软删除

      az resource update --id $(az keyvault show --name \ <key_vault_name> -test -o tsv | awk '{print $1}') --set \ properties.enableSoftDelete=true
      
    • 清除保护

      az keyvault update --name <key_vault_name> --resource-group <resource_group_name>  --enable-purge-protection true
      
  • 该密钥必须具有以下属性才能用作客户管理的密钥:

    • 无过期日期
    • 未禁用
    • 能够执行“Get”、“Wrap Key”和“Unwrap”操作

为密钥操作设置正确的权限

  1. 在 Key Vault 中,选择“访问策略” > “添加访问策略”。

    Key Vault 的屏幕截图,突出显示了“访问策略”和“添加访问策略”

  2. 选择“密钥权限”,然后选择“Get”、“Wrap”、“Unwrap”和“Principal”(PostgreSQL 服务器的名称)。 如果在现有主体列表中找不到你的服务器主体,则需要注册服务器主体。 如果你首次尝试设置数据加密并且失败,系统将提示你注册服务器主体。

    访问策略概述

  3. 选择“保存”。

为 Azure Database for PostgreSQL 单一服务器设置数据加密

  1. 在 Azure Database for PostgreSQL 中,选择“数据加密”以设置客户托管的密钥。

    Azure Database for PostgreSQL 的屏幕截图,其中突出显示了“数据加密”

  2. 可以选择密钥保管库和密钥对,也可以输入密钥标识符。

    Azure Database for PostgreSQL 的屏幕截图,其中突出显示了“数据加密”选项

  3. 选择“保存”。

  4. 为确保所有文件(包括临时文件)完全加密,请重新启动服务器。

对还原或副本服务器使用数据加密

在使用 Key Vault 中存储的客户管理的密钥对 Azure Database for PostgreSQL 单一服务器进行加密后,还将所有新创建的服务器副本进行加密。 可通过本地或异地还原操作,或通过副本(本地/跨区域)操作来创建这个新副本。 因此,对于加密的 PostgreSQL 服务器,可以使用以下步骤来创建加密的还原服务器。

  1. 在服务器上,选择“概述” > “还原”。

    Azure Database for PostgreSQL 的屏幕截图,其中突出显示了“概述”和“还原”

    或对于启用了复制的服务器,在“设置”标题下,选择“复制”。

    Azure Database for PostgreSQL 的屏幕截图,其中突出显示了“复制”

  2. 还原操作完成后,创建的新服务器将用主服务器的密钥进行加密。 但服务器上的功能和选项已禁用,并且服务器不可访问。 这会阻止任何数据操作,因为尚未向新服务器的标识授予访问密钥保管库的权限。

    Azure Database for PostgreSQL 的屏幕截图,其中突出显示了“不可访问状态”

  3. 要使服务器可访问,请重新验证已还原服务器上的密钥。 选择“数据加密” > “重新验证密钥”。

    备注

    第一次尝试重新验证时将失败,因为需要为新服务器的服务主体授予密钥保管库的访问权限。 要生成服务主体,请选择“重新验证密钥”,虽然将显示错误,但会生成服务主体。 之后,请参阅本文前面的这些步骤

    Azure Database for PostgreSQL 的屏幕截图,其中突出显示了“重新验证步骤”

    你必须授予密钥保管库对新服务器的访问权限。

  4. 注册服务主体后再次重新验证密钥,服务器将恢复其正常功能。

    Azure Database for PostgreSQL 屏幕截图,显示功能已经恢复

后续步骤

有关数据加密的详细信息,请参阅使用客户托管的密钥进行的 Azure Database for PostgreSQL 单一服务器数据加密