Как использовать управляемые удостоверения для ресурсов Azure на виртуальной машине Azure для входа
Управляемые удостоверения для ресурсов Azure — это функция идентификатора Microsoft Entra. Каждая служба Azure, которая поддерживает управляемые удостоверения для ресурсов Azure, используется в соответствии с собственной временной шкалой. Прежде чем начать работу, обязательно проверьте состояние доступности управляемых удостоверений для своего ресурса и ознакомьтесь с известными проблемами.
Эта статья содержит примеры сценариев PowerShell и интерфейса командной строки, позволяющих войти в систему с использованием субъекта-службы управляемых удостоверений для ресурсов Azure, а также рекомендации по некоторым важным вопросам, таким как обработка ошибок.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Необходимые компоненты
- См. дополнительные сведения об управляемых удостоверениях для ресурсов Azure. Если у вас нет учетной записи Azure, зарегистрируйтесь для получения бесплатной учетной записи, прежде чем продолжить.
Если вы планируете использовать примеры Azure PowerShell или CLI из этой статьи, убедитесь, что у вас установлена последняя версия Azure PowerShell или Azure CLI.
Важно!
- Во всех примерах сценариев в этой статье предполагается, что клиент командной строки выполняется на виртуальной машине с включенными управляемыми удостоверениями для ресурсов Azure. Используйте функцию подключения виртуальной машины на портале Azure для удаленного подключения к своей виртуальной машине. Дополнительные сведения о включении управляемых удостоверений для ресурсов Azure на виртуальной машине см. в статье Настройка управляемых удостоверений для ресурсов Azure на виртуальной машине Azure с помощью Azure CLI или в одном из вариантов статьи (с использованием PowerShell, интерфейса командной строки, шаблона или пакета SDK для Azure).
- Чтобы избежать ошибок во время доступа к ресурсам, для управляемого удостоверения виртуальной машины необходимо предоставить по меньшей мере роль "Читатель" в соответствующей области (на уровне виртуальной машины или выше), то есть разрешить операции Azure Resource Manager на виртуальной машине. Дополнительные сведения см. в статье Назначение доступа на основе управляемого удостоверения службы для ресурса с помощью портала Azure.
Обзор
Управляемые удостоверения для ресурсов Azure предоставляют объект субъекта-службы, который создается при включении управляемых удостоверений для ресурсов Azure на виртуальной машине. Субъекту-службе можно предоставить доступ к определенным ресурсам Azure. Также субъект-служба может использоваться в качестве удостоверения скриптами и клиентами командной строки для входа в систему и доступа к ресурсам. Чтобы клиентский скрипт мог обращаться к защищенным ресурсам с собственным удостоверением, обычно нужно выполнить следующие условия:
- регистрация и согласие с идентификатором Microsoft Entra в качестве конфиденциального или веб-клиентского приложения
- выполнить вход из скрипта с соответствующим субъектом-службой, используя учетные данные приложения (обычно они встраиваются в скрипт).
Благодаря управляемым удостоверениям для ресурсов Azure вашему клиенту сценария больше не требуется делать ни то, ни другое, так как он может войти с помощью субъекта-службы управляемых удостоверений для ресурсов Azure.
Azure CLI
Следующий сценарий демонстрирует, как:
Войдите в идентификатор Microsoft Entra в управляемом удостоверении виртуальной машины для субъекта-службы ресурсов Azure
вызвать Azure Resource Manager и получить идентификатор субъекта-службы виртуальной машины. CLI автоматически управляет получением и использованием маркера. Не забудьте указать правильное имя виртуальной машины вместо
<VM-NAME>
.az login --identity $spID=$(az resource list -n <VM-NAME> --query [*].identity.principalId --out tsv) echo The managed identity for Azure resources service principal ID is $spID
Azure PowerShell
Следующий сценарий демонстрирует, как:
Войдите в идентификатор Microsoft Entra в управляемом удостоверении виртуальной машины для субъекта-службы ресурсов Azure
вызвать командлет Azure Resource Manager для получения сведений о виртуальной машине. PowerShell автоматически управляет использованием маркера.
Add-AzAccount -identity # Call Azure Resource Manager to get the service principal ID for the VM's managed identity for Azure resources. $vmInfoPs = Get-AzVM -ResourceGroupName <RESOURCE-GROUP> -Name <VM-NAME> $spID = $vmInfoPs.Identity.PrincipalId echo "The managed identity for Azure resources service principal ID is $spID"
Идентификаторы ресурсов для служб Azure
Ознакомьтесь со службами Azure, которые поддерживают проверку подлинности Microsoft Entra для списка ресурсов, поддерживающих идентификатор Microsoft Entra, и протестированы с управляемыми удостоверениями для ресурсов Azure и их соответствующих идентификаторов ресурсов.
Руководство по обработке ошибок
Такие ответы могут обозначать, что управляемые удостоверения для ресурсов Azure на виртуальной машины настроены неправильно:
- PowerShell: Invoke-WebRequest : Unable to connect to the remote server (Invoke-WebRequest: Unable to connect to the remote server)
- CLI: MSI: Failed to retrieve a token from
http://localhost:50342/oauth2/token
with an error of 'HTTPConnectionPool(host='localhost', port=50342) (Не удалось получить маркер от http://localhost:50342/oauth2/token, получена ошибка HTTPConnectionPool(host='localhost', port=50342)).
Если вы получаете одну из таких ошибок, вернитесь к виртуальной машине Azure на портале Azure, перейдите на страницу Удостоверение и убедитесь, что для параметра Назначено системой задано значение "Да".
Следующие шаги
- Чтобы включить управляемые удостоверения для ресурсов Azure на виртуальной машине Azure, обратитесь к статье Настройка управляемых удостоверений для ресурсов Azure на виртуальной машине Azure с помощью PowerShell или Настройка управляемых удостоверений для ресурсов Azure на виртуальной машине Azure с помощью Azure CLI.