适用于:
Azure Database for PostgreSQL 灵活服务器
本文提供如何为 Azure Database for PostgreSQL 灵活服务器配置数据加密的分步说明。
重要
只能在部署服务器时选择是使用系统管理还是客户管理的加密密钥对 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 Key Vault(如果尚未创建一个密钥存储)。 请确保满足 要求。 此外,在配置密钥存储之前以及创建密钥之前,请遵循 建议 ,并将所需的权限分配给用户分配的托管标识。 如果服务器启用了异地冗余备份,则需要创建第二个密钥存储。 这第二个密钥存储用于保存数据加密密钥,复制到服务器配对区域的备份使用该密钥进行加密。
注释
用于保存数据加密密钥的密钥存储必须部署在与服务器相同的区域中。 如果服务器启用了异地备份冗余,则必须在服务器的 配对区域中 创建保留异地冗余备份的数据加密密钥的密钥存储。
在密钥存储中创建一个密钥。 如果服务器启用了异地冗余备份,则每个密钥存储都需要一个密钥。 使用其中一个密钥加密所有服务器数据,包括所有系统和用户数据库、临时文件、服务器日志、预写日志段和备份。 使用第二个密钥,我们将加密通过服务器的 配对区域 异步复制的备份副本。
在预配新的 Azure Database for PostgreSQL 灵活服务器期间,数据加密在 “安全 ”选项卡中进行配置。
在“数据加密密钥”中,选中“客户管理的密钥”单选按钮。
如果要将异地冗余备份存储与服务器一起预配,则“安全性”选项卡方面略有变化,因为服务器使用两个单独的加密密钥。 一个用于部署服务器的主要区域,另一个用于将服务器备份异步复制到的配对区域。
在“用户分配的托管标识”中,选择“更改标识”。
在用户分配的托管标识列表中,选择希望服务器用来访问 Azure Key Vault 中存储的数据加密密钥的那个托管标识。
选择 “添加”。
选择“选择密钥”。
订阅会自动填充为要在其上创建服务器的订阅的名称。 保存数据加密密钥的密钥存储必须与服务器位于同一订阅中。
展开 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 门户:
选择 Azure Database for PostgreSQL 灵活服务器。
在资源菜单中的 “安全性”下,选择 “数据加密”。
若要更改服务器访问密钥所在的密钥存储时使用的用户分配的托管标识,请展开“用户分配的托管标识”下拉列表,然后选择任何可用的标识。
注释
组合框中仅显示分配给你的 Azure Database for PostgreSQL 灵活服务器的身份。
为了保持区域复原能力,我们建议在服务器所在的同一区域中选择用户托管标识,尽管这并非强制性操作。 如果服务器启用了异地备份冗余,我们建议用于访问异地冗余备份的数据加密密钥的第二个用户托管标识存在于服务器的 配对区域中 。
如果要用于访问数据加密密钥的用户分配的托管标识未分配给 Azure Database for PostgreSQL 灵活服务器,并且其甚至不是在 Microsoft Entra ID 中有相应对象的 Azure 资源,则可以通过选择“创建”来创建它。
在“创建用户分配的托管标识”面板中,填写要创建的用户分配的托管标识的详细信息,该标识会自动分配给 Azure Database for PostgreSQL 灵活服务器来访问数据加密密钥。
如果要用于访问数据加密密钥的用户分配的托管标识未分配给 Azure Database for PostgreSQL 灵活服务器,但它是在 Microsoft Entra ID 中有相应对象的 Azure 资源,则可以通过选择“选择”来分配它。
在用户分配的托管标识列表中,选择希望服务器用来访问 Azure Key Vault 中存储的数据加密密钥的那个托管标识。
选择 “添加”。
如果轮换密钥,或者要使用其他密钥,则必须更新 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 (https://learn.docs.azure.cn/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 灵活服务器的用户分配的托管标识。
相关内容