Résoudre les problèmes d’identité managée Azure Automation

Cet article traite des solutions aux problèmes que vous pourriez rencontrer en utilisant une identité managée avec votre compte Automation. Pour obtenir des informations générales sur l’utilisation d’une identité managée avec des comptes Automation, consultez Vue d’ensemble de l’authentification de compte Azure Automation.

Scénario : le runbook avec une identité managée affectée par le système échoue avec le message d’erreur 400

Problème

Le runbook avec une identité managée affectée par le système échoue avec l’erreur suivante : unable to acquire for tenant organizations with error ManagedIdentityCredential authentication failed. Managed System Identity not found! Status 400 (Bad Request)

Cause

Vous n’avez pas attribué d’autorisations après la création de l’identité managée affectée par le système.

Résolution

Veillez à attribuer les autorisations appropriées pour l’identité managée affectée par le système. Utilisation d’une identité managée affectée par le système pour un compte Azure Automation

Scénario : Une identité managée dans un runbook ne peut pas s’authentifier auprès d’Azure

Problème

Quand vous utilisez une identité managée dans votre runbook, vous recevez une erreur de type : 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)

Cause

Cela peut se produire dans les cas suivants :

  • Cause 1 : vous utilisez l’identité managée système du compte Automation, qui n’a pas encore été créée ; Code Connect-AzAccount -Identity tente de s’authentifier auprès d’Azure et d’exécuter un runbook dans Azure ou sur un Runbook Worker hybride.

  • Cause 2 : le compte Automation dispose d’une identité managée utilisateur et non d’une identité managée système ; Code Connect-AzAccount -Identity tente de s’authentifier auprès d’Azure et d’exécuter un runbook sur un Runbook Worker hybride de machine virtuelle Azure en utilisant l’identité managée système de machine virtuelle Azure.

Résolution

  • Résolution 1 : vous devez créer l’identité managée système du compte Automation et lui accorder un accès aux ressources Azure.

  • Résolution 2 : selon vos besoins, vous pouvez :

    • Créer l’identité managée système du compte Automation et vous en servir pour vous authentifier.
      Ou
    • Supprimer l’identité managée affectée par l’utilisateur du compte Automation.

Scénario : Impossible de trouver l’identité managée affectée par l’utilisateur pour l’ajouter au compte Automation

Problème

Vous souhaitez ajouter une identité managée affectée par l’utilisateur au compte Automation. Or, vous ne trouvez pas le compte dans le panneau Automation.

Cause

Ce problème se produit si vous n’avez pas les autorisations suivantes vous permettant d’afficher l’identité managée affectée par l’utilisateur dans le panneau Automation.

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

Remarque

Les autorisations ci-dessus sont accordées par défaut à l’Opérateur d’identité managée et au Contributeur d’identité managée.

Résolution

Veillez à disposer de l’d’une autorisation de rôle Opérateur d’identité pour ajouter l’identité managée affectée par l’utilisateur à votre compte Automation.

Scénario : Le runbook échoue avec le message d’erreur « this.Client.SubscriptionId ne peut pas être null. »

Problème

Votre runbook utilisant une identité managée Connect-AzAccount -Identity qui tente de gérer des objets Azure échoue à fonctionner correctement et consigne l’erreur suivante : 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

Cause

Ceci peut se produire quand l’identité managée (ou un autre compte utilisé dans le runbook) n’a pas reçu les autorisations nécessaires pour accéder à l’abonnement.

Résolution

Accordez à l’identité managée (ou à un autre compte utilisé dans le runbook) une appartenance au rôle approprié dans l’abonnement. En savoir plus

 Capture d’écran montrant l’attribution de rôle Azure.

Capture d’écran montrant comment ajouter une attribution de rôle.

Scénario : Échec d’obtention du jeton MSI pour le compte

Problème

Quand vous utilisez une identité managée affectée par l’utilisateur dans votre compte Automation, vous recevez une erreur semblable à la suivante : Failed to get MSI token for account a123456b-1234-12a3-123a-aa123456aa0b.

Cause

Utilisation d’une identité managée affectée par l’utilisateur avant l’activation d’une identité managée affectée par le système pour votre compte Automation.

Résolution

Activez une identité managée affectée par le système pour votre compte Automation. Ensuite, utilisez l’identité managée affectée par l’utilisateur.

Scénario : Échec de la tentative d’utilisation d’une identité managée avec un compte Automation

Problème

Lorsque vous essayez d’utiliser des identités managées dans votre compte Automation, vous rencontrez une erreur semblable à celle-ci :

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

Cause

La cause la plus courante est que vous n’avez pas activé l’identité avant d’essayer de l’utiliser. Pour vérifier cela, exécutez le runbook PowerShell suivant dans le compte Automation concerné.

$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"
}

Si le problème est que vous n’avez pas activé l’identité avant de tenter de l’utiliser, vous devriez obtenir un résultat similaire à ce qui suit :

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

Résolution

Vous devez activer une identité pour votre compte Automation avant de pouvoir utiliser le service d’identité managée. Voir Activer une identité managée pour votre compte Azure Automation

Étapes suivantes

Si cet article ne vous permet pas de résoudre votre problème, utilisez l’un des canaux suivants pour obtenir une aide supplémentaire :

  • Obtenez des réponses de la part d’experts Azure via les Forums Azure.
  • Contactez @AzureSupport. Il s’agit du compte Microsoft Azure officiel qui permet à la communauté Azure d’accéder aux ressources dont elle a besoin : réponses, support et experts.
  • Signaler un incident au support Azure Accédez au site du support Azure, puis sélectionnez Obtenir de l’aide.