Esercitazione: Usare un'identità gestita assegnata dal sistema per una macchina virtuale Windows per accedere ad Azure Key VaultTutorial: Use a Windows VM system-assigned managed identity to access Azure Key Vault

Le identità gestite per le risorse di Azure sono una funzionalità di Azure Active Directory.Managed identities for Azure resources is a feature of Azure Active Directory. Tutti i servizi di Azure che supportano le identità gestite per le risorse di Azure sono soggetti alla sequenza temporale di tali entità.Each of the Azure services that support managed identities for Azure resources are subject to their own timeline. Prima di iniziare, assicurarsi di esaminare lo stato di disponibilità delle identità gestite per la risorsa e i problemi noti.Make sure you review the availability status of managed identities for your resource and known issues before you begin.

Questa esercitazione mostra come usare un'identità gestita assegnata dal sistema per una macchina virtuale Windows per accedere ad 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. Fungendo da bootstrap, Key Vault consente quindi all'applicazione client di usare un segreto per accedere alle risorse non protette da 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). Le identità del servizio gestito vengono gestite automaticamente da Azure e consentono di eseguire l'autenticazione ai servizi che supportano l'autenticazione di Azure AD senza la necessità di includere le informazioni di autenticazione nel codice.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.

Si apprenderà come:You learn how to:

  • Concedere alla macchina virtuale l'accesso a un segreto archiviato in un insieme di credenziali delle chiaviGrant your VM access to a secret stored in a Key Vault
  • Ottenere un token di accesso usando l'identità  della macchina virtuale e usarlo per recuperare il segreto dall'insieme di credenziali delle chiaviGet an access token using the VM identity and use it to retrieve the secret from Key Vault

PrerequisitiPrerequisites

Creare un insieme di credenziali delle chiaviCreate a Key Vault

Questa sezione illustra come concedere alla macchina virtuale l'accesso a un segreto archiviato in un insieme di credenziali delle chiavi.This section shows how to grant your VM access to a secret stored in a Key Vault. Usando le identità gestite per le risorse di Azure, il codice può ottenere i token di accesso per autenticarsi alle risorse che supportano l'autenticazione di Azure AD.Using managed identities for Azure resources, your code can get access tokens to authenticate to resources that support Azure AD authentication.Tuttavia, non tutti i servizi di Azure supportano l'autenticazione di Azure AD.  However, not all Azure services support Azure AD authentication. Per usare le identità gestite per le risorse di Azure con questi servizi, archiviare le credenziali del servizio in Azure Key Vault e usare l'identità gestita della macchina virtuale per accedere a Key Vault e recuperare le credenziali.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.

In primo luogo, è necessario creare un insieme di credenziali delle chiavi e concedere l'accesso a tale insieme all'identità gestita assegnata dal sistema della macchina virtuale.First, we need to create a Key Vault and grant our VM’s system-assigned managed identity access to the Key Vault.

  1. Aprire il portale di AzureOpen the Azure portal

  2. Nella parte superiore della barra di spostamento a sinistra selezionare Crea una risorsaAt the top of the left navigation bar, select Create a resource

  3. Nella casella Cerca nel Marketplace digitare Key Vault e quindi premere INVIO.In the Search the Marketplace box type in Key Vault and hit Enter.

  4. Nell'elenco dei risultati selezionare Key Vault.Select Key Vault from the results.

  5. Selezionare CreaSelect Create

  6. Specificare un nome per il nuovo insieme di credenziali delle chiavi.Provide a Name for the new Key Vault.

    Schermata Crea un Key Vault

  7. Compilare tutte le informazioni necessarie assicurandosi di scegliere la sottoscrizione e il gruppo di risorse in cui è stata creata la macchina virtuale in uso per questa esercitazione.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. Selezionare Rivedi e creaSelect Review+ create

  9. Selezionare CreaSelect Create

Creare un segretoCreate a secret

Successivamente, aggiungere un segreto all'istanza di Key Vault, in modo che sia possibile recuperarlo in un secondo momento usando il codice in esecuzione nella macchina virtuale.Next, add a secret to the Key Vault, so you can retrieve it later using code running in your VM. In questa esercitazione viene usato PowerShell, ma gli stessi concetti si applicano a qualsiasi tipo di codice in esecuzione in questa macchina virtuale.For the purpose of this tutorial, we are using PowerShell but the same concepts apply to any code executing in this virtual machine.

  1. Passare all'istanza di Key Vault appena creata.Navigate to your newly created Key Vault.

  2. Selezionare Segreti e fare clic su Aggiungi.Select Secrets, and click Add.

  3. Selezionare Genera/ImportaSelect Generate/Import

  4. Nella schermata Crea un segreto lasciare selezionata l'opzione Manuale in Opzioni di caricamento.In the Create a secret screen from Upload options leave Manual selected.

  5. Specificare un nome e il valore del segreto.Enter a name and value for the secret. È possibile specificare qualsiasi valore.The value can be anything you want.

  6. Lasciare vuoti i campi della data di attivazione e della data di scadenza e lasciare Abilitato su .Leave the activation date and expiration date clear, and leave Enabled as Yes.

  7. Fare clic su Crea per creare il segreto.Click Create to create the secret.

    Creare un segreto

