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

Identidades administradas para recursos de Azure es una característica de Microsoft Entra ID. 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 Linux una identidad administrada asignada por el sistema para acceder a Azure Key Vault. Key Vault permite que la aplicación cliente utilice un secreto para acceder a recursos no protegidos por Microsoft Entra ID. Las identidades de servicio administradas son administradas automáticamente por Azure y le permiten autenticarse con servicios que admiten la autenticación de Microsoft Entra sin necesidad de 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
  • Obtención de un token de acceso mediante la identidad de máquina virtual y usarlo para recuperar el secreto de Key Vault

Requisitos previos

Creación de un almacén de claves

Sugerencia

Los pasos de este artículo pueden variar ligeramente en función del portal desde donde comienza.

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. Mediante 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 Microsoft Entra.  Sin embargo, no todos los servicios de Azure admiten la autenticación de Microsoft Entra. 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 acceso a él a la identidad administrada asignada por el sistema de la máquina virtual.

  1. Inicie sesión en Azure Portal.

  2. En la parte superior de la barra de navegación izquierda, seleccione Crear 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.

    Captura de pantalla que muestra la pantalla de creación de Azure Key Vault.

  7. Rellene toda la información necesaria y asegúrese de elegir la suscripción y el grupo de recursos donde creó la máquina virtual que usa 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.

    Captura de pantalla que muestra la creación de secretos.

Conceder acceso

La identidad administrada utilizada por la máquina virtual necesita acceso para leer el secreto almacenado en Key Vault.

  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.

    Captura de pantalla de la pantalla crear directiva de acceso del almacén de claves.

  4. En la sección Agregar directiva de acceso situada 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

Para completar estos pasos, necesitará un cliente SSH.  Si usa Windows, puede usar el cliente SSH en el Subsistema de Windows para Linux. Si necesita ayuda para configurar las claves del cliente de SSH, consulte Uso de SSH con Windows en Azure o Creación y uso de un par de claves SSH pública y privada para máquinas virtuales Linux en Azure.

Importante

Todos los SDK de Azure admiten la biblioteca Azure.Identity, lo que facilita la adquisición de tokens de Microsoft Entra para acceder a los servicios de destino. Obtenga más información sobre los SDK de Azure y saque provecho de la biblioteca Azure.Identity.

  1. En el portal, vaya a la máquina virtual Linux y, en Información general, seleccione Conectar

  2. Conéctese a la máquina virtual con el cliente SSH que elija. 

  3. En la ventana del terminal, use CURL para realizar una solicitud al punto de conexión local de identidades administradas para recursos de Azure y obtener un token de acceso para Azure Key Vault.    

    La solicitud CURL para el token de acceso está debajo.  

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true  
    

    La respuesta incluye el token de acceso que necesita para acceder a Resource Manager. 

    Respuesta:

    {"access_token":"eyJ0eXAi...",
    "refresh_token":"",
    "expires_in":"3599",
    "expires_on":"1504130527",
    "not_before":"1504126627",
    "resource":"https://vault.azure.net",
    "token_type":"Bearer"} 
    

    Puede usar este token de acceso para autenticarse en Azure Key Vault.  La siguiente solicitud CURL muestra cómo leer un secreto desde el almacén de claves usando CURL y la API de REST de Key Vault.  Necesita la dirección URL de Key Vault, que se encuentra en la sección Essentials de la Página de información general de Key Vault.  También necesita el token de acceso que obtuvo en la llamada anterior. 

    curl 'https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01' -H "Authorization: Bearer <ACCESS TOKEN>" 
    

    La respuesta tiene este aspecto:

    {"value":"p@ssw0rd!","id":"https://mytestkeyvault.vault.azure.net/secrets/MyTestSecret/7c2204c6093c4d859bc5b9eff8f29050","attributes":{"enabled":true,"created":1505088747,"updated":1505088747,"recoveryLevel":"Purgeable"}} 
    

Una vez recuperado el secreto de Key Vault, puede usarlo para autenticarse en un servicio que requiera un nombre y una contraseña.

Limpieza de recursos

Para limpiar los recursos, inicie sesión en Azure Portal, seleccione Grupos de recursos, busque y seleccione el grupo de recursos que se ha creado en el proceso de este tutorial (por ejemplo, mi-test) y, después, use el comando Eliminar grupo de recursos.

También puede hacerlo mediante 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 Linux para acceder a Azure Key Vault. Para obtener más información sobre Azure Key Vault, vea: