Tutorial: Uso de las identidades administradas asignadas por el sistema de una máquina virtual Windows para acceder a Azure Key Vault

Managed Identities for Azure Resources es una característica de Azure Active Directory. Cada servicio de Azure compatible con Managed Identities for Azure Resources está sujeto a su propia escala de tiempo. Asegúrese de revisar el estado de disponibilidad de las identidades administradas para el recurso y los problemas conocidos antes de comenzar.

En este tutorial se muestra cómo puede usar una máquina virtual Windows una identidad administrada asignada por el sistema para acceder a Azure Key Vault. Key Vault hace posible que la aplicación cliente use un secreto para acceder a recursos que no están protegidos por Azure Active Directory (Azure AD). Azure administra automáticamente las identidades administradas. Permiten autenticarse en servicios que admiten la autenticación de Azure AD, sin incluir información de autenticación en el código.

Aprenderá a:

  • Concesión de acceso a la máquina virtual a un secreto almacenado en un almacén de claves
  • Obtener un token de acceso mediante la identidad de máquina virtual y usarlo para recuperar el secreto de Key Vault

Prerrequisitos

Creación de un almacén de claves

En esta sección se muestra cómo conceder acceso a la máquina virtual a un secreto almacenado en un almacén de claves. Al usar identidades administradas para recursos de Azure, el código puede obtener tokens de acceso para autenticarse en aquellos recursos que admitan la autenticación de Azure AD.  Sin embargo, no todos los servicios de Azure admiten la autenticación de Azure AD. Para usar Managed Identities for Azure Resources con esos servicios, almacene las credenciales del servicio en Azure Key Vault y use una identidad administrada de la máquina virtual a fin de acceder a Key Vault y recuperar las credenciales.

En primer lugar, es necesario crear un almacén de claves y conceder a la identidad administrada asignada por el sistema de la máquina virtual acceso al mismo.

  1. Abra Azure Portal.

  2. En la parte superior de la barra de navegación izquierda, seleccione Crear un recurso.

  3. En el cuadro de texto Buscar en el Marketplace, escriba Key Vault y presione Entrar.  

  4. En la lista de resultados, seleccione Key Vault.

  5. Seleccione Crear

  6. Proporcione un nombre para el nuevo almacén de claves.

    Create a Key vault screen

  7. Rellene toda la información necesaria. Asegúrese de elegir la suscripción y el grupo de recursos que va a usar para este tutorial.

  8. Seleccione Revisar y crear.

  9. Seleccione Crear

Crear un secreto

A continuación, agregue un secreto al almacén de claves, de forma que más adelante pueda recuperarlo mediante código que se ejecuta en la máquina virtual. En este tutorial utilizamos PowerShell, pero se aplican los mismos conceptos a cualquier código que se ejecute en esta máquina virtual.

  1. Vaya al almacén de claves recién creado.

  2. Seleccione Secretos y después Agregar.

  3. Seleccione Generar o importar.

  4. En la pantalla Crear un secreto desde Opciones de carga, deje la opción Manual seleccionada.

  5. Escriba un nombre y un valor para el secreto.  El valor puede ser cualquiera de su elección. 

  6. Deje la fecha de activación y la fecha de expiración y deje la opción Habilitado en

  7. Seleccione Crear para crear el secreto.

    Create a secret

Conceder acceso

Es necesario conceder acceso a la identidad administrada que usa la máquina virtual para leer el secreto que se almacenará en el almacén de claves.

  1. Vaya al almacén de claves recién creado.

  2. Seleccione Directiva de acceso en el menú de la izquierda.

  3. Seleccione Agregar directiva de acceso.

    key vault create access policy screen

  4. En la sección Agregar directiva de acceso que se encuentra en Configurar a partir de una plantilla (opcional), elija Administración de secretos en el menú desplegable.

  5. Elija Seleccionar la entidad de seguridad y, en el campo de búsqueda, escriba el nombre de la máquina virtual que creó anteriormente.  Seleccione la máquina virtual de la lista de resultados y elija Seleccionar.

  6. Seleccione Agregar.

  7. Seleccione Guardar.

Acceso a los datos

En esta sección se muestra cómo obtener un token de acceso mediante la identidad de la máquina virtual y usarlo para recuperar el secreto del almacén de claves. Si no tiene PowerShell 4.3.1 o superior instalado, necesitará descargar e instalar la versión más reciente.

En primer lugar, vamos a usar la identidad administrada asignada por el sistema de la máquina virtual a fin de obtener un token de acceso para autenticarse en Key Vault:

  1. En el portal, vaya a Virtual Machines y diríjase a la máquina virtual Windows. A continuación, en Introducción, seleccione Conectar.
  2. Escriba su nombre de usuario y contraseña que agregó cuando creó la máquina virtual Windows.  
  3. Ahora que ha creado una conexión a Escritorio remoto con la máquina virtual, abra PowerShell en la sesión remota.  
  4. En PowerShell, invoque la solicitud web en el inquilino para obtener el token del host local en el puerto específico de la máquina virtual.  

La solicitud de PowerShell:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"} 

Puede ver cómo es la respuesta a continuación:

request with token response

Luego, extraiga el token de acceso de la respuesta.  

   $KeyVaultToken = $Response.access_token

Finalmente, use el comando Invoke-WebRequest de PowerShell para recuperar el secreto que creó anteriormente en el almacén de claves y pasar el token de acceso en el encabezado de autenticación.  Necesitará la dirección URL de su almacén de claves, que se encuentra en la sección de Información esencial de la página Introducción del almacén de claves.  

Invoke-RestMethod -Uri https://<your-key-vault-URL>/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"}

La respuesta tendrá un aspecto similar al siguiente:

  value       id                                                                                    attributes
  -----       --                                                                                    ----------
  'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/50644e90b13249b584c44b9f712f2e51 @{enabled=True; created=16…

Cuando haya recuperado el secreto del almacén de claves, podrá usarlo para autenticarse en un servicio que requiere un nombre y una contraseña.

Limpieza de recursos

Para limpiar los recursos, visite Azure Portal, seleccione Grupos de recursos, busque y seleccione el grupo de recursos que se creó en el proceso de este tutorial (por ejemplo, mi-test) y, a continuación, use el comando Eliminar grupo de recursos.

Como alternativa, también puede limpiar los recursos a través de PowerShell o la CLI.

Pasos siguientes

En este tutorial, ha aprendido a utilizar una identidad administrada asignada por el sistema de una máquina virtual Windows para acceder a Azure Key Vault. Para obtener más información sobre Azure Key Vault, vea: