Устранение проблем с управляемыми удостоверениями в службе автоматизации 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 и запустить runbook в Azure или гибридной рабочей роли Runbook.

  • Причина 2. Учетная запись службы автоматизации назначена управляемому удостоверению пользователя, а не системному управляемому удостоверению и Code Connect-AzAccount -Identity пытается выполнить проверку подлинности в Azure и запустить runbook в гибридной рабочей роли Runbook виртуальной машины Azure с помощью управляемого удостоверения виртуальной машины Azure.

Разрешение

  • Решение 1. Необходимо создать управляемое удостоверение системы учетной записи службы автоматизации и предоставить ему доступ к ресурсам Azure.

  • Решение 2. В соответствии с вашими требованиями вы можете:

    • Создайте управляемое удостоверение системы учетной записи службы автоматизации и используйте его для проверки подлинности.
      Или
    • Удалите управляемое удостоверение, назначенное пользователем учетной записи службы автоматизации.

Сценарий. Не удается найти управляемое удостоверение, назначаемое пользователем, чтобы добавить его в учетную запись службы автоматизации.

Проблема

Вы хотите добавить управляемое удостоверение, назначаемое пользователем, в учетную запись Службы автоматизации. Однако учетную запись не удается найти в колонке автоматизации.

Причина

Эта проблема возникает, если у вас нет следующих разрешений для управляемого удостоверения, назначаемого пользователем, для его просмотра в колонке автоматизации.

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

Примечание.

Указанные выше разрешения предоставляются по умолчанию оператору управляемых удостоверений и участнику управляемого удостоверения.

Разрешение

Убедитесь, что у вас есть разрешение на роль оператора удостоверений, чтобы добавить управляемое удостоверение, назначаемое пользователем, в учетную запись службы автоматизации.

Сценарий: Runbook завершается ошибкой "это. Client.SubscriptionId не может иметь значение NULL. Сообщение об ошибке

Проблема

Модуль Runbook с помощью управляемого удостоверения Connect-AzAccount -Identity, который пытается управлять объектами 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) соответствующую роль в подписке. Подробнее

 Снимок экрана: назначение назначений ролей Azure.

Снимок экрана: добавление назначения ролей.

Сценарий: не удалось получить токен 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

Причина

Наиболее распространенной причиной этого является то, что вы не включили удостоверение перед его использованием. Чтобы проверить так ли это, запустите следующий модуль runbook PowerShell в интересующей учетной записи службы автоматизации.

$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 и выберите Получить поддержку.