Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения или процессы, работающие непосредственно на сервере с поддержкой Azure Arc, могут использовать управляемые удостоверения для доступа к другим ресурсам Azure, поддерживающим проверку подлинности на основе идентификатора Microsoft Entra. Приложение может получить маркер доступа, представляющий его удостоверение, назначаемый системой для серверов с поддержкой Azure Arc, и использовать его как маркер носителя для удостоверения своей подлинности перед другой службой.
Подробное описание управляемых удостоверений и различия между назначаемыми системой удостоверениями и удостоверениями, назначенными пользователем, см. в обзоре управляемого удостоверения.
Из этой статьи вы узнаете, как сервер может использовать управляемое удостоверение, назначаемое системой, для доступа к Azure Key Vault. Azure Key Vault позволяет клиентскому приложению использовать секрет для доступа к ресурсам, которые не защищены идентификатором Microsoft Entra. Например, Azure Key Vault может хранить сертификаты TLS/SSL, используемые веб-серверами IIS, и безопасно развертывать сертификаты на серверах 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 endpoint, доступный только изнутри сервера с помощью хорошо известного, не маршрутизируемого IP-адреса. Эта служба предоставляет подмножество метаданных о сервере с поддержкой Azure Arc для управления и настройки.
Среда сервера с включенной поддержкой управляемого удостоверения конфигурируется со следующими переменными на сервере с включенной поддержкой Azure Arc:
IMDS_ENDPOINT. IP-адрес
http://localhost:40342конечной точки IMDS для серверов с поддержкой Azure Arc.IDENTITY_ENDPOINT: конечная точка на localhost, соответствующая управляемому удостоверению службы.
Код, выполняющийся на сервере, может запросить токен из конечной точки службы метаданных экземпляра Azure, доступной только внутри сервера.
Приложения могут получать системные переменные среды IDENTITY_ENDPOINT и IMDS_ENDPOINT значения и использовать их для обнаружения этих конечных точек. Приложения с любым уровнем доступа могут отправлять запросы к конечным точкам. Ответы метаданных обрабатываются как обычные и передаются в любой процесс на компьютере. Однако при выполнении запроса, который будет раскрывать токен, клиент должен предоставить секрет, чтобы подтвердить, что он может получить доступ к данным, доступным только для пользователей с более высоким уровнем привилегий.
Предварительные условия
Перед началом работы убедитесь, что у вас есть следующие предварительные требования:
Понимание концепции управляемых удостоверений.
Сервер, подключенный к серверам с поддержкой Azure Arc.
В Windows необходимо быть членом локальной
Administratorsгруппы илиHybrid Agent Extension Applicationsгруппы. В Linux необходимо быть членомhimdsгруппы.Для выполнения необходимых действий по созданию ресурсов и управлению ролями необходимо иметь роль владельца в подписке Azure или группе ресурсов, содержащей серверы с поддержкой Arc.
Azure Key Vault для хранения и получения учетных данных и предоставления идентификатору Azure Arc доступа к хранилищу ключей.
- Сведения о настройке доступа по управляемому удостоверению, используемому сервером, см. в разделе "Предоставление доступа для Linux " или "Предоставление доступа для Windows". При вводе имени виртуальной машины используйте имя сервера с поддержкой Azure Arc.
Получение токена доступа с помощью 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 см. в статье "Библиотека проверки подлинности Майкрософт" (MSAL). Чтобы завершить настройку для аутентификации в Azure Key Vault, см. раздел Доступ к Key Vault с помощью Windows или Доступ к Key Vault с помощью Linux.
Связанный контент
- Дополнительные сведения об Azure Key Vault.
- Узнайте, как назначить управляемый доступ к ресурсу с помощью портала Azure, PowerShell или Azure CLI.