Compartir a través de


Tutorial: Uso de una máquina virtual Linux o VMSS para acceder a los recursos de Azure

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.

Requisitos previos

Uso de identidades administradas asignadas por el sistema de una máquina virtual Linux para acceder a Azure Data Lake Store

En este tutorial se muestra cómo usar una identidad administrada asignada por el sistema para una máquina virtual Linux a fin de acceder a Azure Data Lake Store.

Aprenderá a:

  • Conceder a la máquina virtual acceso a Azure Data Lake Store.
  • Obtener un token de acceso utilizando la identidad administrada asignada por el sistema de la máquina virtual para acceder a Azure Data Lake Store.

Conceder acceso

En esta sección se muestra cómo conceder a la máquina virtual el acceso a los archivos y las carpetas de Azure Data Lake Store. En este paso, puede usar una instancia ya existente de Data Lake Store o crear una nueva. Para crear una instancia de Data Lake Store mediante Azure Portal, siga la guía de inicio rápido de Azure Data Lake Store. También se pueden encontrar guías de inicio rápido que utilizan la CLI de Azure y Azure PowerShell en la documentación de Azure Data Lake Store.

En Data Lake Store, cree una nueva carpeta y conceda a la identidad administrada asignada por el sistema de la máquina virtual Linux permisos de lectura, escritura y ejecución de archivos en dicha carpeta:

  1. En Azure Portal, seleccione Data Lake Store en el panel izquierdo.
  2. Seleccione la instancia de Data Lake Store que desea utilizar.
  3. Seleccione Explorador de datos en la barra de comandos.
  4. Se selecciona la carpeta raíz de la instancia de Data Lake Store. Seleccione Acceso en la barra de comandos.
  5. Seleccione Agregar. En el cuadro Seleccionar, escriba el nombre de la máquina virtual, por ejemplo DevTestVM. Seleccione la máquina virtual en los resultados de la búsqueda y, después, Seleccionar.
  6. Haga clic en Seleccionar permisos. Seleccione Lectura y Ejecutar, agréguelos a Esta carpeta, agréguelos como un solo permiso de acceso y seleccione Aceptar. El permiso se debe haber agregado correctamente.
  7. Cierre el panel Acceso.
  8. Cree una carpeta y, a continuación, seleccione Nueva carpeta en la barra de comandos y asígnele un nombre, por ejemplo TestFolder y, a continuación, seleccione Aceptar.
  9. Seleccione la carpeta que creó y, a continuación, seleccione Acceso en la barra de comandos.
  10. Seleccione Agregar y, después, en el cuadro Seleccionar y escriba el nombre de la máquina virtual.
  11. Seleccione la máquina virtual en los resultados de la búsqueda y, después, Seleccionar.
  12. Seleccione Seleccionar permisosy, después, Leer, Escribir y Ejecutar.
  13. Seleccione esta carpeta para agregar a Esta carpeta y, después, agregue como Una entrada de permiso de acceso y una entrada de permiso predeterminado y, a continuación, seleccione Aceptar. El permiso se debe haber agregado correctamente.

Ahora, Managed Identities for Azure Resources puede realizar todas las operaciones en los archivos de la carpeta que ha creado. Para más información sobre cómo administrar el acceso a Data Lake Store, consulte Control de acceso en Data Lake Store.

Obtención de un token de acceso

En esta sección se muestra cómo obtener un token de acceso y llamar al sistema de archivos de Data Lake Store. Azure Data Lake Store admite de forma nativa la autenticación de Microsoft Entra, por lo que puede aceptar directamente los tokens de acceso obtenidos mediante las identidades administradas para recursos de Azure.

Para autenticarse en el sistema de archivos de Data Lake Store, se envía un token de acceso emitido por Microsoft Entra ID al punto de conexión del sistema de archivos de Data Lake Store. El token de acceso está en un encabezado de autorización en el formato Bearer \<ACCESS_TOKEN_VALUE\>. Para más información sobre la compatibilidad de Data Lake Store con la autenticación de Microsoft Entra, consulte Autenticación con Data Lake Store mediante Microsoft Entra ID.

A continuación, se autenticará en la API de REST del sistema de archivos de Data Lake Store mediante cURL para realizar solicitudes de REST.

Nota:

