Share via


使用 Azure CLI 在虛擬機擴展集上設定 Azure 資源的受控識別

Azure 資源的受控識別是 Microsoft Entra ID 的功能。 每個支援適用於 Azure 資源的受控識別 Azure 服務均受限於其本身的時間表。 開始之前,請務必檢閱 資源受控識別的可用性 狀態和 已知問題

Azure 資源受控識別會在 Microsoft Entra ID 中為 Azure 服務提供自動受控識別。 您可以使用此身分識別來向任何支援 Microsoft Entra 驗證的服務進行驗證,不需要任何您程式碼中的認證。

在本文中,您將瞭解如何使用 Azure CLI,在 Azure 虛擬機擴展集上針對 Azure 資源作業執行下列受控識別:

  • 在 Azure 虛擬機擴展集上啟用和停用系統指派的受控識別
  • 在 Azure 虛擬機擴展集上新增和移除使用者指派的受控識別

如果您還沒有 Azure 帳戶, 請先註冊免費帳戶 ,再繼續進行。

必要條件

系統指派的受控識別

在本節中,您將瞭解如何使用 Azure CLI 為 Azure 虛擬機擴展集啟用和停用系統指派的受控識別。

在建立 Azure 虛擬機擴展集期間啟用系統指派的受控識別

若要建立已啟用系統指派受控識別的虛擬機擴展集:

  1. 使用 az group create,為虛擬機擴展集及其相關資源的內含專案和部署建立資源群組。 如果您已經有想要改用的資源群組,則可以略過此步驟:

    az group create --name myResourceGroup --location westus
    
  2. 建立 虛擬機擴展集。 下列範例會建立名為 myVMSS 的 虛擬機擴展集,其中包含系統指派的受控識別,如 參數所要求 --assign-identity ,且具有指定的 --role--scope--admin-username--admin-password 參數會指定虛擬機器登入的系統管理使用者名稱和密碼帳戶。 根據您的環境更新這些值:

    az vmss create --resource-group myResourceGroup --name myVMSS --image win2016datacenter --upgrade-policy-mode automatic --custom-data cloud-init.txt --admin-username azureuser --admin-password myPassword12 --assign-identity --generate-ssh-keys --role contributor --scope mySubscription
    

在現有的 Azure 虛擬機擴展集上啟用系統指派的受控識別

如果您需要 在現有的 Azure 虛擬機擴展集上啟用 系統指派的受控識別:

az vmss identity assign -g myResourceGroup -n myVMSS

從 Azure 虛擬機擴展集停用系統指派的受控識別

如果您的虛擬機擴展集不再需要系統指派的受控識別,但仍需要使用者指派的受控識別,請使用下列命令:

az vmss update -n myVM -g myResourceGroup --set identity.type='UserAssigned' 

如果您的虛擬機不再需要系統指派的受控識別,而且它沒有使用者指派的受控識別,請使用下列命令:

注意

此值 none 會區分大小寫。 它必須是小寫。

az vmss update -n myVM -g myResourceGroup --set identity.type="none"

使用者指派的受控識別

在本節中,您將瞭解如何使用 Azure CLI 來啟用和移除使用者指派的受控識別。

在建立虛擬機擴展集期間指派使用者指派的受控識別

本節將逐步引導您建立虛擬機擴展集,並將使用者指派的受控識別指派給虛擬機擴展集。 如果您已經有想要使用的虛擬機擴展集,請略過本節,然後繼續進行下一節。

  1. 如果您已經有想要使用的資源群組,則可以略過此步驟。 使用 az group create 建立資源群組,以包含和部署使用者指派的受控識別。 請務必將 和 <LOCATION> 參數值取代<RESOURCE GROUP>為您自己的值。 :

    az group create --name <RESOURCE GROUP> --location <LOCATION>
    
  2. 使用 az identity create 建立使用者指派的受控識別。 -g 參數會指定建立使用者指派受控識別的資源群組,而 -n 參數會指定其名稱。 請務必將 和 <USER ASSIGNED IDENTITY NAME> 參數值取代<RESOURCE GROUP>為您自己的值:

    重要

    當您建立使用者指派的受控識別時,名稱必須以字母或數字開頭,而且可能包含英數位元、連字元(-) 和底線的組合(_)。 若要讓虛擬機器或虛擬機器擴展集的指派正常運作,名稱長度上限為 24 個字元。 如需詳細資訊,請參閱 常見問題和已知問題

    az identity create -g <RESOURCE GROUP> -n <USER ASSIGNED IDENTITY NAME>
    

    回應包含所建立之使用者指派受控識別的詳細數據,如下所示。 在下列步驟中會使用指派給使用者指派受控識別的資源 id 值。

    {
         "clientId": "73444643-8088-4d70-9532-c3a0fdc190fz",
         "clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>/credentials?tid=5678&oid=9012&aid=73444643-8088-4d70-9532-c3a0fdc190fz",
         "id": "/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>",
         "location": "westcentralus",
         "name": "<USER ASSIGNED IDENTITY NAME>",
         "principalId": "e5fdfdc1-ed84-4d48-8551-fe9fb9dedfll",
         "resourceGroup": "<RESOURCE GROUP>",
         "tags": {},
         "tenantId": "733a8f0e-ec41-4e69-8ad8-971fc4b533bl",
         "type": "Microsoft.ManagedIdentity/userAssignedIdentities"    
    }
    
  3. 建立 虛擬機擴展集。 下列範例會建立與新的使用者指派受控識別相關聯的虛擬機擴展集,如 參數所 --assign-identity 指定,且具有指定的 --role--scope。 請務必將 <RESOURCE GROUP><VMSS NAME>、、、<PASSWORD><USER NAME><USER ASSIGNED IDENTITY><ROLE><SUBSCRIPTION> 參數值取代為您自己的值。

    az vmss create --resource-group <RESOURCE GROUP> --name <VMSS NAME> --image <SKU Linux Image> --admin-username <USER NAME> --admin-password <PASSWORD> --assign-identity <USER ASSIGNED IDENTITY> --role <ROLE> --scope <SUBSCRIPTION>
    

