本文提供为 Azure Database for PostgreSQL 灵活服务器配置数据加密的分步说明。
重要
可以决定仅在创建服务器时使用系统托管密钥或客户托管密钥进行数据加密。 做出该决定并创建服务器后,不能在两个选项之间切换。
本文介绍如何创建新服务器并配置其数据加密选项。 对于使用客户托管加密密钥进行数据加密的现有服务器,你将了解:
- 如何为服务选择其他用户分配的托管标识来访问加密密钥。
- 如何指定其他加密密钥,或者如何轮换当前用于数据加密的加密密钥。
若要了解Azure Database for PostgreSQL上下文中的数据加密,请参阅数据加密。
使用 Azure 门户:
在预配新的Azure Database for PostgreSQL灵活服务器期间,请在“安全”选项卡中配置数据加密。对于数据加密密钥,请选择“服务管理的密钥”选项。
如果要将异地冗余备份存储与服务器一起预配,则“安全性”选项卡方面略有变化,因为服务器使用两个单独的加密密钥。 一个密钥用于你部署服务器的主区域,另一个密钥用于服务器备份被异步复制到的配对区域。
可以使用系统分配的加密密钥启用数据加密,同时使用 az postgres flexible-server create 命令预配新服务器。
az postgres flexible-server create \
--resource-group <resource_group> \
--name <server> ...
注释
上一个命令中没有特殊参数,用于指定必须使用系统分配的密钥创建服务器才能进行数据加密。 使用系统分配的密钥进行数据加密是默认选项。
此外,必须使用其他参数完成该命令,其状态和值因配置预配服务器的其他功能的方式而异。
使用 Azure 门户:
-
如果还没有托管标识,请创建用户分配的托管标识。 如果服务器启用了异地冗余备份,则需要创建两个不同的标识。 这些身份中的每一个都可访问这两个数据加密密钥中的每一个。
注释
虽然这不是必需的,但为了保持区域复原能力,请在与服务器相同的区域中创建用户分配的托管标识。 如果服务器启用了异地备份冗余,请在服务器的 配对区域中 创建第二个用户托管标识。
- 如果尚未创建密钥存储,请创建Azure 密钥保管库。 请确保满足 要求。 此外,请在配置密钥存储之前以及创建密钥并将所需的权限分配给用户分配的托管标识之前,按照建议进行操作。 如果服务器启用了异地冗余备份,则需要创建第二个密钥存储。 第二个密钥存储保存着用于加密复制到服务器配对区域的备份的数据加密密钥。
注释
必须部署密钥存储,以便将数据加密密钥保留在服务器所在的同一区域中。 如果服务器启用了异地备份冗余,则必须创建密钥存储,用于在服务器的 配对区域中 保留异地冗余备份的数据加密密钥。
在密钥存储中创建密钥。 如果服务器启用了异地冗余备份,则每个密钥存储都需要一个密钥。 通过使用其中一个密钥,可以加密服务器的所有数据(包括所有系统和用户数据库、临时文件、服务器日志、预写日志段和备份)。 通过使用第二个密钥,可以加密通过服务器的 配对区域 异步复制的备份副本。
在预配新的Azure Database for PostgreSQL灵活服务器期间,请在“安全”选项卡中配置数据加密。对于数据加密密钥,请选择“客户管理的密钥”单选按钮。
如果要将异地冗余备份存储与服务器一起预配,则“安全性”选项卡方面略有变化,因为服务器使用两个单独的加密密钥。 一个密钥用于你部署服务器的主区域,另一个密钥用于服务器备份被异步复制到的配对区域。
在“用户分配的托管标识”中,选择“更改标识”。
从用户分配的托管标识列表中,选择希望服务器用来访问存储在Azure 密钥保管库中的数据加密密钥。
选择 并添加。
选择“选择密钥”。
订阅会自动填充为要在其上创建服务器的订阅的名称。 保存数据加密密钥的密钥存储必须与服务器位于同一订阅中。
展开 Key Vault,然后选择数据加密密钥所在的实例。
注释
展开下拉框时,它会显示“无可用项”。 需要几秒钟时间才能列出部署在服务器所在的同一区域中的密钥保管库的所有实例。
展开“密钥”,然后选择要用于数据加密的密钥的名称。
展开 “版本”,然后选择要用于数据加密的密钥版本的标识符。
选择 选择。
配置新服务器的所有其他设置,然后选择“查看 + 创建”。
使用 az postgres flexible-server create 命令通过用户分配的加密密钥启用数据加密,同时预配新服务器。
如果服务器未启用异地冗余备份:
az postgres flexible-server create \
--resource-group <resource_group> \
--name <server> \
--geo-redundant-backup Disabled \
--identity <managed_identity_to_access_primary_encryption_key> \
--key <resource_identifier_of_primary_encryption_key> ...
注释
需要提供其他参数才能完成上一个命令。 这些参数的存在和值因配置预配服务器的其他功能的方式而异。
如果服务器已启用异地冗余备份:
az postgres flexible-server create \
--resource-group <resource_group> \
--name <server> \
--geo-redundant-backup Enabled \
--identity <managed_identity_to_access_primary_encryption_key> \
--key <resource_identifier_of_primary_encryption_key> \
--backup-identity <managed_identity_to_access_geo_backups_encryption_key> \
--backup-key <resource_identifier_of_geo_backups_encryption_key> ...
注释
需要提供其他参数才能完成上一个命令。 这些参数的存在和值因配置预配服务器的其他功能的方式而异。
决定是在创建服务器时使用系统托管密钥还是客户托管密钥进行数据加密。 做出该决定并创建服务器后,不能在两个选项之间切换。 如果想要从一个选项更改为另一选项,则只能将服务器的现有备份还原到新的服务器。 配置还原时,可以更改新服务器的数据加密配置。
对于使用客户托管密钥进行数据加密部署的现有服务器,可以进行多个配置更改。 可以更改用于加密的密钥引用,以及该服务用于访问密钥存储中保存的密钥时所使用的用户分配托管标识引用。
你必须更新 Azure Database for PostgreSQL 灵活服务器对某个密钥的引用:
- 当存储在密钥保管库中的密钥以手动或自动方式轮换,且你的 Azure Database for PostgreSQL 灵活服务器指向该密钥的特定版本时。
- 当你想要使用存储在不同密钥存储中的相同或不同密钥时。
每当你想要改用其他标识时,都必须更新 Azure Database for PostgreSQL 灵活服务器用于访问加密密钥的用户分配托管标识。
使用 Azure 门户:
选择您的“Azure Database for PostgreSQL”灵活服务器。
在资源菜单中的 “安全 ”部分下,选择 “数据加密”。
若要更改服务器用于访问密钥存储的用户分配托管标识,请展开 “用户分配的托管标识 ”下拉列表,然后选择任何可用的标识。
注释
组合框中仅显示你的 Azure Database for PostgreSQL 灵活服务器所分配的标识。
虽然这不是必需的,但为了保持区域复原能力,请选择与服务器位于同一区域的用户分配的托管标识。 如果服务器启用了异地备份冗余,则用于访问异地冗余备份的数据加密密钥的第二个用户托管标识应存在于服务器的 配对区域中 。
如果要用于访问数据加密密钥的用户分配托管标识尚未分配给你的 Azure Database for PostgreSQL 灵活服务器,且未作为 Azure 资源存在,也未在 Microsoft Entra ID 中具有相应对象,请选择 创建 来创建它。
在“创建用户分配的托管标识”面板中,输入要创建的用户分配的托管标识的详细信息,并将其自动分配给Azure Database for PostgreSQL灵活服务器以访问数据加密密钥。
如果用户分配的用于访问数据加密密钥的托管标识未分配给Azure Database for PostgreSQL灵活服务器,但它作为Azure资源存在于Microsoft Entra ID中的相应对象,请通过选择“选择”来分配它。
从用户分配的托管标识列表中,选择希望服务器用来访问存储在Azure 密钥保管库中的数据加密密钥。
选择 并添加。
如果轮换密钥,或者想要使用不同的密钥,请更新Azure Database for PostgreSQL灵活服务器,使其指向新的密钥版本或新密钥。 为此,请复制密钥的资源标识符,并将其粘贴到 “密钥标识符 ”框中。
如果访问 Azure 门户的用户有权访问密钥存储中存储的密钥,则可以使用其他方法选择新密钥或新密钥版本。 为此,请在“密钥选择方法”中,选择“选择密钥”单选按钮。
选择“选择密钥”。
订阅会自动填充为要在其上创建服务器的订阅的名称。 保存数据加密密钥的密钥存储必须与服务器位于同一订阅中。
展开 Key Vault,然后选择数据加密密钥所在的实例。
注释
展开下拉框时,它会显示“无可用项”。 需要几秒钟时间才能列出部署在服务器所在的同一区域中的密钥保管库的所有实例。
展开“密钥”,然后选择要用于数据加密的密钥的名称。
展开 “版本”,然后选择要用于数据加密的密钥版本的标识符。
选择 选择。
对更改感到满意时,请选择“ 保存”。
使用 az postgres flexible-server update 命令,为现有服务器配置使用用户分配的加密密钥的数据加密。
az postgres flexible-server update \
--resource-group <resource_group> \
--name <server> \
--identity <managed_identity_to_access_primary_encryption_key> \
--key <resource_identifier_of_primary_encryption_key> ...
注释
可能需要将其他参数包含在上一个命令中。 这些参数的存在和值取决于你希望如何配置现有服务器的其他功能。
无论是仅更改用于访问密钥的用户分配的托管标识,还是只更改用于数据加密的密钥,还是要同时更改两者,都必须同时提供参数 --identity 和 --key (或 --backup-identity 异 --backup-key 地冗余备份)。 如果仅提供一个参数,则会收到以下任何错误:
User assigned identity and keyvault key need to be provided together. Please provide --identity and --key together.
User assigned identity and keyvault key need to be provided together. Please provide --backup-identity and --backup-key together.
如果使用 --key 参数指定的密钥(对于异地冗余备份,则为 --backup-key)不存在,或者传递给 --identity 参数的用户分配托管标识的资源标识符(对于异地冗余备份,则为 --backup-identity)没有访问该密钥所需的权限,则会出现以下错误:
Code: AzureKeyVaultKeyNameNotFound
Message: The operation could not be completed because the Azure Key Vault Key name '<key_vault_resource>' does not exist or User Assigned Identity does not have Get access to the Key (/postgresql/flexible-server/concepts-data-encryption#requirements-for-configuring-data-encryption-for-azure-database-for-postgresql-flexible-server).
如果服务器启用了异地冗余备份,则可以配置用于加密异地冗余备份的密钥,以及用于访问该密钥的标识。 为此,请使用 --backup-identity 和 --backup-key 参数。
az postgres flexible-server update \
--resource-group <resource_group> \
--name <server> \
--backup-identity <managed_identity_to_access_georedundant_encryption_key> \
--backup-key <resource_identifier_of_georedundant_encryption_key> ...
如果将参数 --backup-identity 和 --backup-key 传递给 az postgres flexible server update 命令,并指定一个未启用异地冗余备份的现有服务器,则会出现以下错误:
Geo-redundant backup is not enabled. You cannot provide Geo-location user assigned identity and keyvault key.
如果将标识添加到 --identity 和 --backup-identity 参数中,并且这些标识有效,系统会自动将它们添加到与你的 Azure Database for PostgreSQL 灵活服务器关联的用户分配的托管标识列表中。 即使命令稍后失败并出现其他错误,也会出现此操作。 在这种情况下,你可能想要使用 az postgres flexible-server identity 命令列出、分配或删除分配给 Azure Database for PostgreSQL 灵活服务器的用户分配的托管标识。 若要详细了解如何在Azure Database for PostgreSQL灵活服务器中配置用户分配的托管标识,请参阅将用户分配的托管标识关联到现有服务器,将用户分配的托管标识取消关联到现有服务器,并显示关联的用户分配的托管标识。
相关内容