從現有的執行身分帳戶移轉至受控識別

重要

Azure 自動化執行身分帳戶 (包括傳統執行身分帳戶) 已在 2023 年 9 月 30 日淘汰,並取代為受控識別。 您無法再透過 Azure 入口網站建立或更新執行身分帳戶。

如需有關移轉步調和支援時間表 (用於建立執行身分帳戶和更新憑證) 的詳細資訊,請參閱常見問題集

Azure 自動化中的執行身分帳戶會提供驗證功能,用於管理透過 Azure Resource Manager 或傳統部署模型部署的資源。 每當建立執行身分帳戶時,就會註冊 Microsoft Entra 應用程式,並產生自我簽署憑證。 憑證有效期間為一個月。 每個月在憑證到期前更新憑證雖可讓自動化帳戶保持運作,但會增加額外負荷。

現在您可以將自動化帳戶設定為使用受控識別,這是您建立自動化帳戶時的預設選項。 透過這項功能,自動化帳戶可以向 Azure 資源進行驗證,而不需要交換任何認證。 受控識別會移除更新憑證或管理服務主體的額外負荷。

受控識別可以是系統指派使用者指派的識別。 建立新的自動化帳戶時,會啟用系統指派的受控識別。

必要條件

在您從執行身分帳戶或傳統執行身分帳戶遷移至受控識別之前:

  1. 建立系統指派使用者指派的受控識別,或建立這兩種類型。 若要深入了解這兩者之間的差異,請參閱受控識別類型 (機器翻譯)。

    注意

    • 僅雲端作業支援使用者指派的身分識別。 不能在混合式 Runbook 背景工作角色上使用自動化帳戶的使用者受控識別。 若要使用混合式作業,您必須建立系統指派的身分識別。
    • 在混合式 Runbook 背景工作角色指令碼中,有兩種方式可使用受控識別:自動化帳戶的系統指派受控識別或虛擬機器 (VM) 作為混合式 Runbook 背景工作角色執行的 Azure VM 受控識別。
    • VM 的使用者指派受控識別和 VM 的系統指派受控識別將不會在使用自動化帳戶受控識別設定的自動化帳戶中運作。 啟用自動化帳戶的受控識別後,只能使用自動化帳戶之系統指派的受控識別,而非 VM 受控識別。 如需詳細資訊,請參閱使用 Runbook 驗證搭配受控識別
  2. 將相同的角色指派給受控識別,以存取符合執行身分帳戶的 Azure 資源。 使用此指令碼在自動化帳戶中啟用系統指派的身分識別,並將 Azure 自動化執行身分帳戶中存在的相同權限集指派給自動化帳戶的系統指派身分識別。

    例如,如果只需要自動化帳戶來啟動或停止 Azure VM,則指派給執行身分帳戶的權限必須僅用於啟動或停止 VM。 同樣地,如果 Runbook 將從 Blob 儲存體讀取,請指派唯讀權限。 如需詳細資訊,請參閱 Azure 自動化安全性指導方針

  3. 如果您使用傳統執行身分帳戶,請確定您已將透過傳統部署模型部署的資源遷移至 Azure Resource Manager。

  4. 使用此指令碼來找出哪些自動化帳戶正在使用執行身分帳戶。 如果您的 Azure 自動化帳戶包含執行身分帳戶,則預設會將內建參與者角色指派給該帳戶。 您可以使用指令碼來檢查 Azure 自動化執行身分帳戶,並判斷其角色指派是否為預設角色,或者是否已變更為不同的角色定義。

  5. 使用此指令碼來找出自動化帳戶中的所有 Runbook 是否都使用執行身分帳戶。

從自動化執行身分帳戶移轉至受控識別

若要從自動化執行身分帳戶或傳統執行身分帳戶遷移至受控識別進行 Runbook 驗證,請遵循下列步驟:

  1. 變更 Runbook 程式碼以使用受控識別。

    建議您建立生產 Runbook 的複本來測試受控識別,以驗證 Runbook 是否如預期般運作。 更新您的測試 Runbook 程式碼,以使用受控識別進行驗證。 此方法可確保您不會覆寫生產 Runbook 中的 AzureRunAsConnection,也不會中斷現有的自動化執行個體。 確定 Runbook 程式碼如預期般透過受控識別執行之後,請更新生產 Runbook 以使用受控識別。

    如需受控識別支援,請使用 Connect-AzAccount Cmdlet。 若要深入了解此 Cmdlet,請參閱 PowerShell 參考中的 Connect-AzAccount (英文)。

    • 如果您使用的是 Az 模組,請遵循更新 Azure PowerShell 模組一文中的步驟,更新為最新版本。
    • 如果您使用的是 AzureRM 模組,請將 AzureRM.Profile 更新為最新版本,並使用 Add-AzureRMAccount Cmdlet 搭配 Connect-AzureRMAccount –Identity 加以取代。

    若要了解使用受控識別之前所需進行的 Runbook 程式碼變更,請使用範例指令碼

  2. 當您確定 Runbook 使用受控識別成功執行時,如果沒有任何其他 Runbook 正在使用執行身分帳戶,您就可以安全地刪除執行身分帳戶