Los SDK de cliente del sistema de archivos de Data Lake Store todavía no son compatibles con Managed Identities for Azure Resources.

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 claves 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 el portal, vaya a la máquina virtual Linux y, a continuación, en la sección Información general, seleccione Conectar.

  2. Conéctese a la máquina virtual con el cliente SSH de su elección.

  3. En la ventana del terminal, mediante cURL, realice una solicitud al punto de conexión de las identidades administradas locales de los recursos de Azure y obtener un token de acceso para el sistema de archivos de Data Lake Store. El identificador de recurso de Data Lake Store es https://datalake.azure.net/. Es importante incluir la barra diagonal final en el identificador del recurso.

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

    Una respuesta correcta devuelve el token de acceso que se utiliza para autenticarse en Data Lake Store:

    {"access_token":"eyJ0eXAiOiJ...",
     "refresh_token":"",
     "expires_in":"3599",
     "expires_on":"1508119757",
     "not_before":"1508115857",
     "resource":"https://datalake.azure.net/",
     "token_type":"Bearer"}
    
  4. Con CURL, realice una solicitud al punto de conexión de REST del sistema de archivos de Data Lake Store para enumerar las carpetas que contiene la carpeta raíz. Esta es la mejor manera de comprobar que todo está configurado correctamente. Copie el valor del token de acceso del paso anterior. Es importante que la cadena Bearer en el encabezado de autorización tenga la "B" en mayúscula. Puede encontrar el nombre de la instancia de Data Lake Store en la sección Información general del panel Data Lake Store de Azure Portal.

    curl https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -H "Authorization: Bearer <ACCESS_TOKEN>"
    

    Una respuesta exitosa se ve así:

    {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY","blockSize":0,"accessTime":1507934941392,"modificationTime":1508105430590,"replication":0,"permission":"770","owner":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071","group":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071"}]}}
    
  5. Ahora cargue un archivo en la instancia de Data Lake Store. En primer lugar, cree un archivo para cargarlo.

    echo "Test file." > Test1.txt
    
  6. Con CURL, realice una solicitud al punto de conexión de REST del sistema de archivos de Data Lake Store para cargar el archivo en la carpeta que creó anteriormente. La carga implica una redirección y cURL sigue la redirección automáticamente.

    curl -i -X PUT -L -T Test1.txt -H "Authorization: Bearer <ACCESS_TOKEN>" 'https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/<FOLDER_NAME>/Test1.txt?op=CREATE' 
    

    Una respuesta correcta tiene el siguiente aspecto:

    HTTP/1.1 100 Continue
    HTTP/1.1 307 Temporary Redirect
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: 756f6b24-0cca-47ef-aa12-52c3b45b954c
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    
    HTTP/1.1 100 Continue
    
    HTTP/1.1 201 Created
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: af5baa07-3c79-43af-a01a-71d63d53e6c4
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    

Finalmente, ahora puede usar otras API del sistema de archivos de Data Lake Store para anexar o descargar archivos, entre otras muchas cosas.

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

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

Crear una cuenta de almacenamiento

Para ejecutar los scripts de la CLI en este ejemplo, tiene dos opciones:

Primero, cree 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. Vaya a la cuenta de almacenamiento recién creada.

  2. Seleccione Blob Service y, a continuación, Contenedores.

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

  4. Seleccione Nuevo contenedor y escriba un nombre para el contenedor.

  5. Asegúrese de que Nivel de acceso público es el valor predeterminado.

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

  6. 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 ¡Hola mundo! y guárdelo.

  7. Seleccione el nombre del contenedor y, a continuación, Cargar. Esto carga el archivo en el contenedor recién creado.

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

  9. Seleccione el archivo y, a continuación, 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. Use el token de acceso para acceder a Azure Storage. Por ejemplo, para leer el contenido del archivo de ejemplo que cargó anteriormente en el contenedor, reemplace los valores de <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! :)
    

Por último, también puede 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"

Uso de identidades administradas asignadas por el sistema de una máquina virtual Linux para acceder a Azure Storage con las credenciales de SAS

En este tutorial, se explica cómo se utilizan las identidades administradas asignadas por el sistema de una máquina virtual Linux para obtener las credenciales de Firma de acceso compartido (SAS) del almacenamiento, ; en concreto, una credencial SAS de servicio.

Nota:

La clave SAS generada en este tutorial no se restringirá ni limitará a la máquina virtual.

