使用 Azure CLI 在 Azure VM 上設定 Azure 資源的受控識別

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

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

在本文中,您會使用 Azure CLI,瞭解如何在 Azure VM 上針對 Azure 資源作業執行下列受控識別:

  • 在 Azure VM 上啟用和停用系統指派的受控識別
  • 在 Azure VM 上新增和移除使用者指派的受控識別

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

必要條件

系統指派的受控識別

在本節中,您將瞭解如何使用 Azure CLI 在 Azure VM 上啟用和停用系統指派的受控識別。

在建立 Azure VM 期間啟用系統指派的受控識別

若要建立已啟用系統指派受控識別的 Azure VM,您的帳戶需要 虛擬機器參與者 角色指派。 不需要其他 Microsoft Entra 目錄角色指派。

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

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

    az vm create --resource-group myResourceGroup --name myVM --image win2016datacenter --generate-ssh-keys --assign-identity --role contributor --scope mySubscription --admin-username azureuser --admin-password myPassword12
    

在現有的 Azure VM 上啟用系統指派的受控識別

若要在 VM 上啟用系統指派的受控識別,您的帳戶需要 虛擬機器參與者 角色指派。 不需要其他 Microsoft Entra 目錄角色指派。

  1. 如果您在本機主控台中使用 Azure CLI,請先使用 az login 登入 Azure。 使用與包含 VM 的 Azure 訂用帳戶相關聯的帳戶。

    az login
    
  2. 使用 az vm identity assign 搭配 identity assign 命令,將系統指派的身分識別啟用至現有的 VM:

    az vm identity assign -g myResourceGroup -n myVm
    

從 Azure VM 停用系統指派的身分識別

若要在 VM 上停用系統指派的受控識別,您的帳戶需要 虛擬機器參與者 角色指派。 不需要其他 Microsoft Entra 目錄角色指派。

如果您的虛擬機器不再需要系統指派的身分識別,但仍需要使用者指派的身分識別,請使用下列命令:

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

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

注意

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

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

使用者指派的受控識別

在本節中,您將瞭解如何使用 Azure CLI 從 Azure VM 新增和移除使用者指派的受控識別。 如果您在與 VM 不同的 RG 中建立使用者指派的受控識別。 您必須使用受控識別的 URL,將它指派給 VM。 例如:

--identities "/subscriptions/<SUBID>/resourcegroups/<RESROURCEGROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER_ASSIGNED_ID_NAME>"

在建立 Azure VM 期間指派使用者指派的受控識別

若要在建立期間將使用者指派的身分識別指派給 VM,您的帳戶需要 虛擬機器參與者 受控識別操作員 角色指派。 不需要其他 Microsoft Entra 目錄角色指派。

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

    az group create --name <RESOURCE GROUP> --location <LOCATION>
    
  2. 使用 az identity create 建立使用者指派的受控識別。 -g 參數會指定建立使用者指派受控識別的資源群組,而 -n 參數會指定其名稱。

    重要

    當您建立使用者指派的受控識別時,僅支援英數位元 (0-9、a-z 和 A-Z) 和連字號 (-) 。 若要將指派給虛擬機器或虛擬機器擴展集正常運作,名稱限制為 24 個字元。 如需詳細資訊,請參閱 常見問題和已知問題

    az identity create -g myResourceGroup -n myUserAssignedIdentity
    

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

    {
        "clientId": "73444643-8088-4d70-9532-c3a0fdc190fz",
        "clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<myUserAssignedIdentity>/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. 使用 az vm create 建立 VM。 下列範例會建立與新的使用者指派身分識別相關聯的 VM,如 參數所 --assign-identity 指定,具有指定的 --role--scope 。 請務必將 <RESOURCE GROUP><VM NAME> 、、 <PASSWORD><USER NAME><USER ASSIGNED IDENTITY NAME> 、、 <ROLE><SUBSCRIPTION> 參數值取代為您自己的值。

    az vm create --resource-group <RESOURCE GROUP> --name <VM NAME> --image <SKU linux image>  --admin-username <USER NAME> --admin-password <PASSWORD> --assign-identity <USER ASSIGNED IDENTITY NAME> --role <ROLE> --scope <SUBSCRIPTION> 
    

將使用者指派的受控識別指派給現有的 Azure VM

若要將使用者指派的身分識別指派給 VM,您的帳戶需要 虛擬機器參與者 受控識別操作員 角色指派。 不需要其他 Microsoft Entra 目錄角色指派。

  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 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"    
    }
    
  2. 使用 az vm identity assign 將使用者指派的身分識別指派給 VM。 請務必將 和 <VM NAME> 參數值取代 <RESOURCE GROUP> 為您自己的值。 <USER ASSIGNED IDENTITY NAME>是使用者指派的受控識別資源 name 屬性,如上一個步驟中所建立。 如果您在與 VM 不同的 RG 中建立使用者指派的受控識別。 您必須使用受控識別的 URL。

    az vm identity assign -g <RESOURCE GROUP> -n <VM NAME> --identities <USER ASSIGNED IDENTITY>
    

從 Azure VM 移除使用者指派的受控識別

若要將使用者指派的身分識別移除至 VM,您的帳戶需要 虛擬機器參與者 角色指派。

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

az vm identity remove -g <RESOURCE GROUP> -n <VM NAME> --identities <USER ASSIGNED IDENTITY>

如果您的 VM 沒有系統指派的受控識別,而且您想要從中移除所有使用者指派的身分識別,請使用下列命令:

注意

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

az vm update -n myVM -g myResourceGroup --set identity.type="none" identity.userAssignedIdentities=null

如果您的 VM 同時具有系統指派和使用者指派的身分識別,您可以切換為僅使用系統指派來移除所有使用者指派的身分識別。 使用下列命令:

az vm update -n myVM -g myResourceGroup --set identity.type='SystemAssigned' identity.userAssignedIdentities=null 

下一步