Azure Automation マネージド ID の問題のトラブルシューティング

この記事では、Automation アカウントでマネージド ID を使用する際に発生する可能性がある問題の解決方法について説明します。 Automation アカウントでのマネージド ID の使用に関する一般的な情報については、Azure Automation アカウントの認証の概要に関する記事をご覧ください。

シナリオ: システム割り当てマネージド ID を持つ Runbook が 400 エラー メッセージで失敗する

問題点

システム割り当てマネージド ID を持つ Runbook が失敗し、エラーが unable to acquire for tenant organizations with error ManagedIdentityCredential authentication failed. Managed System Identity not found! Status 400 (Bad Request)

原因

システム割り当てマネージド ID を作成した後、アクセス許可を割り当てていません。

解決方法

システム割り当てマネージド ID に適切なアクセス許可を割り当てられるようにします。 Azure Automation アカウントのシステム割り当てマネージド ID を使用する

シナリオ: Runbook のマネージド ID が Azure に対して認証できない

問題

Runbook でマネージド ID を使用すると、"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: 使用している Automation アカウントのシステム マネージド ID がまだ作成されておらず、Code Connect-AzAccount -Identity が Azure に対する認証と Azure または Hybrid Runbook Worker における Runbook の実行を試みている。

  • 原因 2: Automation アカウントにシステム マネージド ID ではなくユーザー マネージド ID が割り当てられていて、Code Connect-AzAccount -Identity が Azure への認証を試みると共に、Azure VM システム マネージド ID を使用して、Azure 仮想マシンの Hybrid Runbook Worker で Runbook を実行しようとしている。

解決方法

  • 解決策 1: Automation アカウントのシステム マネージド ID を作成し、Azure リソースへのアクセス権を付与します。

  • 解決策 2: 要件に応じて次の作業を行います。

    • Automation アカウントのシステム マネージド ID を作成し、それを認証に使用します。
      または
    • Automation アカウントのユーザー割り当てマネージド ID を削除します。

シナリオ: ユーザー割り当てマネージド ID が見つからず、Automation アカウントに追加できない

問題

ユーザー割り当てマネージド ID を Automation アカウントに追加したいと考えています。 しかし、[Automation] ブレードにアカウントが見つかりません。

原因

この問題は、ユーザー割り当てマネージド ID に、[Automation] ブレードでそれを表示するための次のアクセス許可がない場合に発生します。

  • Microsoft.ManagedIdentity/userAssignedIdentities/*/read
  • Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action

Note

マネージド ID オペレーターとマネージド ID 共同作成者には、上記のアクセス許可が既定で付与されます。

解決方法

ユーザー割り当てマネージド ID を Automation アカウントに追加するための ID オペレーター ロールのアクセス許可があることを確認します。

シナリオ: Runbook が失敗し、"this.Client.SubscriptionId cannot be null. (this.Client.SubscriptionId を null にすることはできません。)" というエラー メッセージが表示される

問題

マネージド ID 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

原因

これは、マネージド ID (または Runbook で使用されているその他のアカウント) に、サブスクリプションにアクセスするためのアクセス許可が付与されていない場合に発生することがあります。

解決方法

マネージド ID (または Runbook で使用されているその他のアカウント) に、サブスクリプションの適切なロール メンバーシップを付与してください。 詳細情報

 Azure ロールの割り当てを示すスクリーンショット。

ロールの割り当てを追加する方法を示すスクリーンショット。

シナリオ: アカウントの MSI トークンを取得できません

問題

Automation アカウントでユーザー割り当てマネージド ID を操作すると、Failed to get MSI token for account a123456b-1234-12a3-123a-aa123456aa0b のようなエラーが表示されます。

原因

Automation アカウントのシステム割り当てマネージド ID を有効にする前に、ユーザー割り当てマネージド ID を使用する。

解決方法

自分の Automation アカウント用のシステム割り当てマネージド ID を有効にします。 その後、ユーザー割り当てマネージド ID を使用します。

シナリオ: Automation アカウントでマネージド ID を使用しようとすると失敗する

問題

Automation アカウントでマネージド ID を使用しようとすると、次のようなエラーが発生します。

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

原因

この問題の最も一般的な原因は、ID を使用する前に有効にしていないことです。 これを確認するには、影響を受ける Automation アカウントで次の 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"
}

問題が ID を使用する前に有効にしなかったことが原因である場合は、次のような結果が表示されます。

Request Failed with Status: 400, Message: {"Message":"No managed identity was found for Automation account xxxxxxxxxxxx"}

解決方法

マネージド ID サービスを使用するには、事前に Automation アカウントの ID を有効にする必要があります。 「Azure Automation アカウントのマネージド ID を有効にする」を参照してください。

次のステップ

この記事で問題を解決できない場合は、追加のサポートを得るために、次のいずれかのチャネルをお試しください。

  • Azure フォーラムを通じて Azure エキスパートから回答を得ることができます。
  • @AzureSupport に問い合わせる。 これは、Azure コミュニティを適切なリソース (回答、サポート、専門家) につなぐための、Microsoft Azure の公式アカウントです。
  • Azure サポート インシデントを送信する。 Azure サポートのサイトに移動して、[サポートの要求] を選択します。