Una SAS de servicio concede acceso limitado a los objetos de una cuenta de almacenamiento sin exponer una clave de acceso de la cuenta. El acceso se puede conceder durante un tiempo limitado y un servicio específico. Puede usar una credencial SAS de la forma habitual al realizar operaciones de almacenamiento, por ejemplo, al usar el SDK de Storage. En este tutorial, cargará y descargará un blob mediante la CLI de Azure Storage.

Aprenderá a:

  • Crear una cuenta de almacenamiento
  • Creación de un contenedor de blobs en la cuenta de almacenamiento
  • Conceder acceso a la máquina virtual a una SAS de cuenta de almacenamiento en Resource Manager
  • Obtener un token de acceso mediante la identidad de la máquina virtual y utilizarlo para recuperar la credencial SAS desde Resource Manager

Crear una cuenta de almacenamiento

Si aún no tiene una, deberá crear una cuenta de almacenamiento. Puede omitir este paso y conceder a la identidad administrada asignada por el sistema de la máquina virtual acceso a las claves de una cuenta de almacenamiento existente.

  1. Seleccione el botón +/Crear nuevo servicio, ubicado en la esquina superior izquierda de Azure Portal.

  2. Seleccione Storage y, a continuación, Cuenta de almacenamiento y, después, aparecerá el panel Crear cuenta de almacenamiento.

  3. Escriba un Nombre para la cuenta de almacenamiento. Recuerde este nombre, ya que lo necesitará más adelante.

  4. Asegúrese de que el modelo de implementación esté establecido en Resource Manager y que Clase de cuenta esté establecida en Uso general.

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

  6. Seleccione Crear para terminar de crear una cuenta de almacenamiento.

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

Creación de un contenedor de blobs en la cuenta de almacenamiento

Más adelante en el tutorial, cargará y descargará un archivo en la nueva cuenta de almacenamiento. Dado que los archivos requieren almacenamiento de blobs, necesita crear un contenedor de blobs en el que almacenar el archivo.

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

  2. Seleccione el vínculo Contenedores en el panel de la izquierda, en Blob service.

  3. Seleccione + Contenedor en la parte superior de la página y aparecerá un panel Nuevo contenedor.

  4. Asigne un nombre al contenedor, seleccione un nivel de acceso y, a continuación, seleccione Aceptar. Necesitará el nombre que especificó más adelante en el tutorial.

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

Concesión de acceso a la identidad administrada asignada por el sistema de la máquina virtual para usar una SAS de almacenamiento

Azure Storage admite la autenticación de Microsoft Entra de manera nativa, por lo que puede usar una identidad administrada asignada por el sistema de la VM para recuperar una SAS de almacenamiento de Resource Manager. A continuación, puede usar la SAS para acceder al almacenamiento.

En esta sección, va a conceder a la identidad administrada asignada por el sistema de la máquina virtual acceso a la SAS de la cuenta de almacenamiento. Asigne el rol Colaborador de la cuenta de almacenamiento 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 utilizando la identidad de la máquina virtual y su uso para llamar a Azure Resource Manager

Durante el resto de este tutorial, trabajará desde la máquina virtual que creó anteriormente.

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 SSH, consulte:

Una vez que tenga el cliente SSH, siga estos pasos:

  1. En Azure Portal, vaya a Máquinas virtuales y vaya a la máquina virtual Linux.
  2. En la página Información general, seleccione Conectar en la parte superior de la pantalla.
  3. Copie la cadena para conectarse a la máquina virtual.
  4. Conéctese a la máquina virtual mediante un cliente SSH.
  5. Escriba la Contraseña que agregó al crear la máquina virtual Linux. Debe haber iniciado sesión correctamente.
  6. Utilice CURL para obtener un token de acceso para Azure Resource Manager.

La solicitud CURL y la respuesta para el token de acceso están a continuación:

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

Nota:

En la solicitud anterior, el valor del parámetro resource tiene que coincidir exactamente con el que Microsoft Entra ID espera. Al usar el id. de recurso de Azure Resource Manager, debe incluir la barra diagonal final en el URI.

En la siguiente respuesta, el elemento access_token se ha acortado para abreviar.

