Tutorial: Uso de las identidades administradas asignadas por el sistema de una máquina virtual Windows para acceder a Azure Key VaultTutorial: Use a Windows VM system-assigned managed identity to access Azure Key Vault

Managed Identities for Azure Resources es una característica de Azure Active Directory.Managed identities for Azure resources is a feature of Azure Active Directory. Cada servicio de Azure compatible con Managed Identities for Azure Resources está sujeto a su propia escala de tiempo.Each of the Azure services that support managed identities for Azure resources are subject to their own timeline. Asegúrese de revisar el estado de disponibilidad de las identidades administradas para el recurso y los problemas conocidos antes de comenzar.Make sure you review the availability status of managed identities for your resource and known issues before you begin.

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.This tutorial shows you how a Windows virtual machine (VM) can use a system-assigned managed identity to access 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 Azure Active Directory (AD).Serving as a bootstrap, Key Vault makes it possible for your client application to then use a secret to access resources not secured by Azure Active Directory (AD). Las identidades de servicio administradas son administradas automáticamente por Azure y le permiten autenticarse con servicios que admiten la autenticación de Azure AD sin necesidad de incluir información de autenticación en el código.Managed Service Identities are automatically managed by Azure and enable you to authenticate to services that support Azure AD authentication, without including authentication information in your code.

Aprenderá a:You learn how to:

  • Concesión de acceso a la máquina virtual a un secreto almacenado en un almacén de clavesGrant your VM access to a secret stored in a Key Vault
  • Obtener un token de acceso mediante la identidad de máquina virtual y usarlo para recuperar el secreto de Key VaultGet an access token using the VM identity and use it to retrieve the secret from Key Vault

PrerrequisitosPrerequisites

Creación de un almacén de clavesCreate a Key Vault

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.This section shows how to grant your VM access to a secret stored in a Key Vault. Mediante Managed Identities for Azure Resources, el código puede obtener tokens de acceso para autenticarse en aquellos recursos que admitan la autenticación de Azure AD.Using managed identities for Azure resources, your code can get access tokens to authenticate to resources that support Azure AD authentication.Sin embargo, no todos los servicios de Azure admiten la autenticación de Azure AD.  However, not all Azure services support Azure AD authentication. 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.To use managed identities for Azure resources with those services, store the service credentials in Azure Key Vault, and use the VM's managed identity to access Key Vault to retrieve the credentials.

En primer lugar, es necesario crear un almacén de claves y conceder a la identidad administrada asignada por el sistema de la máquina virtual acceso al mismo.First, we need to create a Key Vault and grant our VM’s system-assigned managed identity access to the Key Vault.

  1. Abra Azure Portal.Open the Azure portal

  2. En la parte superior de la barra de navegación izquierda, seleccione Crear un recurso.At the top of the left navigation bar, select Create a resource

  3. En el cuadro de texto Buscar en el Marketplace, escriba Key Vault y presione Entrar.In the Search the Marketplace box type in Key Vault and hit Enter.

  4. En la lista de resultados, seleccione Key Vault.Select Key Vault from the results.

  5. Seleccione CrearSelect Create

  6. Proporcione un nombre para el nuevo almacén de claves.Provide a Name for the new Key Vault.

    Pantalla de creación de un almacén de claves

  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.Fill out all required information making sure that you choose the subscription and resource group where you created the virtual machine that you are using for this tutorial.

  8. Seleccione Revisar y crear.Select Review+ create

  9. Seleccione CrearSelect Create

Crear un secretoCreate a secret

A continuación, agregue un secreto al almacén de claves, de forma que más adelante pueda recuperarlo mediante código que se ejecuta en la máquina virtual.Next, add a secret to the Key Vault, so you can retrieve it later using code running in your VM. Para este tutorial utilizamos PowerShell, pero los mismos conceptos se aplican a cualquier código que se ejecute en esta máquina virtual.For the purpose of this tutorial, we are using PowerShell but the same concepts apply to any code executing in this virtual machine.

  1. Vaya al almacén de claves recién creado.Navigate to your newly created Key Vault.

  2. Seleccione Secretos y haga clic en Agregar.Select Secrets, and click Add.

  3. Seleccione Generar o importar.Select Generate/Import

  4. En la pantalla Crear un secreto desde Opciones de carga, deje la opción Manual seleccionada.In the Create a secret screen from Upload options leave Manual selected.

  5. Escriba un nombre y un valor para el secreto.Enter a name and value for the secret. El valor puede ser cualquiera de su elección.The value can be anything you want.

  6. Deje la fecha de activación y la fecha de expiración y deje la opción Habilitado en .Leave the activation date and expiration date clear, and leave Enabled as Yes.

  7. Haga clic en Crear para crear el secreto.Click Create to create the secret.

    Crear un secreto