將使用者指派的受控識別指派給現有的虛擬機擴展集

  1. 使用 az identity create 建立使用者指派的受控識別。 -g 參數會指定建立使用者指派受控識別的資源群組,而 -n 參數會指定其名稱。 請務必將 和 <USER ASSIGNED IDENTITY NAME> 參數值取代<RESOURCE GROUP>為您自己的值:

    az identity create -g <RESOURCE GROUP> -n <USER ASSIGNED IDENTITY NAME>
    

    回應包含所建立之使用者指派受控識別的詳細數據,如下所示。

    {
         "clientId": "73444643-8088-4d70-9532-c3a0fdc190fz",
         "clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY >/credentials?tid=5678&oid=9012&aid=73444643-8088-4d70-9532-c3a0fdc190fz",
         "id": "/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY>",
         "location": "westcentralus",
         "name": "<USER ASSIGNED IDENTITY>",
         "principalId": "e5fdfdc1-ed84-4d48-8551-fe9fb9dedfll",
         "resourceGroup": "<RESOURCE GROUP>",
         "tags": {},
         "tenantId": "733a8f0e-ec41-4e69-8ad8-971fc4b533bl",
         "type": "Microsoft.ManagedIdentity/userAssignedIdentities"    
    }
    
  2. 將使用者指派的受控識別指派 給虛擬機擴展集。 請務必將 和 <VIRTUAL MACHINE SCALE SET NAME> 參數值取代<RESOURCE GROUP>為您自己的值。 <USER ASSIGNED IDENTITY>是使用者指派的身分識別資源name屬性,如上一個步驟中所建立:

    az vmss identity assign -g <RESOURCE GROUP> -n <VIRTUAL MACHINE SCALE SET NAME> --identities <USER ASSIGNED IDENTITY>
    

從 Azure 虛擬機擴展集移除使用者指派的受控識別

若要 從虛擬機器擴充集移除 使用者指派的受控識別,請使用 az vmss identity remove。 如果這是指派給虛擬機擴展集的唯一使用者指派受控識別, UserAssigned 則會從識別類型值中移除。 請務必將 和 <VIRTUAL MACHINE SCALE SET NAME> 參數值取代<RESOURCE GROUP>為您自己的值。 <USER ASSIGNED IDENTITY>是使用者指派的受控識別 name 的 屬性,可以使用 在虛擬機擴展集az vmss identity show的身分識別區段中找到:

az vmss identity remove -g <RESOURCE GROUP> -n <VIRTUAL MACHINE SCALE SET NAME> --identities <USER ASSIGNED IDENTITY>

如果您的虛擬機擴展集沒有系統指派的受控識別,而且您想要從中移除所有使用者指派的受控識別,請使用下列命令:

注意

此值 none 會區分大小寫。 它必須是小寫。

az vmss update -n myVMSS -g myResourceGroup --set identity.type="none" identity.userAssignedIdentities=null

如果您的虛擬機擴展集同時具有系統指派和使用者指派的受控識別,您可以切換為只使用系統指派的受控識別來移除所有使用者指派的身分識別。 使用下列命令:

az vmss update -n myVMSS -g myResourceGroup --set identity.type='SystemAssigned' identity.userAssignedIdentities=null 

下一步