{
  "access_token":"eyJ0eXAiOiJ...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Obtención de una credencial SAS desde Azure Resource Manager para realizar llamadas de almacenamiento

A continuación, vamos a utilizar CURL para realizar una llamada a Resource Manager mediante el token de acceso que se recuperó en la sección anterior. Úselo para crear una credencial de SAS de almacenamiento. Una vez que tenga la credencial SAS de almacenamiento, puede hacer llamadas a operaciones de carga y descarga de almacenamiento.

Para esta solicitud, use los parámetros de solicitud HTTP de seguimiento para crear la credencial SAS:

{
    "canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
    "signedResource":"c",              // The kind of resource accessible with the SAS, in this case a container (c).
    "signedPermission":"rcw",          // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite.  Order is important.
    "signedProtocol":"https",          // Require the SAS be used on https protocol.
    "signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}

Incluya estos parámetros en el cuerpo de la solicitud POST para la credencial SAS. Para más información sobre los parámetros para crear una credencial SAS, consulte la referencia de REST de SAS del servicio de lista.

Use la siguiente solicitud CURL para obtener la credencial SAS. Asegúrese de reemplazar los valores de los parámetros <SUBSCRIPTION ID>, <RESOURCE GROUP>, <STORAGE ACCOUNT NAME>, <CONTAINER NAME> y <EXPIRATION TIME> por sus propios valores. Reemplace el valor de <ACCESS TOKEN> con el token de acceso que se recuperó anteriormente:

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listServiceSas/?api-version=2017-06-01 -X POST -d "{\"canonicalizedResource\":\"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>\",\"signedResource\":\"c\",\"signedPermission\":\"rcw\",\"signedProtocol\":\"https\",\"signedExpiry\":\"<EXPIRATION TIME>\"}" -H "Authorization: Bearer <ACCESS TOKEN>"

Nota:

El texto de la dirección URL anterior distingue mayúsculas de minúsculas, por lo que tiene que fijarse en si usa mayúsculas o minúsculas para los grupos de recursos para reflejarlo adecuadamente según corresponda. Además, es importante saber que se trata de una solicitud POST, no es una solicitud GET.

La respuesta CURL devuelve la credencial SAS:

{"serviceSasToken":"sv=2015-04-05&sr=c&spr=https&st=2017-09-22T00%3A10%3A00Z&se=2017-09-22T02%3A00%3A00Z&sp=rcw&sig=QcVwljccgWcNMbe9roAJbD8J5oEkYoq%2F0cUPlgriBn0%3D"} 

En una máquina virtual Linux, cree un archivo de blob de ejemplo para cargarlo en el contenedor de Blob Storage mediante el comando siguiente:

echo "This is a test file." > test.txt

A continuación, autentíquese con el comando az storage de la CLI con la credencial SAS y, a continuación, cargue el archivo en el contenedor de blobs. Para este paso, necesitará instalar la CLI de Azure más reciente en su máquina virtual, si no lo ha hecho ya.

 az storage blob upload --container-name 
                        --file 
                        --name
                        --account-name 
                        --sas-token

Respuesta:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-21T03:58:56+00:00"
}

También puede descargar el archivo usando la CLI de Azure y autenticándose con la credencial SAS.

Solicitud:

az storage blob download --container-name
                         --file 
                         --name 
                         --account-name
                         --sas-token

Respuesta:

{
  "content": null,
  "metadata": {},
  "name": "testblob",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 16,
    "contentRange": "bytes 0-15/16",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "Aryr///Rb+D8JQ8IytleDA==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D4F9929765C139\"",
    "lastModified": "2017-09-21T03:58:56+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

Uso de identidades administradas asignadas por el sistema de una máquina virtual Linux para acceder a Azure Storage mediante una clave de acceso

En este tutorial, se muestra cómo usar una identidad administrada asignada por el sistema de una máquina virtual Linux para recuperar las claves de acceso de la cuenta de almacenamiento. Puede usar una clave de acceso de almacenamiento de la forma habitual al realizar operaciones de almacenamiento, por ejemplo, al usar el SDK de Storage. En este tutorial se cargan y descargan blobs mediante la CLI de Azure.

Aprenderá a:

  • Conceder acceso a la máquina virtual a las claves de acceso a la cuenta de almacenamiento en Resource Manager
  • Obtener un token de acceso mediante la identidad de la máquina virtual y utilizarlo para recuperar las claves de acceso a la cuenta de almacenamiento desde Resource Manager

Crear una cuenta de almacenamiento

Si no tiene una cuenta de almacenamiento existente antes de iniciar este tutorial, debe crear una. Si tiene una cuenta de almacenamiento existente, siga estos pasos para conceder a la identidad administrada asignada por el sistema de la máquina virtual acceso a las claves de la cuenta de almacenamiento existente.

  1. Seleccione el botón +/Crear nuevo servicio, ubicado en la esquina superior izquierda de Azure Portal.

  2. Seleccione Storage y, a continuación, Cuenta de almacenamiento y, después, aparecerá el panel Crear cuenta de almacenamiento.

  3. Escriba un Nombre para la cuenta de almacenamiento. Recuerde este nombre, ya que lo necesitará más adelante.

  4. Asegúrese de que el modelo de implementación esté establecido en Resource Manager y que Clase de cuenta esté establecida en Uso general.

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

  6. Seleccione Crear para terminar de crear una cuenta de almacenamiento.

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

Creación de un contenedor de blobs en la cuenta de almacenamiento

Más adelante en el tutorial, cargará y descargará un archivo en la nueva cuenta de almacenamiento. Dado que los archivos requieren almacenamiento de blobs, necesita crear un contenedor de blobs en el que almacenar el archivo.

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

  2. Seleccione el vínculo Contenedores en el panel de la izquierda, en Blob service.

  3. Seleccione + Contenedor en la parte superior de la página y aparecerá un panel Nuevo contenedor.

  4. Asigne un nombre al contenedor, seleccione un nivel de acceso y, a continuación, seleccione Aceptar. Necesitará el nombre que especificó más adelante en el tutorial.

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

Concesión de acceso a la identidad administrada asignada por el sistema de la máquina virtual para usar las claves de acceso de la cuenta de almacenamiento

Azure Storage no admite la autenticación de Microsoft Entra de forma nativa. No obstante, puede usar una identidad administrada asignada por el sistema de la VM para recuperar una SAS de almacenamiento de Resource Manager y usarla para acceder al almacenamiento. En este paso, va a conceder a la identidad administrada asignada por el sistema de la máquina virtual acceso a la SAS de la cuenta de almacenamiento. Conceda acceso mediante la asignación del rol Colaborador de la cuenta de almacenamiento a la identidad administrada en el ámbito del grupo de recursos que contiene la cuenta de almacenamiento.

Para acceder a los pasos detallados, vea 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 utilizando la identidad de la máquina virtual y su uso para llamar a Azure Resource Manager

En el resto del tutorial, vamos a trabajar desde la máquina virtual que se creó anteriormente.

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.

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

  2. Conéctese a la máquina virtual mediante un cliente SSH.

  3. A continuación, debe escribir la Contraseña que agregó al crear la máquina virtual Linux.

  4. Utilice CURL para obtener un token de acceso para Azure Resource Manager.

    La solicitud CURL y la respuesta para el token de acceso están a continuación:

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

    Nota:

    En la solicitud anterior, el valor del parámetro "resource" tiene que coincidir exactamente con el que Microsoft Entra ID espera. Al usar el id. de recurso de Azure Resource Manager, debe incluir la barra diagonal final en el URI. En la siguiente respuesta, el elemento access_token se ha abreviado.

    {
      "access_token": "eyJ0eXAiOiJ...",
      "refresh_token": "",
      "expires_in": "3599",
      "expires_on": "1504130527",
      "not_before": "1504126627",
      "resource": "https://management.azure.com",
      "token_type": "Bearer"
    }
    

Obtención de las claves de almacenamiento desde Azure Resource Manager para realizar llamadas al almacenamiento

Ahora utilice CURL para llamar a Resource Manager mediante el token de acceso que se recuperó en la sección anterior, para recuperar la clave de acceso de almacenamiento. Una vez que tenemos la clave de acceso de almacenamiento, podemos hacer llamadas a operaciones de carga y descarga del almacenamiento. Asegúrese de reemplazar los valores de los parámetros <SUBSCRIPTION ID>, <RESOURCE GROUP> y <STORAGE ACCOUNT NAME> con sus propios valores. Reemplace el valor de <ACCESS TOKEN> con el token de acceso que se recuperó anteriormente:

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listKeys?api-version=2016-12-01 --request POST -d "" -H "Authorization: Bearer <ACCESS TOKEN>" 

Nota:

El texto de la dirección URL anterior distingue mayúsculas de minúsculas, por lo que tiene que fijarse en si usa mayúsculas o minúsculas para los grupos de recursos para reflejarlo adecuadamente según corresponda. Además, es importante saber que se trata de una solicitud POST, no una solicitud GET, y asegurarse de que pasa un valor para capturar un límite de longitud con -d que puede ser NULL.

La respuesta CURL le ofrece la lista de claves:

{"keys":[{"keyName":"key1","permissions":"Full","value":"iqDPNt..."},{"keyName":"key2","permissions":"Full","value":"U+uI0B..."}]} 

Cree un archivo blob de ejemplo para cargar en el contenedor de almacenamiento de blobs. En una máquina virtual Linux puede hacer esto con el siguiente comando.

echo "This is a test file." > test.txt

A continuación, autentíquese con el comando az storage de la CLI con la clave de acceso al almacenamiento y cargue el archivo en el contenedor de blobs. Para este paso, necesitará instalar la CLI de Azure más reciente en su máquina virtual, si no lo ha hecho ya.

az storage blob upload -c <CONTAINER NAME> -n test.txt -f test.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

Respuesta:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-12T03:58:56+00:00"
}

Además, puede cargar el archivo usando la CLI de Azure y autenticando con la clave de acceso al almacenamiento.

Solicitud:

az storage blob download -c <CONTAINER NAME> -n test.txt -f test-download.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

Respuesta:

{
  "content": null,
  "metadata": {},
  "name": "test.txt",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 21,
    "contentRange": "bytes 0-20/21",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "LSghAvpnElYyfUdn7CO8aw==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D5067F30D0C283\"",
    "lastModified": "2017-09-28T14:42:49+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

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

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

Creación de un almacén de claves

También necesita una máquina virtual Linux que tenga habilitadas las identidades administradas asignadas por el sistema.

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 y, a continuación, seleccione Crear.

Crear un secreto

A continuación, debe agregar 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 esta sección, usará 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 sección Crear un secreto, vaya a Opciones de carga y asegúrese de que Manual está seleccionado.

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

  6. Deje claro la fecha de activación y la fecha de expiración y asegúrese de que Habilitado esté establecido 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 panel de navegación izquierdo.

  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, a continuación, en el campo de búsqueda, escriba el nombre de la máquina virtual que creó anteriormente.  Seleccione la máquina virtual en la lista de resultados y, a continuación, 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 acceso a 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
  ```
The response includes the access token you need to access Resource Manager. 
  
Response:
  
```bash
{"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

Cuando esté listo para limpiar los recursos, inicie sesión en Azure Portal, seleccione Grupos de recursos y, a continuación, busque y seleccione el grupo de recursos que se ha creado en el proceso de este tutorial, por ejemplo, mi-test. Puede usar el comando Eliminar grupo de recursos o a través de PowerShell o la CLI.

Uso de una identidad administrada asignada por el sistema de una máquina virtual Linux para acceder a un grupo de recursos en el administrador de recursos

Sugerencia

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

En este tutorial se explica cómo crear una identidad asignada por el sistema, asignarla a una máquina virtual Linux y, a continuación, utilizar esa identidad para acceder a la API de Azure Resource Manager. Azure administra automáticamente las identidades de servicio administradas. Estas identidades permiten autenticarse en servicios que admiten la autenticación de Microsoft Entra, sin necesidad de incluir credenciales en el código.

Aprenderá a:

  • Conceda a la máquina virtual acceso al administrador de recursos de Azure.
  • Obtenga un token de acceso mediante la identidad administrada asignada por el sistema de la máquina virtual para acceder al administrador de recursos.
  1. Inicie sesión en Azure Portal con su cuenta de administrador.

  2. Vaya a la pestaña Grupos de recursos.

  3. Seleccione el grupo de recursos al que desea conceder acceso a la identidad administrada de la máquina virtual.

  4. En el panel izquierdo, seleccione Control de acceso (IAM).

  5. Seleccione Agregar y, luego, Agregar asignación de roles.

  6. En la pestaña Rol, seleccione Lector. Este rol permite ver todo recursos, pero no realizar cambios.

  7. En la pestaña Miembros, en la opción Asignar acceso a, seleccione Identidad administrada y, luego, seleccione + Seleccionar miembros.

  8. Asegúrese de que la suscripción adecuada aparece en la lista desplegable Suscripción. En Grupo de recursos, seleccione Todos los grupos de recursos.

  9. En la lista desplegable Administrar identidad, seleccione Máquina virtual.

  10. En la opción Seleccionar, elija la máquina virtual en la lista desplegable y seleccione Guardar.

    Captura de pantalla que muestra cómo agregar el rol de lector a la identidad administrada.

Obtención de un token de acceso

Use la identidad administrada asignada por el sistema de la máquina virtual para llamar al administrador de recursos y obtener un token de acceso.

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.

  1. En Azure Portal, vaya a la máquina virtual Linux.
  2. En Información general, seleccione Conectar.
  3. Conéctese a la máquina virtual con el cliente SSH que elija.
  4. En la ventana del terminal, use curl para realizar una solicitud al punto de conexión local de Managed Identities for Azure Resources para obtener un token de acceso para el administrador de recursos de Azure.   La solicitud de curl para el token de acceso está a continuación.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Nota:

El valor del parámetro resource debe coincidir exactamente con el que espera Microsoft Entra ID. En el caso del identificador de recurso de administrador de recursos, debe incluir la barra diagonal final en el URI.

La respuesta incluye el token de acceso que necesita para acceder al administrador de recursos de Azure.

Respuesta:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Use este token de acceso para acceder al administrador de recursos de Azure. Por ejemplo, para leer los detalles del grupo de recursos al que previamente concedió acceso a la máquina virtual. Reemplace los valores de <SUBSCRIPTION-ID>, <RESOURCE-GROUP> y <ACCESS-TOKEN> con los que creó anteriormente.

Nota:

La dirección URL distingue mayúsculas de minúsculas, por lo tanto, asegúrese de que usa las mismas mayúsculas y minúsculas que al asignar el nombre al grupo de recursos, así como la "G" mayúscula de resourceGroup.

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

La respuesta devuelta con la información específica del grupo de recursos:

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

Uso de una identidad administrada asignada por el usuario de una máquina virtual Linux para acceder a un grupo de recursos en Resource Manager

Sugerencia

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

En este tutorial se explica cómo crear una identidad asignada por el usuario, asignarla a una máquina virtual Linux y, a continuación, utilizar esa identidad para acceder a la API de Azure Resource Manager. Azure administra automáticamente las identidades de servicio administradas. Estas identidades permiten autenticarse en servicios que admiten la autenticación de Microsoft Entra, sin necesidad de incluir credenciales en el código.

Aprenderá a:

  • Conceda a la máquina virtual acceso a Azure Resource Manager.
  • Obtenga un token de acceso mediante la identidad administrada asignada por el sistema de la máquina virtual para acceder a Resource Manager.

Cree una identidad administrada asignada por el usuario mediante az identity create. El parámetro -g especifica el grupo de recursos en el que se crea la identidad administrada asignada por el usuario, mientras que el parámetro -n especifica su nombre. Asegúrese de reemplazar los valores de los parámetros <RESOURCE GROUP> y <UAMI NAME> por sus propios valores:

Importante

Al crear identidades administradas asignadas por el usuario, el nombre debe comenzar con una letra o un número, y puede incluir una combinación de caracteres alfanuméricos, guiones (-) y guiones bajos (_). Para que la asignación a una máquina virtual o un conjunto de escalado de máquinas virtuales funcione correctamente, el nombre está limitado a 24 caracteres. Para más información, consulte Preguntas más frecuentes y problemas conocidos.

az identity create -g <RESOURCE GROUP> -n <UAMI NAME>

La respuesta contiene detalles de la identidad administrada asignada por el usuario que se ha creado, tal y como se muestra en el siguiente ejemplo. Anote el valor id de la identidad asignada administrada por el usuario, ya que los utilizará en el paso siguiente:

{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>/credentials?tid=5678&oid=9012&aid=aaaaaaaa-0b0b-1c1c-2d2d-333333333333",
"id": "/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>",
"location": "westcentralus",
"name": "<UAMI NAME>",
"principalId": "9012",
"resourceGroup": "<RESOURCE GROUP>",
"tags": {},
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Asignación de una identidad a la máquina virtual Linux

Los clientes pueden usar las identidades administradas asignadas por el usuario en varios recursos de Azure. Utilice los comandos siguientes para asignar la identidad administrada asignada por el usuario a una única máquina virtual. Use la propiedad Id devuelta en el paso anterior para el parámetro -IdentityID.

Asigne la identidad administrada asignada por el usuario a la máquina virtual Linux utilizando el cmdlet az vm identity-assign. Asegúrese de reemplazar los valores de los parámetros <RESOURCE GROUP> y <VM NAME> con sus propios valores. Use la propiedad id devuelta en el paso anterior para el valor del parámetro --identities.

az vm identity assign -g <RESOURCE GROUP> -n <VM NAME> --identities "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>"

Concesión de acceso a un grupo de recursos en Azure Resource Manager

Las identidades administradas son identidades que el código puede utilizar para solicitar tokens de acceso que le permitan autenticarse en las API de recursos compatibles con la autenticación de Microsoft Entra. En este tutorial, el código accederá a la API de Azure Resource Manager.

Antes de que el código pueda acceder a la API, debe conceder a la identidad acceso a un recurso en Azure Resource Manager. En este caso, se trata del grupo de recursos que contiene la máquina virtual. Actualice los valores de <SUBSCRIPTION ID> y <RESOURCE GROUP> según corresponda en su entorno. No olvide reemplazar <UAMI PRINCIPALID> por la propiedad principalId devuelta por el comando az identity create en Creación de una identidad administrada asignada por el usuario:

az role assignment create --assignee <UAMI PRINCIPALID> --role 'Reader' --scope "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP> "

La respuesta contiene detalles de la asignación de roles que se ha creado, de forma similar al ejemplo siguiente:

{
  "id": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "properties": {
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "roleDefinitionId": "/subscriptions/<SUBSCRIPTION ID>/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "scope": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>"
  },
  "resourceGroup": "<RESOURCE GROUP>",
  "type": "Microsoft.Authorization/roleAssignments"
}

Obtenga un token de acceso con la identidad de la máquina virtual y úselo para llamar a Resource Manager

Sugerencia

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

En el resto del tutorial, trabajará desde la máquina virtual que creó anteriormente.

Para completar estos pasos, necesitará un cliente SSH. Si usa Windows, puede usar el cliente SSH en el Subsistema de Windows para Linux.

  1. Inicie sesión en Azure Portal.

  2. En el portal, vaya a Máquinas virtuales y diríjase a la máquina virtual Linux y, en Introducción, haga clic en Conectar. Copie la cadena para conectarse a la máquina virtual.

  3. Conéctese a la máquina virtual con el cliente SSH que elija. 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.

  4. En la ventana del terminal, con CURL, realice una solicitud con el punto de conexión de Azure Instance Metadata Service (IMDS) para obtener un token de acceso para Azure Resource Manager.

    En el ejemplo siguiente, se muestra la solicitud CURL para adquirir un token de acceso. No olvide reemplazar <CLIENT ID> por la propiedad clientId devuelta por el comando az identity create en Creación de una identidad administrada asignada por el usuario:

    curl -H Metadata:true "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com/&client_id=<UAMI CLIENT ID>"
    

    Nota:

    El valor del parámetro resource debe coincidir exactamente con el que espera Microsoft Entra ID. Al usar el identificador de recurso de Azure Resource Manager, debe incluir la barra diagonal final en el URI.

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

    Ejemplo de respuesta:

    {
    "access_token":"eyJ0eXAiOi...",
    "refresh_token":"",
    "expires_in":"3599",
    "expires_on":"1504130527",
    "not_before":"1504126627",
    "resource":"https://management.azure.com",
    "token_type":"Bearer"
    } 
    
  5. Utilice este token de acceso para acceder a Azure Resource Manager y leer las propiedades del grupo de recursos al que previamente concedió acceso a la identidad administrada asignada por el usuario. No olvide reemplazar <SUBSCRIPTION ID> y <RESOURCE GROUP> por los valores especificados anteriormente, y <ACCESS TOKEN> por el token devuelto en el paso anterior.

    Nota:

    La dirección URL distingue mayúsculas de minúsculas, por lo tanto, asegúrese de que usa las mismas mayúsculas y minúsculas que al asignar el nombre al grupo de recursos, así como la "G" mayúscula de resourceGroups.

    curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS TOKEN>" 
    

    La respuesta contiene la información específica del grupo de recursos, de forma similar al ejemplo siguiente:

    {
    "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/DevTest",
    "name":"DevTest",
    "location":"westus",
    "properties":{"provisioningState":"Succeeded"}
    } 
    

Saber más