範例指令碼

下列 Runbook 指令碼範例會使用執行身分帳戶 (服務主體) 和受控識別,來擷取 Resource Manager 資源。 您會在 Runbook 開頭注意到 Runbook 程式碼的差異,其中會針對資源進行驗證。

注意

針對此自動化帳戶的系統身分識別啟用適當的 RBAC 權限。 否則,Runbook 可能會失敗。

try
{
    "Logging in to Azure..."
    Connect-AzAccount -Identity
}
catch {
    Write-Error -Message $_.Exception
    throw $_.Exception
}

#Get all Resource Manager resources from all resource groups
$ResourceGroups = Get-AzResourceGroup

foreach ($ResourceGroup in $ResourceGroups)
{    
    Write-Output ("Showing resources in resource group " + $ResourceGroup.ResourceGroupName)
    $Resources = Get-AzResource -ResourceGroupName $ResourceGroup.ResourceGroupName
    foreach ($Resource in $Resources)
    {
        Write-Output ($Resource.Name + " of type " +  $Resource.ResourceType)
    }
    Write-Output ("")
}

檢視使用者指派身分識別的用戶端識別碼

  1. 在自動化帳戶的 [帳戶設定] 下方,選取 [身分識別]

  2. 在 [使用者指派] 索引標籤中,選取使用者指派身分識別。

    Screenshot that shows the navigation path to view client ID.

  3. 移至 [概觀]>[基本資訊],以檢視 [用戶端識別碼]

    Screenshot that shows how to view a client ID.

圖形化 Runbook

檢查執行身分帳戶是否用於圖形化 Runbook

  1. 檢查 Runbook 內的每個活動,以查看其是否在呼叫任何登入 Cmdlet 或別名時使用執行身分帳戶,例如 Add-AzRmAccount/Connect-AzRmAccount/Add-AzAccount/Connect-AzAccount

    Screenshot that illustrates checking if a graphical runbook uses a Run As account.

  2. 檢查 Cmdlet 使用的參數。

    Screenshot that shows examining the parameters used by a cmdlet.

    如需搭配執行身分帳戶使用,則 Cmdlet 會使用設定為 ApplicationId 的參數 ServicePrinicipalCertificateCertificateThumbprint 將會來自 RunAsAccountConnection

    Screenshot that shows parameter sets.

編輯圖形化 Runbook 以使用受控識別

您必須測試受控識別,以驗證圖形化 Runbook 是否如預期般運作。 建立生產 Runbook 的複本以使用受控識別,然後更新您的測試圖形化 Runbook 程式碼,以使用受控識別進行驗證。 您可以新增 Connect-AzAccount Cmdlet,將此功能新增至圖形化 Runbook。

下列步驟包含一個範例,示範使用執行身分帳戶的圖形化 Runbook 如何使用受控識別:

  1. 登入 Azure 入口網站

  2. 開啟自動化帳戶,然後選取 [處理自動化]>[Runbook]

  3. 選取 Runbook。 例如,從清單中選取 [啟動 Azure V2 VM] Runbook,然後選取 [編輯],或移至 [瀏覽資源庫] 然後選取 [啟動 Azure V2 VM]

    Screenshot of editing a graphical runbook.

  4. 將使用 AzureRunAsConnection 的執行身分連線,以及內部使用 PowerShell Get-AutomationConnection Cmdlet 的連線資產取代為 Connect-AzAccount Cmdlet。

  5. 選取 [刪除] 以刪除 Get Run As ConnectionConnect to Azure 活動。

    Screenshot to connect to the Azure activities.

  6. 在左側面板中的 [RUNBOOK CONTROL] 底下,選取 [程式碼],然後選取 [新增至畫布]

    Screenshot to select code and add it to the canvas.

  7. 編輯程式碼活動、指派任何適當的標籤名稱,然後選取 [撰寫活動邏輯]

    Screenshot to edit code activity.

  8. 在 [程式碼編輯器] 頁面中,輸入下列 PowerShell 程式碼,然後選取 [確定]

    try 
    { 
       Write-Output ("Logging in to Azure...") 
       Connect-AzAccount -Identity 
    } 
    catch { 
       Write-Error -Message $_.Exception 
       throw $_.Exception 
    } 
    
  9. 將新活動連線到先前由 [連線至 Azure] 所連線的活動,然後儲存 Runbook。

    Screenshot to connect new activity to activities.

例如,在 Runbook 資源庫的 [啟動 Azure V2 VM] Runbook 中,您必須將 Get Run As ConnectionConnect to Azure 活動取代為使用上述 Connect-AzAccount Cmdlet 的程式碼活動。 如需詳細資訊,請參閱使用自動化帳戶建立的範例 Runbook 名稱 AzureAutomationTutorialWithIdentityGraphical

注意

AzureRM PowerShell 模組將於 2024 年 2 月 29 日淘汰。 如果您在圖形化 Runbook 中使用 AzureRM PowerShell 模組,則必須將其升級為使用 Az PowerShell 模組。 深入了解

下一步