針對 Azure 自動化的受控識別問題進行疑難排解
本文討論當您使用受控識別搭配 Azure 自動化帳戶時可能會遇到問題的解決方案。 如需使用受控識別搭配自動化帳戶的一般資訊,請參閱 Azure 自動化帳戶驗證概觀。
案例:具有系統指派的受控識別之 Runbook 失敗,並顯示 400 錯誤訊息
問題
具有系統指派的受控識別之 Runbook 失敗,錯誤 unable to acquire for tenant organizations with error ManagedIdentityCredential authentication failed. Managed System Identity not found! Status 400 (Bad Request)
原因
建立系統指派的受控識別後,您尚未指派權限。
解決方法
確保為系統指派的受控識別指派適當權限。 針對 Azure 自動化帳戶使用系統指派的受控識別
案例:Runbook 中的受控識別無法向 Azure 驗證
問題
在 Runbook 中使用受控識別時,您會收到下列錯誤:connect-azaccount : ManagedIdentityCredential authentication failed: Failed to get MSI token for account d94c0db6-5540-438c-9eb3-aa20e02e1226 and resource https://management.core.windows.net/. Status: 500 (Internal Server Error)
原因
在以下任一情況中,可能發生此問題:
原因 1:您使用尚未建立的自動化帳戶系統受控識別,且
Code Connect-AzAccount -Identity
嘗試向 Azure 驗證,並在 Azure 中或混合式 Runbook 背景工作角色上執行 Runbook。原因 2:自動化帳戶已指派使用者受控識別,而不是系統受控識別,且 -
Code Connect-AzAccount -Identity
嘗試向 Azure 進行驗證,並使用 Azure VM 系統受控識別在 Azure 虛擬機器混合式 Runbook 背景工作角色上執行 Runbook。
解決方法
解決方案 1:您必須建立自動化帳戶系統受控識別,並為其授與 Azure 資源的存取權。
解決方案 2:根據您的需求,您可以:
- 建立自動化帳戶系統受控識別,並使用其來驗證。
或 - 刪除自動化帳戶使用者指派的受控識別。
- 建立自動化帳戶系統受控識別,並使用其來驗證。
案例:找不到使用者指派的受控識別,以將其新增至自動化帳戶
問題
想要將使用者指派的受控識別新增至自動化帳戶。 但卻無法在 [自動化] 刀鋒視窗中找到帳戶。
原因
如果您沒有使用者指派受的控識別的下列權限,在 [自動化] 刀鋒視窗中檢視它時,就會發生此問題。
Microsoft.ManagedIdentity/userAssignedIdentities/*/read
Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action
注意
上述權限預設會授與受控識別操作員和受控識別參與者。
解決方法
確保您具有身分識別操作員角色權限,可將使用者指派的受控識別新增至您的自動化帳戶。
案例:Runbook 失敗並出現「this.Client.SubscriptionId 不能為 Null。」錯誤訊息
問題
您使用受控識別 Connect-AzAccount -Identity 的 Runbook 嘗試管理 Azure 物件,無法順利運作並記錄下列錯誤 - this.Client.SubscriptionId cannot be null.
get-azvm : 'this.Client.SubscriptionId' cannot be null. At line:5 char:1 + get-azvm + ~~~~~~~~ + CategoryInfo : CloseError: (:) [Get-AzVM], ValidationException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.GetAzureVMCommand
原因
當受控識別 (或 Runbook 中的其他帳戶) 未取得存取訂用帳戶的任何權限時,就會發生這種情況。
解決方法
為受控識別 (或 Runbook 中使用的其他帳戶) 授與訂用帳戶中適當的角色成員資格。 深入了解
案例:無法取得帳戶的 MSI 權杖
問題
在自動化帳戶中使用使用者指派的受控識別時,您會收到類似下列的錯誤:Failed to get MSI token for account a123456b-1234-12a3-123a-aa123456aa0b
。
原因
在為自動化帳戶啟用系統指派的受控識別之前,請先使用使用者指派的受控識別。
解決方法
為您的自動化帳戶啟用系統指派的受控識別。 然後使用使用者指派的受控識別。
案例:嘗試使用受控識別搭配自動化帳戶失敗
問題
當您嘗試在自動化帳戶中使用受控識別時,您會遇到如的錯誤:
Connect-AzureRMAccount : An error occurred while sending the request. At line:2 char:1 + Connect-AzureRMAccount -Identity +
CategoryInfo : CloseError: (:) [Connect-AzureRmAccount], HttpRequestException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Profile.ConnectAzureRmAccountCommand
原因
最常見的原因是您未在嘗試使用之前啟用身分識別。 若要驗證這一點,請在受影響的自動化帳戶中執行下列 PowerShell Runbook。
$resource= "?resource=https://management.azure.com/"
$url = $env:IDENTITY_ENDPOINT + $resource
$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("X-IDENTITY-HEADER", $env:IDENTITY_HEADER)
$Headers.Add("Metadata", "True")
try
{
$Response = Invoke-RestMethod -Uri $url -Method 'GET' -Headers $Headers
}
catch
{
$StatusCode = $_.Exception.Response.StatusCode.value__
$stream = $_.Exception.Response.GetResponseStream()
$reader = New-Object System.IO.StreamReader($stream)
$responseBody = $reader.ReadToEnd()
Write-Output "Request Failed with Status: $StatusCode, Message: $responseBody"
}
如果問題在於您在嘗試使用之前未啟用身分識別,您應該會看到類似下列的結果:
Request Failed with Status: 400, Message: {"Message":"No managed identity was found for Automation account xxxxxxxxxxxx"}
解決方法
您必須先啟用自動化帳戶的身分識別,然後才能使用受控識別服務。 請參閱為 Azure 自動化帳戶啟用受控識別
下一步
如果本文無法解決您的問題,請嘗試下列其中一個管道以取得其他支援:
- 透過 Azure 論壇獲得由 Azure 專家所提供的解答。
- 與 @AzureSupport 連絡。 這是官方 Microsoft Azure 帳戶,可將 Azure 社群連結到正確的資源:解答、支援和專家。
- 提出 Azure 支援事件。 前往 Azure 支援網站,然後選取 [取得支援]。