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

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

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

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

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

必要條件

系統指派的受控識別

在本節中,我們將瞭解如何使用 Azure PowerShell 啟用和停用系統指派的受控識別。

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

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

  1. 請參閱下列其中一個 Azure VM 快速入門,只完成必要章節(「登入 Azure」、「建立資源群組」、「建立網路群組」、「建立 VM」)。

    當您到達 [建立 VM] 區段時,請稍微修改 New-AzVMConfig Cmdlet 語法。 請務必新增 -IdentityType SystemAssigned 參數,以布建已啟用系統指派身分識別的 VM,例如:

    $vmConfig = New-AzVMConfig -VMName myVM -IdentityType SystemAssigned ...
    

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

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

  1. 使用 Cmdlet 擷 Get-AzVM 取 VM 屬性。 然後,若要啟用系統指派的受控識別,請使用 -IdentityType Update-AzVM Cmdlet 上的 參數:

    $vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
    Update-AzVM -ResourceGroupName myResourceGroup -VM $vm -IdentityType SystemAssigned
    

將 VM 系統指派的身分識別新增至群組

在 VM 上啟用系統指派的身分識別之後,您可以將它新增至群組。 下列程式會將 VM 的系統指派身分識別新增至群組。

  1. 擷取並記 ObjectIDId VM 服務主體的 [傳回值] 欄位中所指定的 :

    Get-AzADServicePrincipal -displayname "myVM"
    
  2. 擷取並記 ObjectIDId 群組的 [傳回值] 欄位所指定的 :

    Get-AzADGroup -searchstring "myGroup"
    
  3. 將 VM 的服務主體新增至群組:

    New-MgGroupMember -GroupId "<Id of group>" -DirectoryObjectId "<Id of VM service principal>" 
    

從 Azure VM 停用系統指派的受控識別

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

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

  1. 使用 Cmdlet 擷 Get-AzVM 取 VM 屬性,並將 參數設定 -IdentityTypeUserAssigned

    $vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
    Update-AzVm -ResourceGroupName myResourceGroup -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESROURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>..."
    

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

$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVm -ResourceGroupName myResourceGroup -VM $vm -IdentityType None

使用者指派的受控識別

在本節中,您將瞭解如何使用 Azure PowerShell 從 VM 新增和移除使用者指派的受控識別。

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

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

  1. 請參閱下列其中一個 Azure VM 快速入門,只完成必要章節(「登入 Azure」、「建立資源群組」、「建立網路群組」、「建立 VM」)。

    當您到達 [建立 VM] 區段時,請稍微修改 New-AzVMConfig Cmdlet 語法。 -IdentityType UserAssigned新增 和 -IdentityID 參數,以使用者指派的身分識別布建 VM。 以您自己的值取代 <VM NAME><SUBSCRIPTION ID><RESROURCE GROUP><USER ASSIGNED IDENTITY NAME> 。 例如:

    $vmConfig = New-AzVMConfig -VMName <VM NAME> -IdentityType UserAssigned -IdentityID "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESROURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>..."
    

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

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

  1. 使用 New-AzUserAssignedIdentity Cmdlet 建立使用者指派的受控識別。 Id請注意輸出中的 ,因為您將在下一個步驟中需要此資訊。

    重要

    建立使用者指派的受控識別僅支援英數位元、底線和連字號 (0-9 或 a-z 或 A-Z、_ 或 -) 字元。 此外,將指派給 VM/VMSS 的名稱應該限制為 3 到 128 個字元,才能正常運作。 如需詳細資訊,請參閱 常見問題和已知問題

    New-AzUserAssignedIdentity -ResourceGroupName <RESOURCEGROUP> -Name <USER ASSIGNED IDENTITY NAME>
    
  2. 使用 Cmdlet 擷 Get-AzVM 取 VM 屬性。 然後,若要將使用者指派的受控識別指派給 Azure VM,請使用 -IdentityType Update-AzVM Cmdlet 上的 -IdentityID 參數。 參數的值 -IdentityIdId 您在上一個步驟中注意到的值。 將 、 <SUBSCRIPTION ID><RESROURCE GROUP><USER ASSIGNED IDENTITY NAME> 取代 <VM NAME> 為您自己的值。

    警告

    若要保留先前指派給 VM 的任何使用者指派受控識別,請查詢 Identity VM 物件的 屬性(例如 , $vm.Identity 。 如果傳回任何使用者指派的受控識別,請在下列命令中包含它們,以及您想要指派給 VM 的新使用者指派受控識別。

    $vm = Get-AzVM -ResourceGroupName <RESOURCE GROUP> -Name <VM NAME>
    Update-AzVM -ResourceGroupName <RESOURCE GROUP> -VM $vm -IdentityType UserAssigned -IdentityID "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESROURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>"
    

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

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

如果您的 VM 有多個使用者指派的受控識別,您可以使用下列命令來移除最後一個受控識別。 請務必將 和 <VM NAME> 參數值取代 <RESOURCE GROUP> 為您自己的值。 <USER ASSIGNED IDENTITY NAME>是使用者指派的受控識別名稱屬性,應該保留在 VM 上。 這項資訊可使用查詢來搜尋 Identity VM 物件的 屬性。 例如: $vm.Identity

$vm = Get-AzVm -ResourceGroupName myResourceGroup -Name myVm
Update-AzVm -ResourceGroupName myResourceGroup -VirtualMachine $vm -IdentityType UserAssigned -IdentityID <USER ASSIGNED IDENTITY NAME>

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

$vm = Get-AzVm -ResourceGroupName myResourceGroup -Name myVm
Update-AzVm -ResourceGroupName myResourceGroup -VM $vm -IdentityType None

如果您的 VM 同時具有系統指派和使用者指派的受控識別,您可以切換為只使用系統指派的受控識別來移除所有使用者指派的受控識別。

$vm = Get-AzVm -ResourceGroupName myResourceGroup -Name myVm
Update-AzVm -ResourceGroupName myResourceGroup -VirtualMachine $vm -IdentityType "SystemAssigned"

下一步