Conceder accesoGrant access

Es necesario conceder acceso a la identidad administrada que usa la máquina virtual para leer el secreto que se almacenará en el almacén de claves.The managed identity used by the virtual machine needs to be granted access to read the secret that we will store in the Key Vault.

  1. Vaya al almacén de claves recién creado.Navigate to your newly created Key Vault

  2. Seleccione Directiva de acceso en el menú de la izquierda.Select Access Policy from the menu on the left side.

  3. Seleccione Agregar directiva de acceso.Select Add Access Policy

    Pantalla de creación de directivas de acceso de Key Vault

  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.In the Add access policy section under Configure from template (optional) choose Secret Management from the pull-down menu.

  5. Elija Seleccionar la entidad de seguridad y, en el campo de búsqueda, escriba el nombre de la máquina virtual que creó anteriormente.Choose Select Principal, and in the search field enter the name of the VM you created earlier. Seleccione la máquina virtual de la lista de resultados y elija Seleccionar.Select the VM in the result list and choose Select.

  6. Seleccione Agregar.Select Add

  7. Seleccione Guardar.Select Save.

Acceso a los datosAccess data

En esta sección se muestra cómo obtener un token de acceso mediante la identidad de la máquina virtual y usarlo para recuperar el secreto del almacén de claves.This section shows how to get an access token using the VM identity and use it to retrieve the secret from Key Vault. Si no tiene PowerShell 4.3.1 o superior instalado, necesitará descargar e instalar la versión más reciente.If you don’t have PowerShell 4.3.1 or greater installed, you'll need to download and install the latest version.

En primer lugar, vamos a usar la identidad administrada asignada por el sistema de la máquina virtual a fin de obtener un token de acceso para autenticarse en Key Vault:First, we use the VM’s system-assigned managed identity to get an access token to authenticate to Key Vault:

  1. En el portal, vaya a Virtual Machines y diríjase a la máquina virtual Windows. A continuación, en Introducción, haga clic en Conectar.In the portal, navigate to Virtual Machines and go to your Windows virtual machine and in the Overview, click Connect.
  2. Escriba su nombre de usuario y contraseña que agregó cuando creó la máquina virtual Windows.Enter in your Username and Password for which you added when you created the Windows VM.
  3. Ahora que ha creado una conexión a Escritorio remoto con la máquina virtual, abra PowerShell en la sesión remota.Now that you have created a Remote Desktop Connection with the virtual machine, open PowerShell in the remote session.
  4. En PowerShell, invoque la solicitud web en el inquilino para obtener el token del host local en el puerto específico de la máquina virtual.In PowerShell, invoke the web request on the tenant to get the token for the local host in the specific port for the VM.

La solicitud de PowerShell:The PowerShell request:

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

Puede ver cómo es la respuesta a continuación:You can see what the response looks like below:

Solicitud con respuesta de token

Luego, extraiga el token de acceso de la respuesta.Next, extract the access token from the response.

   $KeyVaultToken = $Response.access_token

Finalmente, use el comando Invoke-WebRequest de PowerShell para recuperar el secreto que creó anteriormente en el almacén de claves y pasar el token de acceso en el encabezado de autenticación.Finally, use PowerShell’s Invoke-WebRequest command to retrieve the secret you created earlier in the Key Vault, passing the access token in the Authorization header. 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.You’ll need the URL of your Key Vault, which is in the Essentials section of the Overview page of the Key Vault.

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

La respuesta tendrá un aspecto similar al siguiente:The response will look like this:

  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.Once you’ve retrieved the secret from the Key Vault, you can use it to authenticate to a service that requires a name and password.

Limpieza de recursosClean up resources

Para limpiar los recursos, visite Azure Portal, seleccione Grupos de recursos, busque y seleccione el grupo de recursos que se creó en el proceso de este tutorial (por ejemplo, mi-test) y, a continuación, use el comando Eliminar grupo de recursos.When you want to clean up the resources, visit the Azure portal, select Resource groups, locate, and select the resource group that was created in the process of this tutorial (such as mi-test), and then use the Delete resource group command.

Como alternativa, también puede realizar esto mediante PowerShell o la CLI.Alternatively you may also do this via PowerShell or the CLI

Pasos siguientesNext steps

En este tutorial, ha aprendido a utilizar una identidad administrada asignada por el sistema de una máquina virtual Windows para acceder a Azure Key Vault.In this tutorial, you learned how to use a Windows VM system-assigned managed identity to access Azure Key Vault. Para obtener más información sobre Azure Key Vault, vea:To learn more about Azure Key Vault see: