本文內容
適用於: 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
在本文中,您可以瞭解如何為 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例啟用或停用系統指派的受控識別。 您也可以瞭解如何將一或多個使用者指派的受控識別新增或移除至您的實例。
為現有伺服器啟用系統指派的受控識別
使用 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 入口網站 :
如果您未開啟企業應用程式 服務,請在入口網站中找出它。 其中一種方法是在搜尋列中輸入其名稱。 顯示具有相符名稱的服務時,請加以選取。
選擇 [應用程式類型 == 受控識別 ]。
在 [依應用程式名稱或對象標識符搜尋] 文字框中,提供您 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器 實例的名稱。
# Verify the system assigned managed identity
server=<server>
az ad sp list --display-name $server
將使用者指派的受控識別與現有伺服器產生關聯
本文假設您已建立使用者指派的受控識別,而您想要與現有的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例產生關聯。
如需詳細資訊,請參閱 如何在 Microsoft Entra 標識碼 中管理使用者指派的受控識別。
您可以盡可能將使用者指派的受控識別與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的實例產生關聯。
不支援透過入口網站將使用者指派的受控識別與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的實例產生關聯。
您可以透過 az postgres flexible-server identity assign 命令,將使用者指派的身分識別與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的實例產生關聯。
# 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
將使用者指派的受控識別與現有伺服器解除關聯
服務支援將使用者指派的受控識別解除關聯,這些識別與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的實例相關聯。
該規則的例外狀況是任何使用者指派的受控識別,這些識別會指定為應該用來存取加密密鑰的受控識別。 只有在使用客戶管理的密鑰來部署 數據加密的伺服器上,才可能發生這種情況。
不支援透過入口網站將使用者指派的受控識別與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的實例解除關聯。
您可以透過 az postgres flexible-server identity remove 命令,將使用者指派的身分識別與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的實例解除關聯。
# 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"
相關內容