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

Las 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 explica cómo se utiliza una identidad administrada asignada por el sistema de una máquina virtual Linux para acceder a Azure Storage. Aprenderá a:

  • Crear una cuenta de almacenamiento
  • Crear un contenedor de blobs en una cuenta de almacenamiento
  • Concesión de acceso a una identidad administrada de una máquina virtual Linux para un contenedor de Azure Storage
  • Obtención de un token de acceso y su uso para llamar a Azure Storage

Prerequisites

Para ejecutar los ejemplos de script de la CLI de este tutorial, tiene dos opciones:

Crear una cuenta de almacenamiento

En esta sección se creará una cuenta de almacenamiento.

  1. Seleccione el botón + Crear un recurso de la esquina superior izquierda de Azure Portal.

  2. Seleccione Almacenamiento y después Cuenta de almacenamiento: blob, archivo, tabla, cola.

  3. En Name (Nombre), escriba un nombre para la cuenta de almacenamiento.

  4. Deployment model (Modelo de implementación) y Account kind (Clase de cuenta) se deben establecer en Resource Manager y Storage (general purpose v1) (Almacenamiento [de uso general v1]).

  5. Asegúrese de que Suscripción y Grupo de recursos coinciden con los que especificó cuando creó la máquina virtual en el paso anterior.

  6. Seleccione Crear.

    Captura de pantalla que muestra la nueva pantalla de creación de la cuenta de almacenamiento.

Creación de un contenedor de blobs y carga de un archivo a la cuenta de almacenamiento

Los archivos requieren almacenamiento de blobs, por lo que es necesario crear un contenedor de blobs donde se almacenará el archivo. Luego cargará un archivo en el contenedor de blobs de la cuenta de almacenamiento nueva.

  1. Vuelva a la cuenta de almacenamiento recién creada.

  2. En Blob service, seleccione Contenedores.

  3. Seleccione + Contenedor en la parte superior de la página.

  4. En Nuevo contenedor, escriba un nombre para el contenedor, y mantenga el valor predeterminado en Nivel de acceso público.

    Captura de pantalla que muestra la pantalla de creación del contenedor de almacenamiento.

  5. Elija un editor de su preferencia y cree un archivo denominado hello world.txt en la máquina local. Abra el archivo y agregue el texto (sin comillas) "Hola mundo :)" y guárdelo.

  6. Para cargar el archivo en el contenedor recién creado, haga clic en el nombre del contenedor y en Cargar.

  7. En el panel Cargar blob, en Archivos, seleccione el icono de carpeta y vaya al archivo hello_world.txt en la máquina local, selecciónelo y seleccione Cargar.

    Captura de pantalla que muestra la sección cargar archivo de texto.

Concesión de acceso a un contenedor de Azure Storage para la máquina virtual

Puede usar la identidad Managed Identity de la máquina virtual para recuperar los datos en Azure Storage Blob. Las identidades administradas para recursos de Azure se pueden usar para autenticarse en recursos que admiten la autenticación de Microsoft Entra. Conceda acceso mediante la asignación del rol storage-blob-data-reader a la identidad administrada en el ámbito del grupo de recursos que contiene la cuenta de almacenamiento.

Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.

Nota:

Para más información sobre los distintos roles que puede usar para conceder permisos de almacenamiento, consulte Autorización del acceso a blobs y colas con Microsoft Entra ID

Obtención de un token de acceso y su uso para llamar a Azure Storage

Azure Storage admite de manera nativa la autenticación de Microsoft Entra, por lo que puede aceptar directamente los tokens de acceso obtenidos mediante una identidad administrada. Forma parte de la integración de Azure Storage con Microsoft Entra ID y es diferente de proporcionar las credenciales en la cadena de conexión.

Para completar los pasos siguientes, deberá trabajar desde la máquina virtual que creó anteriormente y necesitará un cliente SSH para conectarse a ella. 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.

  1. En Azure Portal, vaya a Máquinas virtuales, vaya a la máquina virtual Linux y, luego, en la página Información general, seleccione Conectar. Copie la cadena para conectarse a la máquina virtual.

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

  3. En la ventana del terminal, con CURL, realice una solicitud al punto de conexión local de la identidad administrada local para obtener un token de acceso para Azure Storage.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true
    
  4. Ahora utilice el token de acceso para acceder a Azure Storage, por ejemplo para leer el contenido del archivo de muestra que ha cargado previamente en el contenedor. Reemplace los valores <STORAGE ACCOUNT>, <CONTAINER NAME> y <FILE NAME> por los valores especificados anteriormente, y <ACCESS TOKEN> por el token devuelto en el paso anterior.

    curl https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME> -H "x-ms-version: 2017-11-09" -H "Authorization: Bearer <ACCESS TOKEN>"
    

    La respuesta incluye el contenido del archivo:

    Hello world! :)
    

Como alternativa, también podría almacenar el token en una variable y pasarlo al segundo comando, tal y como se muestra:

# Run the first curl command and capture its output in a variable
access_token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true | jq -r '.access_token')

# Run the second curl command with the access token
curl "https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME>" \
  -H "x-ms-version: 2017-11-09" \
  -H "Authorization: Bearer $access_token"

Pasos siguientes

En este tutorial, ha aprendido a habilitar una identidad administrada asignada por el sistema de una máquina virtual Linux para acceder a Azure Storage. Para más información sobre Azure Storage, consulte: