你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn 。
本文内容
适用于: Azure Database for PostgreSQL 灵活服务器
本文介绍如何为 Azure Database for PostgreSQL 灵活服务器实例启用或禁用系统分配的托管标识。 还介绍了如何向实例添加或删除一个或多个用户分配的托管标识。
为现有服务器启用系统分配的托管标识
使用 Azure 门户 :
在门户中找到自己的服务器(如果尚未将其打开)。 实现此目的的一种方法是在搜索栏中键入服务器的名称。 当显示具有匹配名称的资源时,选择该资源。
在资源菜单上的“安全性”下,选择“标识”。 然后,在“系统分配的托管标识” 部分中,选中“启用” 选项。 选择“保存”。
该过程完成后,一个通知会通知你系统分配的托管标识已启用。
az postgres flexible-server update 命令尚不提供启用和禁用系统分配的托管标识的内置支持。 作为一种解决方法,你可以使用 az rest 命令直接调用服务器 - 更新 REST API。
# Enable system assigned managed identity
subscriptionId=<subscription-id>
resourceGroup=<resource-group>
server=<server>
result=$(az postgres flexible-server show --resource-group $resourceGroup --name $server --query "identity.type" --output tsv)
if [ -z "$result" ]; then
az rest --method patch --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DBforPostgreSQL/flexibleServers/$server?api-version=2024-08-01 --body '{"identity":{"type":"SystemAssigned"}}'
elif [ "$result" == "UserAssigned" ]; then
az rest --method patch --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DBforPostgreSQL/flexibleServers/$server?api-version=2024-08-01 --body '{"identity":{"type":"SystemAssigned,UserAssigned"}}'
else
echo "System Assigned Managed identity is already enabled."
fi
为现有服务器禁用系统分配的托管标识
使用 Azure 门户 :
在门户中找到自己的服务器(如果尚未将其打开)。 实现此目的的一种方法是在搜索栏中键入服务器的名称。 当显示具有匹配名称的资源时,选择该资源。
在资源菜单上的“安全性”下,选择“标识”。 然后,在“系统分配的托管标识” 部分中,选中“禁用” 选项。 选择“保存”。
该过程完成后,一个通知会通知你系统分配的托管标识已禁用。
az postgres flexible-server update 命令尚不提供启用和禁用系统分配的托管标识的内置支持。 作为一种解决方法,你可以使用 az rest 命令直接调用服务器 - 更新 REST API。
# Disable system assigned managed identity
subscriptionId=<subscription-id>
resourceGroup=<resource-group>
server=<server>
result=$(az postgres flexible-server show --resource-group $resourceGroup --name $server --query "identity.type" --output tsv)
if [ "$result" == "SystemAssigned" ]; then
az rest --method patch --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DBforPostgreSQL/flexibleServers/$server?api-version=2024-08-01 --body '{"identity":{"type":"None"}}'
elif [ "$result" == "SystemAssigned,UserAssigned" ]; then
echo "System Assigned Managed identity cannot be disabled as the instance has User Assigned Managed identities assigned."
else
echo "System Assigned Managed identity is already disabled."
fi
显示系统分配的托管标识
使用 Azure 门户 :
在门户中找到自己的服务器(如果尚未将其打开)。 实现此目的的一种方法是在搜索栏中键入服务器的名称。 当显示具有匹配名称的资源时,选择该资源。
在资源菜单中的“概述” 下,选择“JSON 视图” 。
在打开的“资源 JSON” 面板中,找到“标识” 属性,在其中可以找到系统分配托管标识的 principalId 和 tenantId 。
# Show the system assigned managed identity
resourceGroup=<resource-group>
server=<server>
az postgres flexible-server identity list --resource-group $resourceGroup --server-name $server --query "{principalId:principalId, tenantId:tenantId}" --output table
验证系统分配的托管标识
使用 Azure 门户 :
在门户中找到“企业应用程序” 服务(如果它尚未打开)。 实现此目的的一种方法是在搜索栏中输入其名称。 当显示具有匹配名称的服务时,选择该服务。
选择“应用程序类型 == 托管标识” 。
在“按应用程序名称或对象 ID 搜索”文本框中提供 Azure Database for PostgreSQL 灵活服务器实例的名称。
# Verify the system assigned managed identity
server=<server>
az ad sp list --display-name $server
将用户分配的托管标识关联到现有服务器
本文假定你创建了要关联到 Azure Database for PostgreSQL 灵活服务器现有实例的用户分配的托管标识。
有关详细信息,请参阅如何管理 Microsoft Entra ID 中的用户分配的托管标识 。
可以根据需要将任意数量的用户分配的托管标识关联到 Azure Database for PostgreSQL 灵活服务器的实例。
不支持通过门户将用户分配的托管标识关联到 Azure Database for PostgreSQL 灵活服务器的实例。
可以通过 az postgres flexible-server identity assign 命令将用户分配的标识关联到 Azure Database for PostgreSQL 灵活服务器的实例。
# Associate user assigned managed identity
resourceGroup=<resource-group>
server=<server>
identity=<identity>
az postgres flexible-server identity assign --resource-group $resourceGroup --server-name $server --identity $identity
将用户分配的托管标识与现有服务器取消关联
该服务支持将与 Azure Database for PostgreSQL 灵活服务器实例关联的用户分配的托管标识取消关联。
该规则的例外是任何被指定为应该用于访问加密密钥的用户分配的托管标识。 这种情况仅可能发生在使用客户管理的密钥进行数据加密 部署的服务器上。
不支持通过门户将用户分配的托管标识与 Azure Database for PostgreSQL 灵活服务器的实例取消关联。
可以通过 az postgres flexible-server identity remove 命令将用户分配的标识与 Azure Database for PostgreSQL 灵活服务器的实例取消关联。
# Dissociate user assigned managed identity
resourceGroup=<resource-group>
server=<server>
identity=<identity>
az postgres flexible-server identity remove --resource-group $resourceGroup --server-name $server --identity $identity
如果尝试删除用户分配的用于访问数据加密密钥的托管标识,则会出现以下错误:
Cannot remove identity <identity> because it's used for data encryption.
显示关联的用户分配的托管标识
使用 Azure 门户 :
在门户中找到自己的服务器(如果尚未将其打开)。 实现此目的的一种方法是在搜索栏中键入服务器的名称。 当显示具有匹配名称的资源时,选择该资源。
在资源菜单中的“概述” 下,选择“JSON 视图” 。
在打开的“资源 JSON” 面板中,找到“标识” 属性,在其中可以找到 userAssignedIdentities 。 该对象由一个或多个键/值对组成,其中每个键表示一个用户分配的托管标识的资源标识符,其对应的值由与该托管标识关联的 principalId 和 clientId 组成。
# List all associated user assigned managed identities
resourceGroup=<resource-group>
server=<server>
az postgres flexible-server identity list --resource-group $resourceGroup --server-name $server --query "userAssignedIdentities"
相关内容