Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las aplicaciones o los procesos que se ejecutan directamente en servidores habilitados para Azure Arc pueden usar las identidades administradas para acceder a otros recursos de Azure que admiten la autenticación basada en Microsoft Entra ID. Una aplicación puede obtener un token de acceso que represente su identidad, que está asignada por el sistema para servidores habilitados para Azure Arc, y usarla como token de "portador" para autenticarse en otro servicio.
Consulte la documentación de información general de identidad administrada para obtener una descripción detallada de las identidades administradas y comprender la distinción entre las identidades asignadas por el sistema y las asignadas por el usuario.
En este artículo, obtendrá información sobre cómo un servidor puede usar una identidad administrada asignada por el sistema para acceder a Azure Key Vault. Actuando como un arranque, Key Vault hace posible que la aplicación cliente use un secreto para acceder a recursos que no están protegidos por Microsoft Entra ID. Por ejemplo, los certificados TLS/SSL utilizados por los servidores web IIS se pueden almacenar en Azure Key Vault e implementar de forma segura los certificados en servidores Windows o Linux fuera de Azure.
Introducción a la seguridad
Se producen varias acciones al incorporar el servidor a servidores habilitados para Azure Arc para configurar mediante una identidad administrada (similar a lo que sucede con una máquina virtual de Azure):
Azure Resource Manager recibe una solicitud para habilitar la identidad administrada asignada por el sistema en el servidor habilitado para Azure Arc.
Azure Resource Manager crea una entidad de servicio en Microsoft Entra ID para la identidad del servidor. La entidad de servicio se crea en el inquilino de Microsoft Entra que sea de confianza para la suscripción.
Azure Resource Manager configura la identidad en el servidor mediante la actualización del punto de conexión de identidad de Azure Instance Metadata Service (IMDS) para Windows o Linux con el identificador de cliente y el certificado de la entidad de servicio. El punto de conexión es un punto de conexión de REST solamente accesible desde dentro del servidor mediante una dirección IP no enrutable conocida. Este servicio proporciona un subconjunto de información de metadatos sobre el servidor habilitado para Azure Arc que ayuda a administrarlo y configurarlo.
El entorno de un servidor habilitado para identidades administradas se configurará con las siguientes variables en un servidor habilitado para Azure Arc:
IMDS_ENDPOINT: la dirección
http://localhost:40342
IP del punto de conexión IMDS para servidores habilitados para Azure Arc.IDENTITY_ENDPOINT: el punto de conexión localhost correspondiente a la identidad
http://localhost:40342/metadata/identity/oauth2/token
administrada del servicio .
El código que se ejecuta en el servidor puede solicitar un token del punto de conexión de Azure Instance Metadata Service, accesible únicamente desde dentro de dicho servidor.
La variable de entorno del sistema IDENTITY_ENDPOINT se usa para detectar el punto de conexión de identidad por las aplicaciones. Las aplicaciones deben intentar recuperar IDENTITY_ENDPOINT y IMDS_ENDPOINT valores y usarlos. Las aplicaciones con cualquier nivel de acceso pueden realizar solicitudes a los puntos de conexión. Las respuestas de metadatos se tratan con normalidad y se entregan a cualquier proceso de la máquina. Sin embargo, cuando se realiza una solicitud que expondría un token, requerimos que el cliente proporcione un secreto para dar fe de que puede acceder a los datos que solo están disponibles para usuarios con mayores privilegios.
Requisitos previos
Conocimientos sobre identidades administradas.
En Windows, debe ser miembro del grupo local de Administradores o del grupo de Aplicaciones de Extensión del Agente Híbrido.
En Linux, debe ser miembro del grupo himds .
Un servidor conectado y registrado con servidores habilitados para Azure Arc.
Es miembro del grupo Propietario en la suscripción o grupo de recursos (para realizar los pasos necesarios de creación de recursos y administración de roles).
Una instancia de Azure Key Vault para almacenar y recuperar la credencial y asignar el acceso de la identidad de Azure Arc a KeyVault.
- Si no tiene una instancia de Key Vault creada, consulte Creación de Key Vault.
- Para configurar el acceso mediante la identidad administrada usada por el servidor, consulte Otorgar acceso para Linux o Otorgar acceso para Windows. En el paso 5, va a escribir el nombre del servidor habilitado para Azure Arc. Para completarlo con PowerShell, consulte Asignación de una directiva de acceso mediante PowerShell.
Adquisición de un token de acceso mediante la API de REST
El método para obtener y usar una identidad administrada asignada por el sistema para autenticarse con recursos de Azure es similar a cómo se realiza con una máquina virtual de Azure.
En el caso de un servidor Windows habilitado para Azure Arc, use PowerShell para invocar la solicitud web y obtener el token del host local en el puerto específico. Especifique la solicitud mediante la dirección IP o la variable de entorno 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
}
La respuesta siguiente es un ejemplo que se devuelve:
En el caso de un servidor Linux habilitado para Azure Arc, use Bash para invocar la solicitud web y obtener el token del host local en el puerto específico. Especifique la siguiente solicitud mediante la dirección IP o la variable de entorno IDENTITY_ENDPOINT. Para completar ese paso, necesita un cliente 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
La respuesta siguiente es un ejemplo que se devuelve:
Nota:
El ejemplo anterior es para solicitar un token de acceso para su uso con las API REST de ARM cuando la variable de recurso está establecida https://management.azure.com
en . Si necesita un token de acceso para otro servicio de Azure, reemplace la variable de recurso en el script por el valor de recurso correcto. Para autenticarse con Azure Storage, consulte Uso del token de OAuth con Azure Storage. Para completar la configuración para autenticarse en Azure Key Vault, consulte Acceso a Key Vault con Windows o Access Key Vault con Linux.
Pasos siguientes
Para más información sobre Azure Key Vault, consulte Introducción a Key Vault.
Aprenda a asignar un acceso de identidad administrada a un recurso mediante PowerShell o mediante la CLI de Azure.