Tutorial: Uso de una máquina virtual o VMSS Windows 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
- Conocimientos sobre identidades administradas. Si no está familiarizado con la característica Managed Identities for Azure Resources, consulte esta introducción.
- Una cuenta de Azure, regístrese para obtener una cuenta gratuita.
- Para realizar los pasos de creación de los recursos necesarios y de administración de roles, debe tener permisos de Propietario en el ámbito adecuado (la suscripción o el grupo de recursos). Si necesita ayuda con la asignación de roles, consulte Asignación de roles de Azure para administrar el acceso a los recursos de una suscripción de Azure.
- Una máquina virtual Windows que tenga habilitadas las identidades administradas asignadas por el sistema.
- Si necesita crear una máquina virtual para este tutorial, consulte Creación de una máquina virtual que tenga habilitada la identidad asignada por el sistema.
Uso de una identidad administrada asignada por el sistema de una máquina virtual Windows 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 Windows para acceder a una Azure Data Lake Store. Azure administra automáticamente las identidades administradas. Estas permiten que la aplicación se autentique en servicios que admiten la autenticación de Microsoft Entra, sin necesidad de insertar credenciales en el código.
En este artículo, aprenderá a:
- Conceder a una máquina virtual acceso a Azure Data Lake Store
- Obtener un token de acceso mediante la identidad de máquina virtual y usarlo para acceder a Azure Data Lake Store
Habilitar
La habilitación de una identidad administrada asignada por el sistema es una experiencia de un solo clic. Puede habilitarla durante la creación de una máquina virtual o en las propiedades de una máquina virtual existente.
Para habilitar una identidad administrada asignada por el sistema en una máquina virtual nueva:
Inicie sesión en Azure Portal.
Crear una máquina virtual con la identidad asignada por el sistema habilitada.
Conceder acceso
Puede conceder a la máquina virtual acceso a archivos y carpetas en una instancia 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, consulte 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 la instancia de Data Lake Store, cree una carpeta y conceda el permiso de identidad asignada por el sistema de la máquina virtual. La identidad necesita derechos para leer, escribir y ejecutar archivos en esa carpeta:
- En Azure Portal, seleccione Data Lake Store en el panel de navegación izquierdo.
- Seleccione la instancia de Data Lake Store que quiere usar en este tutorial.
- Seleccione Data Explorer en la barra de comandos.
- Se selecciona la carpeta raíz de Data Lake Store. Seleccione Acceso en la barra de comandos.
- Seleccione Agregar. En el campo 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.
- Seleccione Seleccionar permisos, y a continuación Leer y ejecutar. Agregue a Esta carpeta, y seleccione Un permiso de acceso solo.
- Seleccione Aceptar, y a continuación, cierre la hoja Acceso. El permiso se debe haber agregado correctamente.
- A continuación, cree una nueva carpeta. Seleccione Nueva carpeta en la barra de comandos y asigne un nombre a la nueva carpeta. Por ejemplo, TestFolder, y a continuación, seleccione Aceptar.
- Seleccione la carpeta que ha creado y a continuación, seleccione Acceso en la barra de comandos.
- Seleccione Agregar, y después, en el campo Seleccionar escriba el nombre de la máquina virtual y seleccione Seleccionar.
- Seleccione Seleccionar permisos, y a continuación Leer, Escribir y Ejecutar. Agregue a Esta carpeta, y a continuación, agregue como Una entrada de permiso de acceso y una entrada de permiso predeterminada.
- Seleccione Aceptar. El permiso debe agregarse correctamente.
La identidad administrada asignada por el sistema de la máquina virtual puede realizar ahora todas las operaciones en los archivos de la carpeta que ha creado. Para obtener información sobre cómo administrar el acceso a Data Lake Store, consulte Control de acceso en Data Lake Store.
Acceso a los datos
Azure Data Lake Store admite de forma nativa la autenticación de Microsoft Entra, de modo que pueda aceptar directamente tokens de acceso obtenidos mediante 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, en un encabezado de autorización. El encabezado tiene 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.
Nota:
Los SDK de cliente del sistema de archivos de Data Lake Store todavía no admiten la característica Managed Identities for Azure Resources.
En este tutorial, se autenticará en la API de REST del sistema de archivos de Data Lake Store mediante PowerShell para realizar solicitudes de REST. Para usar la identidad administrada asignada por el sistema de la máquina virtual para la autenticación, es preciso realizar las solicitudes desde la máquina virtual.
En el portal, vaya a Máquinas virtuales, vaya a la máquina virtual de Windows. A continuación en Información general, seleccione Conectar.
Escriba en Nombre de usuario y la Contraseña que ha usado al crear la máquina virtual Windows.
Ahora que ha creado una Conexión a Escritorio Remoto con la máquina virtual, abra PowerShell en la sesión remota.
Con el cmdlet
Invoke-WebRequest
de PowerShell, realice una solicitud a las identidades administradas locales para el punto de conexión de recursos de Azure para obtener un token de acceso para Azure Data Lake Store. El identificador de recurso de Data Lake Store eshttps://datalake.azure.net/
. Data Lake hace una coincidencia exacta en el identificador de recurso, por lo que la barra diagonal final es importante.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -Method GET -Headers @{Metadata="true"}
Convierta la respuesta de un objeto JSON a un objeto de PowerShell.
$content = $response.Content | ConvertFrom-Json
Extraiga el token de acceso de la respuesta.
$AccessToken = $content.access_token
Compruebe que todo está configurado correctamente. Con el cmdlet
Invoke-WebRequest
de PowerShell, realice una solicitud al punto de conexión de REST de Data Lake Store para enumerar las carpetas de la carpeta raíz. Es importante que la cadenaBearer
en el encabezado Authorization tenga un mayúscula "B". Puede encontrar el nombre de su instancia de Data Lake Store en la sección Información general de su instancia de Data Lake Store.Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -Headers @{Authorization="Bearer $AccessToken"}
Una respuesta correcta tiene el siguiente aspecto:
StatusCode : 200 StatusDescription : OK Content : {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY", "blockSize":0,"accessTime":1507934941392, "modificationTime":1507944835699,"replication":0, "permission":"770","ow..." RawContent : HTTP/1.1 200 OK Pragma: no-cache x-ms-request-id: b4b31e16-e968-46a1-879a-3474aa7d4528 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict-Transport-Security: ma... Forms : {} Headers : {[Pragma, no-cache], [x-ms-request-id, b4b31e16-e968-46a1-879a-3474aa7d4528], [x-ms-webhdfs-version, 17.04.22.00], [Status, 0x0]...} Images : {} InputFields : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 556
Ahora intente cargar un archivo en Data Lake Store. En primer lugar, cree un archivo para cargarlo.
echo "Test file." > Test1.txt
Con el cmdlet
Invoke-WebRequest
de PowerShell, realice una solicitud al punto de conexión de REST de Data Lake Store para cargar el archivo en la carpeta que ha creado anteriormente. Esta solicitud implica dos pasos.- Realice una solicitud y obtenga una redirección a la ubicación donde se debe cargar el archivo.
- Cargar el archivo. Recuerde establecer el nombre de la carpeta y el archivo correctamente si usó valores diferentes de los indicados en este tutorial.
$HdfsRedirectResponse = Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
Si examina el valor de
$HdfsRedirectResponse
, debería ser parecido a la siguiente respuesta:PS C:\> $HdfsRedirectResponse StatusCode : 307 StatusDescription : Temporary Redirect Content : {} RawContent : HTTP/1.1 307 Temporary Redirect Pragma: no-cache x-ms-request-id: b7ab492f-b514-4483-aada-4aa0611d12b3 ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosn... Headers : {[Pragma, no-cache], [x-ms-request-id, b7ab492f-b514-4483-aada-4aa0611d12b3], [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...} RawContentLength : 0
Para finalizar la carga, envíe una solicitud al punto de conexión de redirección:
Invoke-WebRequest -Uri $HdfsRedirectResponse.Headers.Location -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
Una respuesta correcta se parece a esta:
StatusCode : 201 StatusDescription : Created Content : {} RawContent : HTTP/1.1 201 Created Pragma: no-cache x-ms-request-id: 1e70f36f-ead1-4566-acfa-d0c3ec1e2307 ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict... Headers : {[Pragma, no-cache], [x-ms-request-id, 1e70f36f-ead1-4566-acfa-d0c3ec1e2307], [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...} RawContentLength : 0
Por último, puede usar otras API del sistema de archivos de Data Lake Store para anexar y descargar archivos, etc.
Disable
Para deshabilitar la identidad asignada por el sistema en la máquina virtual, establezca el estado de la identidad asignada por el sistema en desactivado.
Uso de las identidades administradas asignadas por el sistema de una máquina virtual Windows para acceder a Azure Storage
En este tutorial se muestra cómo usar una identidad administrada asignada por el sistema en una máquina virtual Windows para acceder a Azure Storage. Aprenderá a:
- Crear un contenedor de blobs en una cuenta de almacenamiento
- Conceder a la identidad administrada asignada por el sistema de la máquina virtual Windows acceso a una cuenta de almacenamiento
- Obtener un acceso y usarlo para llamar a Azure Storage
Habilitar
La habilitación de una identidad administrada asignada por el sistema es una experiencia de un solo clic. Puede habilitarla durante la creación de una máquina virtual o en las propiedades de una máquina virtual existente.
Para habilitar una identidad administrada asignada por el sistema en una máquina virtual nueva:
Inicie sesión en Azure Portal.
Crear una máquina virtual con la identidad asignada por el sistema habilitada.
Crear cuenta de almacenamiento
En esta sección se creará una cuenta de almacenamiento.
Seleccione el botón + Crear un recurso que se encuentra en la esquina superior izquierda de Azure Portal.
Seleccione Almacenamiento y después Cuenta de almacenamiento: blob, archivo, tabla, cola.
En el campoNombre, escriba un nombre para la cuenta de almacenamiento.
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]).
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.
Seleccione Crear.
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.
Vaya a la cuenta de almacenamiento recién creada.
En la sección Blob Service, seleccione Contenedores.
Seleccione + Contenedor en la parte superior de la página.
En el campo Nuevo contenedor, escriba un nombre para el contenedor y a continuación, en la opciónNivel de acceso público, mantenga el valor predeterminado.
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, guárdelo.
Seleccione el nombre del contenedor para cargar el archivo en el contenedor recién creado y a continuación, seleccione Cargar.
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. A continuación, seleccione el archivo y Cargar.
Conceder acceso
En esta sección se muestra cómo conceder acceso a un contenedor de Azure Storage para la máquina virtual. Puede usar la identidad administrada asignada por el sistema de la máquina virtual para recuperar los datos en Azure Storage Blob.
Vaya a la cuenta de almacenamiento recién creada.
Seleccione Access Control (IAM) .
Seleccione Agregar>Agregar asignación de roles para abrir la página Agregar asignación de roles.
Asigne el siguiente rol. Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.
Configuración Valor Role Lector de datos de blobs de almacenamiento Asignar acceso a Identidad administrada Asignada por el sistema Máquina virtual Seleccionar <la máquina virtual>
Acceso a los datos
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. Este enfoque usa la integración de Azure Storage con Microsoft Entra ID y es diferente de proporcionar las credenciales en la cadena de conexión.
Este es un ejemplo de código de .NET de apertura de una conexión a Azure Storage. En el ejemplo se usa un token de acceso y, a continuación, se lee el contenido del archivo que creó anteriormente. Este código se debe ejecutar en la máquina virtual para poder acceder al punto de conexión de la identidad administrada de la máquina virtual. Se requiere .NET framework 4.6 o posterior para usar el método de token de acceso. Reemplace el valor de <URI to blob file>
según corresponda. Para obtener este valor, vaya al archivo que creó y cargó en el almacenamiento de blobs y copie la dirección URL bajo Propiedades en la página Información general.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
namespace StorageOAuthToken
{
class Program
{
static void Main(string[] args)
{
//get token
string accessToken = GetMSIToken("https://storage.azure.com/");
//create token credential
TokenCredential tokenCredential = new TokenCredential(accessToken);
//create storage credentials
StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);
Uri blobAddress = new Uri("<URI to blob file>");
//create block blob using storage credentials
CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);
//retrieve blob contents
Console.WriteLine(blob.DownloadText());
Console.ReadLine();
}
static string GetMSIToken(string resourceID)
{
string accessToken = string.Empty;
// Build request to acquire MSI token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
request.Headers["Metadata"] = "true";
request.Method = "GET";
try
{
// Call /token endpoint
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Pipe response Stream to a StreamReader, and extract access token
StreamReader streamResponse = new StreamReader(response.GetResponseStream());
string stringResponse = streamResponse.ReadToEnd();
JavaScriptSerializer j = new JavaScriptSerializer();
Dictionary<string, string> list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
accessToken = list["access_token"];
return accessToken;
}
catch (Exception e)
{
string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
return accessToken;
}
}
}
}
La respuesta incluye el contenido del archivo:
Hello world! :)
Disable
Para deshabilitar la identidad asignada por el sistema en la máquina virtual, establezca el estado de la identidad asignada por el sistema en desactivado.
Uso de las identidades administradas asignadas por el sistema de una máquina virtual Windows para acceder a Azure Storage utilizando una credencial de SAS
Este tutorial muestra cómo usar una identidad asignada por el sistema para una máquina virtual Windows a fin de obtener una credencial de Firma de acceso compartido (SAS) del almacenamiento.
Una SAS de servicio proporciona la capacidad de conceder acceso limitado a objetos en una cuenta de almacenamiento durante un tiempo limitado y para un servicio específico (en este caso, un servicio de blobs). SAS lo hace sin exponer una clave de acceso de cuenta. Puede usar una credencial de SAS como de costumbre para las operaciones de almacenamiento; por ejemplo, cuando se usa un SDK de almacenamiento. En este tutorial se muestra cómo cargar y descargar un blob mediante PowerShell de Azure Storage.
Aprenderá a:
- Crear una 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
Nota:
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Crear una cuenta de almacenamiento
Si aún no tiene una, debe crear una cuenta de almacenamiento. De lo contrario, siga estos pasos para conceder acceso a la identidad administrada asignada por el sistema de la máquina virtual a la credencial de SAS de una cuenta de almacenamiento existente.
Seleccione Storage, y después Cuenta de almacenamiento.
En el panel Crear cuenta de almacenamiento, escriba un nombre para la cuenta de almacenamiento.
Asegúrese de que el Modelo de implementación y el Tipo de cuenta están configurados como Administrador de recursos y Propósito general.
Compruebe que la Suscripción y el Grupo de Recursos coincidan con los elementos que especificó al crear su máquina virtual en el paso anterior.
Seleccione Crear para crear 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, debe crear un contenedor de blobs para almacenar el archivo.
Vaya a la cuenta de almacenamiento recién creada.
Seleccione el vínculo Contenedores en el panel de la izquierda, en Blob service.
Seleccione + Contenedor en la parte superior de la página y a continuación, aparecerá un panel Nuevo contenedor.
Asigne un nombre al contenedor, determine el nivel de acceso y seleccioneAceptar. El nombre que especifique aquí se usará más adelante en el tutorial.
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 no admite la autenticación de Microsoft Entra de forma nativa. No obstante, puede usar una identidad administrada para recuperar una SAS de almacenamiento de Resource Manager y usar la SAS 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.
Vuelva a la cuenta de almacenamiento recién creada.
Seleccione Access Control (IAM) .
Seleccione Agregar>Agregar asignación de roles para abrir la página Agregar asignación de roles.
Asigne el siguiente rol. Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.
Configuración Valor Role Colaborador de la cuenta de almacenamiento Asignar acceso a Identidad administrada Asignada por el sistema Máquina virtual Seleccionar <La máquina virtual Windows>
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 de este tutorial, trabajará desde la máquina virtual. Para ello, debe usar los cmdlets de PowerShell de Azure Resource Manager. Si no tiene PowerShell instalado, descargue la versión más reciente antes de continuar.
En Azure Portal, vaya a Máquinas virtuales, vaya a la máquina virtual Windows y, a continuación, desde la página Información general, seleccione Conectar en la parte superior.
Escriba en Nombre de usuario y la Contraseña que ha usado al crear la máquina virtual de Windows.
Establezca una Conexión de Escritorio Remoto con la máquina virtual.
Abra PowerShell en la sesión remota y a continuación, use el cmdlet
Invoke-WebRequest
de PowerShell para obtener un token de Azure Resource Manager de la identidad administrada local para el punto de conexión de recursos de Azure.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Method GET -Headers @{Metadata="true"}
Nota:
El valor del parámetro
resource
debe coincidir exactamente con el que espera Microsoft Entra ID. Al usar el id. de recurso de Azure Resource Manager, debe incluir la barra diagonal final en el URI.A continuación, extraiga el elemento
content
, que se almacena como una cadena con formato de notación de objetos JavaScript (JSON) en el objeto$response
.$content = $response.Content | ConvertFrom-Json
Luego, extraiga el token de acceso de la respuesta.
$ArmToken = $content.access_token
Obtención de una credencial SAS desde Azure Resource Manager para realizar llamadas de almacenamiento
Por último, use PowerShell para llamar a Resource Manager mediante el token de acceso que recuperó en la sección anterior. Use este token para crear una credencial de SAS de almacenamiento. Una vez que tenga la credencial de SAS, puede llamar a otras operaciones 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.
}
Los parámetros aquí se incluyen en el cuerpo POST de la solicitud para la credencial de SAS. Para obtener más información sobre los parámetros para crear una credencial de SAS, consulte la Referencia de REST de SAS de List Service.
Convierta los parámetros en JSON y a continuación, llame al punto de conexión
listServiceSas
de almacenamiento para crear la credencial de SAS:$params = @{canonicalizedResource="/blob/<STORAGE-ACCOUNT-NAME>/<CONTAINER-NAME>";signedResource="c";signedPermission="rcw";signedProtocol="https";signedExpiry="2017-09-23T00:00:00Z"} $jsonParams = $params | ConvertTo-Json
$sasResponse = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE-ACCOUNT-NAME>/listServiceSas/?api-version=2017-06-01 -Method POST -Body $jsonParams -Headers @{Authorization="Bearer $ArmToken"}
Nota:
La dirección URL distingue mayúsculas de minúsculas, por lo que debe asegurarse de que usa el mismo caso exacto que se usa al llamar al grupo de recursos, incluido el "G" en mayúsculas en
resourceGroups
.A continuación, extraiga la credencial de SAS de la respuesta:
$sasContent = $sasResponse.Content | ConvertFrom-Json $sasCred = $sasContent.serviceSasToken
Si inspecciona la credencial de SAS, debería ver algo parecido a esto:
PS C:\> $sasCred sv=2015-04-05&sr=c&spr=https&se=2017-09-23T00%3A00%3A00Z&sp=rcw&sig=JVhIWG48nmxqhTIuN0uiFBppdzhwHdehdYan1W%2F4O0E%3D
Cree un archivo denominado test.txt. A continuación, use la credencial de SAS para autenticarse con el cmdlet
New-AzStorageContent
, cargue el archivo en el contenedor de blob y a continuación, descargue el archivo.echo "This is a test text file." > test.txt
Asegúrese de instalar en primer lugar los cmdlets de Azure Storage, mediante
Install-Module Azure.Storage
. A continuación, cargue el blob que acaba de crear mediante el cmdletSet-AzStorageBlobContent
de PowerShell:$ctx = New-AzStorageContext -StorageAccountName <STORAGE-ACCOUNT-NAME> -SasToken $sasCred Set-AzStorageBlobContent -File test.txt -Container <CONTAINER-NAME> -Blob testblob -Context $ctx
Respuesta:
ICloudBlob : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob BlobType : BlockBlob Length : 56 ContentType : application/octet-stream LastModified : 9/21/2017 6:14:25 PM +00:00 SnapshotTime : ContinuationToken : Context : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext Name : testblob
También puede descargar el blob que ha cargado mediante el cmdlet
Get-AzStorageBlobContent
de PowerShell:Get-AzStorageBlobContent -Blob testblob -Container <CONTAINER-NAME> -Destination test2.txt -Context $ctx
Respuesta:
ICloudBlob : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob BlobType : BlockBlob Length : 56 ContentType : application/octet-stream LastModified : 9/21/2017 6:14:25 PM +00:00 SnapshotTime : ContinuationToken : Context : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext Name : testblob
Uso de una identidad administrada asignada por el sistema de una máquina virtual Windows para acceder a Azure SQL Database
En este tutorial se muestra cómo usar una identidad asignada por el sistema en una máquina virtual de Windows para acceder a Azure SQL Database. Las identidades de MSI son administradas automáticamente por Azure y le permiten autenticar los servicios que admiten la autenticación de Microsoft Entra sin necesidad de insertar credenciales en el código.
Aprenderá a:
- Dar a una máquina virtual acceso a Azure SQL Database
- Habilitar la autenticación de Microsoft Entra
- Cree un usuario contenido en la base de datos que represente la identidad asignada por el sistema de la máquina virtual.
- Obtener un token de acceso mediante la identidad de máquina virtual y usarlo para hacer consultas a Azure SQL Database
Habilitar
La habilitación de una identidad administrada asignada por el sistema es una experiencia de un solo clic. Puede habilitarla durante la creación de una máquina virtual o en las propiedades de una máquina virtual existente.
Para habilitar una identidad administrada asignada por el sistema en una máquina virtual nueva:
Inicie sesión en Azure Portal.
Crear una máquina virtual con la identidad asignada por el sistema habilitada.
Conceder acceso
Para conceder a la máquina virtual acceso a una base de datos de Azure SQL Database, use un servidor SQL server lógico existente o cree uno nuevo. Para crear un nuevo servidor y una base de datos mediante Azure Portal, siga el Inicio rápido de Azure SQL. También hay guías de inicio rápido que utilizan la CLI de Azure y Azure PowerShell en la documentación de Azure SQL.
Siga estos pasos para conceder a la máquina virtual acceso a una base de datos:
- Habilite la autenticación de Microsoft Entra para el servidor.
- Cree un usuario contenido en la base de datos que represente la identidad asignada por el sistema de la máquina virtual.
Habilitar la autenticación de Microsoft Entra
Para configurar la autenticación de Microsoft Entra:
- En Azure Portal, seleccione SQL Server en el panel de navegación izquierdo.
- Seleccione el servidor SQL server que desea habilitar para la autenticación de Microsoft Entra.
- En la sección Configuración de la hoja, haga clic en Administrador de Active Directory.
- En la barra de comandos, seleccione Establecer administrador.
- Seleccione una cuenta de usuario de Microsoft Entra para que sea un administrador para el servidor y seleccione Seleccionar.
- En la barra de comandos, seleccione Guardar.
Creación del usuario contenido
En esta sección se muestra cómo crear un usuario contenido en la base de datos que representa la identidad asignada por el sistema de la máquina virtual. Para este paso, necesita Microsoft SQL Server Management Studio (SSMS) instalado. Antes de empezar, puede resultar útil revisar los siguientes artículos para obtener información general sobre la integración de Microsoft Entra:
- Autenticación universal con SQL Database y Azure Synapse Analytics (compatibilidad de SSMS con MFA)
- Configuración y administración de la autenticación de Microsoft Entra con SQL Database o Azure Synapse Analytics
Las bases de datos SQL requieren nombres para mostrar únicos de Microsoft Entra ID. Con esto, las cuentas de Microsoft Entra, como usuarios, grupos y entidades de servicio (aplicaciones), y los nombres de máquina virtual habilitados para la identidad administrada deben definirse de forma única en Microsoft Entra ID específica para sus correspondientes nombres de pantalla. SQL comprueba los nombres para mostrar Microsoft Entra ID durante la creación de estos usuarios en T-SQL. Si los nombres para mostrar no son únicos, se produce un error en el comando y se le pide que proporcione un nombre para mostrar único de Microsoft Entra ID para cada cuenta determinada.
Para crear un usuario independiente
Abra SQL Server Management Studio.
En el cuadro de diálogo Conectar al servidor, escriba el nombre de su servidor en el campo Nombre del servidor.
En el campo Autenticación, seleccione Active Directory - Universal compatible con MFA.
En el campo Nombre de usuario, escriba el nombre de la cuenta de Microsoft Entra que estableció como administradora del servidor, por ejemplo, cjensen@fabrikam.com.
Seleccione Opciones.
En el campo Conectar una base de datos, escriba el nombre de la base de datos que no es del sistema y que desea configurar.
Seleccione Conectar, y complete el proceso de inicio de sesión.
En el Explorador de objetos, expanda la carpeta Bases de datos.
Haga clic con el botón derecho en una base de datos de usuario y seleccione Nueva consulta.
En la ventana de consulta, escriba la línea siguiente y seleccione Ejecutar en la barra de herramientas:
Nota:
VMName
en el siguiente comando es el nombre de la máquina virtual en la que habilitó la identidad asignada por el sistema en la sección de requisitos previos.CREATE USER [VMName] FROM EXTERNAL PROVIDER
El comando debe completarse correctamente mediante la creación del usuario contenido para la identidad asignada por el sistema de la máquina virtual.
Desactive la ventana de consulta, escriba la línea siguiente y seleccione Ejecutar en la barra de herramientas:
Nota:
VMName
en el siguiente comando es el nombre de la máquina virtual en la que habilitó la identidad asignada por el sistema en la sección de requisitos previos.Si encuentra el error "La entidad de seguridad
VMName
tiene un nombre para mostrar duplicado", anexe la instrucción CREATE USER con WITH OBJECT_ID='xxx'.ALTER ROLE db_datareader ADD MEMBER [VMName]
El comando debe completarse correctamente concediéndole al usuario contenido la capacidad de leer toda la base de datos.
El código que se ejecuta en la máquina virtual ahora puede obtener un token con su identidad administrada asignada por el sistema y usarlo para autenticarse en el servidor.
Acceso a los datos
En esta sección se muestra cómo obtener un token de acceso mediante la identidad administrada asignada por el sistema de la máquina virtual y usarla para llamar a Azure SQL. Azure SQL admite de forma nativa la autenticación de Microsoft Entra, por lo que puede aceptar directamente los tokens de acceso obtenidos con la característica identidades administradas para recursos de Azure. En este método no es necesario proporcionar credenciales en la cadena de conexión.
Este es un código .NET de ejemplo que abre una conexión a SQL mediante la autenticación de identidad administrada de Active Directory. El código se debe ejecutar en la máquina virtual para poder acceder al punto de conexión de la identidad administrada asignada por el sistema de la máquina virtual.
Se requiere .NET Framework 4.6.2 o posterior o .NET Core 3.1 o posterior para usar este método. Reemplace los valores de AZURE-SQL-SERVERNAME y DATABASE según corresponda y agregue una referencia de NuGet a la biblioteca Microsoft.Data.SqlClient.
using Microsoft.Data.SqlClient;
try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
Nota:
Puede usar identidades administradas mientras trabaja con otras opciones de programación mediante nuestros SDK.
O bien, use PowerShell para probar la configuración de un extremo a otro sin tener que escribir e implementar una aplicación en la máquina virtual.
En el portal, vaya a Virtual Machines, vaya a la máquina virtual Windows y a continuación, en la Información general, seleccione Conectar.
Escriba la Credencial de administrador de máquina virtual que ha agregado al crear la máquina virtual Windows.
Ahora que ha creado una Conexión a Escritorio remoto con la máquina virtual, abra PowerShell en una sesión remota.
Con el cmdlet
Invoke-WebRequest
de PowerShell, realice una solicitud al punto de conexión de la identidad administrada local para obtener un token de acceso para Azure SQL.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}
Convierta la respuesta de un objeto JSON a un objeto de PowerShell.
$content = $response.Content | ConvertFrom-Json
Extraiga el token de acceso de la respuesta.
$AccessToken = $content.access_token
Abra una conexión con el servidor. No olvide reemplazar los valores de AZURE-SQL-SERVERNAME y DATABASE.
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;" $SqlConnection.AccessToken = $AccessToken $SqlConnection.Open()
Después, cree una consulta y envíela al servidor. No olvide reemplazar el valor de TABLE.
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "SELECT * from <TABLE>;" $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet)
Por último, examine el valor de $DataSet.Tables[0]
para ver los resultados de la consulta.
Disable
Para deshabilitar la identidad asignada por el sistema en la máquina virtual, establezca el estado de la identidad asignada por el sistema en desactivado.
Uso de las identidades administradas asignadas por el sistema de una máquina virtual Windows para acceder a Azure Key Vault
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. 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. Azure administra automáticamente las identidades administradas. Permiten autenticarse en servicios que admiten la autenticación de Microsoft Entra, 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
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. 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 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, debe crear una instancia de Key Vault y conceder a la máquina virtual de acceso a la identidad administrada asignada por el sistema a Key Vault.
Inicie sesión en Azure Portal.
En la parte superior de la barra de navegación izquierda, seleccione Crear recurso.
En el cuadro Buscar en Marketplace escriba Key Vault y presione Entrar.
Seleccione Key Vault en los resultados y a continuación, seleccione Crear.
Proporcione un Nombre para el nuevo almacén de claves.
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.
Seleccione Revisar y crear.
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 se usa PowerShell, pero los mismos conceptos se aplican a cualquier código que ejecute en la máquina virtual.
Vaya al almacén de claves recién creado.
Seleccione Secretos y, después, Agregar.
Seleccione Generar o importar.
En la pantalla Crear un secreto, en las Opciones Cargar deje Manual seleccionado.
Escriba un nombre y un valor para el secreto. El valor puede ser cualquiera de su elección.
Deje la fecha de activación y la fecha de expiración y deje la opción Habilitado en Sí.
Seleccione Crear para crear el secreto.
Conceder acceso
Es necesario conceder acceso a la identidad administrada usada por la máquina virtual para leer el secreto que almacena Key Vault.
Vaya al almacén de claves recién creado.
Seleccione Directiva de acceso en el menú de la izquierda.
Seleccione Agregar directiva de acceso.
En la sección Agregar directiva de acceso, en Configurar desde la plantilla (opcional), elija Administración de secretos en el menú desplegable.
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 elija Seleccionar.
Seleccione Agregar.
Seleccione Guardar.
Acceso a los datos
En esta sección se muestra cómo obtener un token de acceso mediante la identidad de máquina virtual y usarlo para recuperar el secreto de Key Vault. Si no tiene PowerShell 4.3.1 o superior instalado, necesitará descargar e instalar la versión más reciente.
Nota:
El método de usar PowerShell para autenticar y recuperar el secreto es preferible en escenarios en los que se requieren específicamente identidades administradas o al insertar el proceso dentro del código de una aplicación.
En primer lugar, use la identidad administrada asignada por el sistema de la máquina virtual para obtener un token de acceso para autenticarse en Key Vault:
- En el portal, vaya a Máquinas virtuales y vaya a la máquina virtual Windows y a continuación, en Información general, seleccione Conectar.
- Escriba en el Nombre de usuario y Contraseña que ha agregado al crear la Máquina virtual Windows.
- Ahora que ha creado una Conexión a Escritorio remoto con la máquina virtual, abra PowerShell en una sesión remota.
- 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.
Nota:
Si usa una nube soberana, como GCC-H, use el punto de conexión vault.usgovcloudapi.net
en lugar de vault.azure.net
en el cmdlet de PowerShell.
Solicitud de PowerShell de ejemplo:
$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"}
Nota:
Al trabajar con nubes soberanas, debe realizar ajustes en el punto de conexión especificado al final del cmdlet.
Por ejemplo, vault.usgovcloudapi.net
debe usarse al trabajar con la nube de Azure Government, con este resultado final:
$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.usgovcloudapi.net' -Method GET -Headers @{Metadata="true"
Para confirmar que el sufijo coincide con el entorno, consulte el artículo Información general de seguridad de Azure Key Vault.
La respuesta debería tener este aspecto:
Luego, extraiga el token de acceso de la respuesta.
$KeyVaultToken = $Response.access_token
Por último, use el cmdlet Invoke-WebRequest
de PowerShell para recuperar el secreto que ha creado anteriormente en Key Vault, pasando el token de acceso en el encabezado Autorizació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 debería tener este aspecto:
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
Por último, cuando quiera limpiar los recursos, inicie sesión en el 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
). A continuación, use el comando Eliminar grupo de recursos.
O bien, también puede limpiar los recursos mediante PowerShell o la CLI.
Uso de las identidades administradas asignadas por el sistema de una máquina virtual Windows para acceder a 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 sistema, asignarla a una máquina virtual (VM) Windows y, a continuación, usar 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.
Inicie sesión en Azure Portal con su cuenta de administrador.
Vaya a la pestaña Grupos de recursos.
Seleccione el grupo de recursos al que desea conceder acceso a la identidad administrada de la máquina virtual.
En el panel izquierdo, seleccione Control de acceso (IAM).
Seleccione Agregar y, luego, Agregar asignación de roles.
En la pestaña Rol, seleccione Lector. Este rol permite ver todo recursos, pero no realizar cambios.
En la pestaña Miembros, en la opción Asignar acceso a, seleccione Identidad administrada, luego seleccione + Seleccionar miembros.
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.
En la lista desplegable Administrar identidad, seleccione Máquina virtual.
En Seleccionar, elija la máquina virtual en la lista desplegable y seleccione Guardar.
Obtención de un token de acceso
Use la identidad administrada asignada por el sistema de la máquina virtual para llamar a Resource Manager 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.
- En el portal, vaya a la máquina virtual Linux y, en Información general, seleccione Conectar.
- Conéctese a la máquina virtual con el cliente SSH que elija.
- 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 Azure Resource Manager. La solicitud decurl
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 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.
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 a Azure Resource Manager; por ejemplo, para leer los detalles del grupo de recursos al que ha concedido previamente acceso a esta 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 "resourceGroups".
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 identidades administradas asignadas por el usuario en máquinas virtuales Windows para acceder a Azure Resource Manager
En este tutorial se explica cómo crear una identidad asignada por el usuario, asignarla a una máquina virtual (VM) Windows y, a continuación, usar 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:
- Crear una identidad administrada asignada por el usuario
- Asignar la identidad asignada por el usuario a la máquina virtual Windows.
- Conceder a la identidad asignada por el usuario acceso a un grupo de recursos de Azure Resource Manager.
- Obtener un token de acceso utilizando la identidad asignada por el usuario y usarlo para llamar a Azure Resource Manager.
- Leer las propiedades de un grupo de recursos
Nota:
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Configuración de Azure PowerShell de forma local
Para ejecutar scripts en este ejemplo, tiene dos opciones:
- Use el servicio Azure Cloud Shell, que puede abrir mediante el botón Probar, ubicado en la esquina superior derecha de los bloques de código.
- Ejecute los scripts localmente con Azure PowerShell, tal como se describe en la sección siguiente.
Para usar Azure PowerShell localmente para este tutorial (en lugar de usar Cloud Shell), complete los pasos siguientes:
Instale la versión más reciente de Azure PowerShell si aún no lo ha hecho.
Inicie de sesión en Azure:
Connect-AzAccount
Instalar la versión más reciente de PowerShellGet.
Install-Module -Name PowerShellGet -AllowPrerelease
Es posible que necesite
Exit
fuera de la sesión de PowerShell actual después de ejecutar este comando para el paso siguiente.Instale la versión publicada del módulo
Az.ManagedServiceIdentity
. Necesita esto para realizar las operaciones de identidad administrada asignadas por el usuario en este tutorial:Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
Habilitar
Para escenarios basados en una identidad asignada por el usuario, debe realizar los pasos siguientes en esta sección:
- Creación de una identidad.
- Asignación de la identidad recién creada.
Creación de la identidad
En esta sección se muestra cómo crear una identidad asignada por el usuario, que se crea como un recurso de Azure independiente. Con el cmdlet New-AzUserAssignedIdentity, Azure crea una identidad en el inquilino de Microsoft Entra que puede asignar a una o varias instancias de servicio de Azure.
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.
New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1
La respuesta contiene detalles de la identidad asignada por el usuario creada, similar al ejemplo siguiente. Defina los valores Id
y ClientId
para la identidad asignada por el usuario, ya que se usan en los pasos siguientes:
{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: aaaabbbb-0000-cccc-1111-dddd2222eeee
PrincipalId: aaaaaaaa-bbbb-cccc-1111-222222222222
ClientId: 00001111-aaaa-2222-bbbb-3333cccc4444
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb&aid=00001111-aaaa-2222-bbbb-3333cccc4444
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}
Asignación de la identidad
En esta sección se muestra cómo asignar la identidad asignada por el usuario a una máquina virtual Windows. Los clientes pueden usar las identidades asignadas por el usuario en diversos recursos de Azure. Use los comandos siguientes para asociar la identidad asignada por el usuario con una única máquina virtual. Use la propiedad Id
devuelta en el paso anterior para el parámetro -IdentityID
.
$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVM -ResourceGroupName TestRG -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
Conceder acceso
En esta sección se muestra cómo conceder acceso de identidad asignada por el usuario a un grupo de recursos en Azure Resource Manager. Identidades administradas para recursos de Azure dispone de 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, tendrá acceso al grupo de recursos para el que se encuentra la máquina virtual. Actualice el valor de <SUBSCRIPTIONID>
según corresponda en su entorno.
$spID = (Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1).principalid
New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/"
La respuesta contiene detalles de la asignación de roles que se ha creado, de forma similar al ejemplo siguiente:
RoleAssignmentId: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: 00000000-0000-0000-0000-000000000000
ObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
ObjectType: ServicePrincipal
CanDelegate: False
Acceso a los datos
Sugerencia
Los pasos de este artículo podrían variar ligeramente en función del portal desde donde comienza.
Obtención de un token de acceso
En el resto del tutorial, trabajará desde la máquina virtual que ha creado anteriormente.
Inicie sesión en Azure Portal.
En el portal, vaya a Máquinas virtuales y vaya a la máquina virtual Windows. En Información general, seleccione Conectar.
Escriba el Nombre de usuario y Contraseña que ha usado al crear la máquina virtual Windows.
Ahora que ha creado una Conexión a Escritorio Remoto con su máquina virtual, abra PowerShell en una sesión remota.
Con el cmdlet
Invoke-WebRequest
de PowerShell, realice una solicitud a las identidades administradas locales para el punto de conexión de recursos de Azure para obtener un token de acceso para Azure Resource Manager.client_id
es el valor que se devuelve al crear la identidad administrada asignada por el usuario.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"} $content = $response.Content | ConvertFrom-Json $ArmToken = $content.access_token
Lectura de las propiedades
Por último, use el token de acceso recuperado en el paso anterior para acceder a Azure Resource Manager y a continuación, lea las propiedades del grupo de recursos al que concedió acceso de identidad asignado por el usuario. Reemplace <SUBSCRIPTION ID>
con el identificador de la suscripción de su entorno.
(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content
La respuesta contiene la información específica del grupo de recursos, de forma similar al ejemplo siguiente:
{"id":"/subscriptions/<SUBSCRIPTIONID>/resourceGroups/myResourceGroupVM","name":"myResourceGroupVM","location":"eastus","properties":{"provisioningState":"Succeeded"}}
Saber más
- ¿Qué son las identidades administradas de recursos de Azure?
- Inicio rápido: Uso de las identidades administradas asignadas por el usuario de una máquina virtual para acceder a Azure Resource Manager
- Creación, enumeración y eliminación de una identidad administrada asignada por el usuario con Azure PowerShell