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 de l’identité managée avec des comptes Automation, consultez Azure Automation vue d’ensemble de l’authentification de compte.

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

Problème

Le runbook utilisant une identité managée affectée par le système échoue avec l’erreur 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. Utilisant une identité managée affectée par le système pour un compte Azure Automation

Scénario : Identité managée dans un Runbook ne peut pas s’authentifier auprès de 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 du compte Automation, qui n'a pas encore été créée et le Code Connect-AzAccount -Identity tente de s'authentifier auprès de 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

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

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

    • Créer l'identité managée du système de compte Automation et l'utiliser pour s'authentifier.
      Ou
    • Supprimer l'identité gérée assignée à 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. Cependant, vous ne trouvez pas le compte dans le volet 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 à l'utilisateur dans la section 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

Assurez-vous de disposer de l'autorisation de rôle Opérateur d'identité pour ajouter l'identité managée assigné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, ne parvient pas à fonctionner correctement et enregistre 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

Cela peut se produire lorsque l’identité managée (ou un autre compte utilisé dans le runbook) n’a pas reçu d’autorisations 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 d’attributions de rôles 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é gérée assignée par l'utilisateur dans votre compte Automation, vous risquez de recevoir 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. Consultez Enable 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 :