Udostępnij przez


Rozwiązywanie problemów z tożsamością zarządzaną w Azure Automation

W tym artykule omówiono rozwiązania problemów, które mogą wystąpić podczas korzystania z tożsamości zarządzanej z kontem usługi Automation. Aby uzyskać ogólne informacje na temat korzystania z tożsamości zarządzanej z kontami usługi Automation, zobacz Omówienie uwierzytelniania konta usługi Azure Automation.

Scenariusz: Runbook z przypisaną przez system tożsamością zarządzaną kończy się niepowodzeniem, wyświetlając komunikat o błędzie 400.

Problem

Runbook z przypisaną przez system tożsamością zarządzaną kończy się niepowodzeniem z powodu błędu unable to acquire for tenant organizations with error ManagedIdentityCredential authentication failed. Managed System Identity not found! Status 400 (Bad Request)

Przyczyna

Nie przypisałeś uprawnień po utworzeniu zarządzanej tożsamości przypisanej przez system.

Rozwiązanie

Upewnij się, że przypisano odpowiednie uprawnienia dla przez system przypisanej tożsamości zarządzanej. Używanie tożsamości zarządzanej przypisanej przez system w przypadku konta usługi Azure Automation

Scenariusz: tożsamość zarządzana w elemecie Runbook nie może uwierzytelniać się na platformie Azure

Problem

W przypadku korzystania z tożsamości zarządzanej w elemencie Runbook wyświetlany jest błąd: 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)

Przyczyna

Może się tak zdarzyć, gdy:

  • Przyczyna 1: Używasz tożsamości zarządzanej systemu usługi Automation, która nie została jeszcze utworzona, i Code Connect-AzAccount -Identity próbujesz uwierzytelnić się na platformie Azure i uruchomić element Runbook na platformie Azure lub w hybrydowym procesie roboczym elementu Runbook.

  • Przyczyna 2: Konto usługi Automation ma przypisaną tożsamość zarządzaną przez użytkownika, a nie przez system — Code Connect-AzAccount -Identity próbuje uwierzytelnić się na platformie Azure i uruchomić runbook na hybrydowym komputerze wirtualnym Azure Hybrid Runbook Worker przy użyciu tożsamości zarządzanej przez system maszyny wirtualnej platformy Azure.

Rozwiązanie

  • Rozwiązanie 1: Należy utworzyć tożsamość zarządzaną systemu kont usługi Automation i udzielić jej dostępu do zasobów platformy Azure.

  • Rozwiązanie 2: Zgodnie z wymaganiami można wykonać następujące czynności:

    • Utwórz tożsamość zarządzaną systemu konta usługi Automation i użyj jej do uwierzytelniania.
      Lub
    • Usuń tożsamość zarządzaną przypisaną przez użytkownika konta usługi Automation.

Scenariusz: Nie można odnaleźć tożsamości zarządzanej przypisanej przez użytkownika w celu dodania jej do konta usługi Automation

Problem

Chcesz dodać tożsamość zarządzaną przypisaną przez użytkownika do konta usługi Automation. Nie można jednak znaleźć konta w panelu Automatyzacja.

Przyczyna

Ten problem występuje, gdy nie masz następujących uprawnień do tożsamości zarządzanej przypisanej przez użytkownika, aby wyświetlić ją w panelu Automatyzacja.

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

Uwaga

Powyższe uprawnienia są domyślnie przyznawane operatorowi tożsamości zarządzanej i współautorowi tożsamości zarządzanej.

Rozwiązanie

Upewnij się, że masz uprawnienia do roli Operator tożsamości, aby dodać tożsamość zarządzaną przypisaną przez użytkownika do swojego konta Automation.

Scenariusz: Runbook nie powiodło się z komunikatem błędu "this.Client.SubscriptionId nie może być null."

Problem

Twój runbook używający tożsamości zarządzanej za pomocą Connect-AzAccount -Identity, który próbuje zarządzać obiektami Azure, nie działa pomyślnie i rejestruje następujący błąd — 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

Przyczyna

Może się tak zdarzyć, gdy tożsamość zarządzana (lub inne konto używane w runbooku) nie otrzymała żadnych uprawnień dostępu do subskrypcji.

Rozwiązanie

Przyznaj tożsamości zarządzanej (lub innemu kontu używanemu w runbooku) odpowiednią rolę w subskrypcji. Dowiedz się więcej

 Zrzut ekranu przedstawiający przypisywanie ról platformy Azure.

Zrzut ekranu przedstawiający sposób dodawania przypisania roli.

Scenariusz: Nie można pobrać tokenu MSI dla konta

Zagadnienie

Podczas pracy z tożsamością zarządzaną przypisaną przez użytkownika na koncie usługi Automation jest wyświetlany błąd podobny do: Failed to get MSI token for account a123456b-1234-12a3-123a-aa123456aa0b.

Przyczyna

Korzystanie z zarządzanej tożsamości przypisanej przez użytkownika przed włączeniem zarządzanej tożsamości przypisanej przez system dla konta usługi Automation.

Rozwiązanie

Włącz tożsamość zarządzaną przypisaną przez system dla konta usługi Automation. Następnie użyj tożsamości zarządzanej przypisanej przez użytkownika.

Scenariusz: Próba użycia tożsamości zarządzanej z kontem usługi Automation kończy się niepowodzeniem

Problem

Podczas próby pracy z tożsamościami zarządzanymi na koncie usługi Automation wystąpi błąd podobny do następującego:

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

Przyczyna

Problem ten najczęściej wynika z tego, że nie włączono tożsamości przed próbą jej użycia. Aby to sprawdzić, uruchom następujący Runbook programu PowerShell na koncie Automation, którego dotyczy problem.

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

Jeśli problem polega na tym, że nie włączono tożsamości przed próbą jej użycia, powinien wyświetlić się wynik podobny do następującego:

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

Rozwiązanie

Aby móc korzystać z usługi tożsamości zarządzanej, musisz włączyć tożsamość dla konta usługi Automation. Zobacz Włączanie tożsamości zarządzanej dla konta usługi Azure Automation

Następne kroki

Jeśli ten artykuł nie rozwiąże problemu, wypróbuj jeden z następujących kanałów, aby uzyskać dodatkową pomoc techniczną:

  • Uzyskaj odpowiedzi od ekspertów platformy Azure za pośrednictwem forów platformy Azure.
  • Nawiąż połączenie z @AzureSupport. To jest oficjalne konto platformy Microsoft Azure służące do łączenia społeczności platformy Azure z odpowiednimi zasobami: odpowiedziami, pomocą techniczną i ekspertami.
  • Zgłoś zgłoszenie pomocy technicznej Azure. Przejdź do witryny pomoc techniczna platformy Azure i wybierz pozycję Uzyskaj pomoc techniczną.