Concedere l'accessoGrant access

All'identità gestita usata dalla macchina virtuale deve essere concesso l'accesso in lettura per il segreto che verrà archiviato in Key Vault.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. Passare all'istanza di Key Vault appena creataNavigate to your newly created Key Vault

  2. Selezionare Criteri di accesso dal menu sul lato sinistro.Select Access Policy from the menu on the left side.

  3. Selezionare Aggiungi criterio di accesso.Select Add Access Policy

    schermata di creazione dei criteri di accesso di Key Vault

  4. Nella sezione Aggiungi criterio di accesso in Configura dal modello (facoltativo) scegliere Gestione dei segreti dal menu a discesa.In the Add access policy section under Configure from template (optional) choose Secret Management from the pull-down menu.

  5. Scegliere Selezionare un'entità e nel campo di ricerca immettere il nome della macchina virtuale creata in precedenza.Choose Select Principal, and in the search field enter the name of the VM you created earlier. Selezionare la macchina virtuale nell'elenco dei risultati e scegliere Seleziona.Select the VM in the result list and choose Select.

  6. Selezionare AggiungiSelect Add

  7. Selezionare Salva.Select Save.

Accedere ai datiAccess data

Questa sezione illustra come ottenere un token di accesso usando l'identità della macchina virtuale e usarlo per recuperare il segreto da Key Vault.This section shows how to get an access token using the VM identity and use it to retrieve the secret from Key Vault. Se non si dispone di PowerShell 4.3.1 o versione successiva, è necessario scaricare e installare la versione più recente.If you don’t have PowerShell 4.3.1 or greater installed, you'll need to download and install the latest version.

In primo luogo, si userà l'identità gestita assegnata dal sistema della macchina virtuale per ottenere un token di accesso per l'autenticazione a Key Vault:First, we use the VM’s system-assigned managed identity to get an access token to authenticate to Key Vault:

  1. Nel portale passare a Macchine virtuali, selezionare la macchina virtuale Windows e in Panoramica fare clic su Connetti.In the portal, navigate to Virtual Machines and go to your Windows virtual machine and in the Overview, click Connect.
  2. Inserire il Nome utente e la Password aggiunti al momento della creazione della macchina virtuale Windows.Enter in your Username and Password for which you added when you created the Windows VM.
  3. Ora che si è creata una connessione Desktop remoto con la macchina virtuale, aprire PowerShell nella sessione remota.Now that you have created a Remote Desktop Connection with the virtual machine, open PowerShell in the remote session.
  4. In PowerShell, richiamare la richiesta Web nel tenant per ottenere il token per l'host locale in una porta specifica della macchina virtuale.In PowerShell, invoke the web request on the tenant to get the token for the local host in the specific port for the VM.

Richiesta di 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"} 

L'aspetto della risposta sarà simile al seguente:You can see what the response looks like below:

richiesta con risposta token

Estrarre poi il token di accesso dalla risposta.Next, extract the access token from the response.

   $KeyVaultToken = $Response.access_token

Infine, usare il comando Invoke-WebRequest di PowerShell per recuperare il segreto creato in precedenza nell'insieme di credenziali delle chiavi, passando il token di accesso nell'intestazione dell'autorizzazione.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. È necessario l'URL dell'insieme di credenziali delle chiavi che si trova nella sezione Informazioni di base della pagina Panoramica dell'insieme di credenziali delle chiavi.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 risposta avrà l'aspetto seguente: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…

Dopo aver recuperato il segreto dall'insieme di credenziali delle chiavi, è possibile usarlo per eseguire l'autenticazione a un servizio che richiede un nome e una password.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.

Pulire le risorseClean up resources

Se si vogliono pulire le risorse, visitare il portale di Azure, selezionare Gruppi di risorse, individuare e selezionare il gruppo di risorse creato in questa esercitazione, ad esempio mi-test, quindi scegliere il comando Elimina gruppo di risorse.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.

In alternativa, è possibile eseguire questa operazione anche tramite PowerShell o l'interfaccia della riga di comandoAlternatively you may also do this via PowerShell or the CLI

Passaggi successiviNext steps

In questa esercitazione si è appreso come usare un'identità gestita assegnata dal sistema per una macchina virtuale Windows per accedere ad Azure Key Vault.In this tutorial, you learned how to use a Windows VM system-assigned managed identity to access Azure Key Vault. Per altre informazioni su Azure Key Vault, consultare:To learn more about Azure Key Vault see: