Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения или процессы, работающие непосредственно на сервере с поддержкой Azure Arc, могут использовать управляемые удостоверения для доступа к другим ресурсам Azure, поддерживающим проверку подлинности на основе идентификатора Microsoft Entra. Приложение может получить токен доступа, представляющий его удостоверение, назначаемое системой для серверов с поддержкой Azure Arc, и использовать его в качестве токена-носителя для аутентификации в другой службе.
Ознакомьтесь с документацией по управляемому удостоверению , чтобы получить подробное описание управляемых удостоверений и понять различие между удостоверениями, назначенными системой и назначаемыми пользователем.
В этой статье вы узнаете, как сервер может использовать управляемое удостоверение, назначаемое системой, для доступа к Azure Key Vault. Key Vault позволяет клиентскому приложению использовать секрет для доступа к ресурсам, не защищенным идентификатором Microsoft Entra. Например, СЕРТИФИКАТЫ TLS/SSL, используемые веб-серверами IIS, могут храниться в Azure Key Vault и безопасно развертывать сертификаты на серверах Windows или Linux за пределами Azure.
Обзор безопасности
При подключении сервера к серверам с поддержкой Azure Arc выполняется несколько действий для настройки с помощью управляемого удостоверения (аналогично тому, что происходит для виртуальной машины Azure):
Azure Resource Manager получает запрос на включение системного управляемого удостоверения на сервере с включённой поддержкой Azure Arc.
Azure Resource Manager создает представителя службы в Microsoft Entra ID для удостоверения сервера. Служебный принципал создается в клиенте Microsoft Entra, которому доверяет подписка.
Azure Resource Manager настраивает конфигурацию идентификации на сервере, обновляя конечную точку удостоверения службы метаданных экземпляра Azure (IMDS) для Windows или Linux с идентификатором клиента и сертификатом сервисной учетной записи. Конечная точка является конечной точкой REST, доступной только в пределах сервера по известному IP-адресу без поддержки маршрутизации. Эта служба предоставляет подмножество метаданных о сервере с поддержкой Azure Arc для управления и настройки.
Среда сервера с поддержкой управляемого удостоверения настраивается со следующими переменными на сервере с поддержкой Azure Arc:
IMDS_ENDPOINT. IP-адрес
http://localhost:40342
конечной точки IMDS для серверов с поддержкой Azure Arc.IDENTITY_ENDPOINT: локальная конечная точка, соответствующая управляемому удостоверению службы
http://localhost:40342/metadata/identity/oauth2/token
.
Код, выполняющийся на сервере, может запросить токен из конечной точки службы метаданных экземпляра Azure, доступной только внутри сервера.
Системная переменная среды IDENTITY_ENDPOINT используется для обнаружения конечной точки удостоверения приложениями. Приложения должны пытаться получить IDENTITY_ENDPOINT и IMDS_ENDPOINT значения и использовать их. Приложения с любым уровнем доступа могут выполнять запросы к конечным точкам. Ответы метаданных обрабатываются как обычные и передаются в любой процесс на компьютере. Однако при выполнении запроса, который будет раскрывать токен, от клиента требуется предоставить секрет, подтверждающий, что он может получить доступ к данным, доступным только пользователям с более высокими привилегиями доступа.
Предварительные условия
Основные сведения об управляемых удостоверениях.
В Windows необходимо быть членом локальной группы администраторов или группы приложений расширения гибридного агента .
В Linux вы должны быть членом группы himds.
Сервер, подключенный и зарегистрированный на серверах с поддержкой Azure Arc.
Вы являетесь членом группы "Владелец" в подписке или группе ресурсов (для выполнения необходимых действий по созданию ресурсов и управлению ролями).
Azure Key Vault для хранения и получения ваших учетных данных и предоставления доступа к Key Vault для идентификации, используемой Azure Arc.
- Если у вас нет хранилища ключей, см. статью "Создание Key Vault".
- Сведения о настройке доступа по управляемому удостоверению, используемому сервером, см. в разделе "Предоставление доступа для Linux " или "Предоставление доступа для Windows". Для шага 5 вы введете имя сервера с поддержкой Azure Arc. Чтобы выполнить это с помощью PowerShell, ознакомьтесь со статьей "Назначение политики доступа с помощью PowerShell".
Получение токена доступа с помощью REST API
Метод получения и использования управляемого удостоверения, назначаемого системой, для проверки подлинности с помощью ресурсов Azure аналогичен тому, как он выполняется с виртуальной машиной Azure.
Для сервера Windows с поддержкой Azure Arc с помощью PowerShell вызовите веб-запрос, чтобы получить маркер от локального узла в определенном порту. Укажите запрос с помощью IP-адреса или переменной среды IDENTITY_ENDPOINT.
$apiVersion = "2020-06-01"
$resource = "https://management.azure.com/"
$endpoint = "{0}?resource={1}&api-version={2}" -f $env:IDENTITY_ENDPOINT,$resource,$apiVersion
$secretFile = ""
try
{
Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'} -UseBasicParsing
}
catch
{
$wwwAuthHeader = $_.Exception.Response.Headers["WWW-Authenticate"]
if ($wwwAuthHeader -match "Basic realm=.+")
{
$secretFile = ($wwwAuthHeader -split "Basic realm=")[1]
}
}
Write-Host "Secret file path: " $secretFile`n
$secret = cat -Raw $secretFile
$response = Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'; Authorization="Basic $secret"} -UseBasicParsing
if ($response)
{
$token = (ConvertFrom-Json -InputObject $response.Content).access_token
Write-Host "Access token: " $token
}
Следующий ответ — это пример возвращаемого результата:
Для сервера Linux с поддержкой Azure Arc с помощью Bash необходимо вызвать веб-запрос, чтобы получить маркер от локального узла в определенном порту. Укажите следующий запрос с помощью IP-адреса или переменной среды IDENTITY_ENDPOINT. Для выполнения этого шага необходимо клиент SSH.
CHALLENGE_TOKEN_PATH=$(curl -s -D - -H Metadata:true "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com" | grep Www-Authenticate | cut -d "=" -f 2 | tr -d "[:cntrl:]")
CHALLENGE_TOKEN=$(cat $CHALLENGE_TOKEN_PATH)
if [ $? -ne 0 ]; then
echo "Could not retrieve challenge token, double check that this command is run with root privileges."
else
curl -s -H Metadata:true -H "Authorization: Basic $CHALLENGE_TOKEN" "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com"
fi
Следующий ответ — это пример возвращаемого результата:
Замечание
Приведенный выше пример предназначен для запроса маркера доступа для использования с REST API ARM, когда переменной ресурса присвоено значение https://management.azure.com
. Если вам нужен маркер доступа для другой службы Azure, замените переменную ресурса в скрипте правильным значением ресурса. Сведения о проверке подлинности в службе хранилища Azure см. в статье Об использовании маркера OAuth в службе хранилища Azure. Чтобы завершить настройку для аутентификации в Azure Key Vault, см. раздел Доступ к Key Vault с помощью Windows или Доступ к Key Vault с помощью Linux.
Следующие шаги
Дополнительные сведения о Azure Key Vault см. в обзоре Key Vault.
Узнайте, как назначить управляемой идентичности доступ к ресурсу с помощью PowerShell или Azure CLI.