Condividi tramite


Esercitazione: Usare una macchina virtuale o un set di scalabilità di macchine virtuali Linux per accedere alle risorse di Azure

Identità gestite per le risorse di Azure è una funzionalità di Microsoft Entra ID. Tutti i servizi di Azure che supportano le identità gestite per le risorse di Azure sono soggetti alla sequenza temporale di tali entità. Prima di iniziare, assicurarsi di esaminare lo stato di disponibilità delle identità gestite per la risorsa e i problemi noti.

Prerequisiti

Usare un'identità gestita assegnata dal sistema per una macchina virtuale Linux per accedere ad Azure Data Lake Store

Questa esercitazione illustra come usare un’identità gestita assegnata dal sistema per una macchina virtuale Linux per l’accesso ad Azure Data Lake Store.

Si apprenderà come:

  • Concedere alla VM l'accesso ad Azure Data Lake Store.
  • Ottenere un token di accesso usando l'identità gestita assegnata dal sistema della macchina virtuale per accedere ad Azure Data Lake Store.

Concedi accesso

Questa sezione illustra come concedere alla VM l'accesso a file e cartelle in Azure Data Lake Store. Per questo passaggio, è possibile usare un'istanza di Data Lake Store esistente o crearne una nuova. Per creare un'istanza di Data Lake Store usando il portale di Azure, seguire la guida introduttiva ad Azure Data Lake Store. Nella documentazione per Azure Data Lake Store sono disponibili anche guide introduttive che usano l'interfaccia della riga di comando di Azure e Azure PowerShell.

In Data Lake Store creare una nuova cartella e concedere all'identità gestita assegnata dal sistema della macchina virtuale Linux l'autorizzazione per leggere, scrivere ed eseguire file in quella cartella:

  1. Nel portale di Azure selezionare Data Lake Store nel riquadro sinistro.
  2. Selezionare l'istanza di Data Lake Store che si vuole usare.
  3. Selezionare Esplora dati sulla barra dei comandi.
  4. Verrà selezionata la cartella radice dell'istanza di Data Lake Store. Selezionare Accesso sulla barra dei comandi.
  5. Selezionare Aggiungi. Nella casella Selezionare immettere il nome della macchina virtuale, ad esempio DevTestVM. Selezionare la macchina virtuale nei risultati della ricerca e quindi selezionare Selezionare.
  6. Selezionare Selezionare le autorizzazioni. Selezionare Lettura ed Esecuzione, aggiungere a Questa cartella come Solo autorizzazione di accesso, quindi selezionare OK. L'autorizzazione verrà aggiunta correttamente.
  7. Chiudere il riquadro Accesso.
  8. Creare una nuova cartella, quindi selezionare Nuova cartella nella barra dei comandi e assegnare un nome alla nuova cartella, ad esempio TestFolder, quindi selezionare OK.
  9. Selezionare la cartella creata e quindi Accesso sulla barra dei comandi.
  10. Selezionare Aggiungi, quindi nella casella Selezionare immettere il nome della macchina virtuale.
  11. Selezionare la macchina virtuale nei risultati della ricerca e quindi selezionare Selezionare.
  12. Selezionare Selezionare le autorizzazioni, quindi selezionare Lettura, quindi Scrittura e Esecuzione.
  13. Selezionare per aggiungere a Questa cartella, quindi aggiungere come Una voce di autorizzazione di accesso e una voce di autorizzazione predefinita, quindi selezionare OK. L'autorizzazione verrà aggiunta correttamente.

Le identità gestite per le risorse di Azure possono ora eseguire tutte le operazioni sui file nella cartella creata. Per altre informazioni sulla gestione dell'accesso a Data Lake Store, vedere Controllo di accesso in Data Lake Store.

Ottenere un token di accesso

Questa sezione illustra come ottenere un token di accesso e chiamare il file system di Data Lake Store. Azure Data Lake Store supporta in modo nativo l'autenticazione di Microsoft Entra, in modo da poter accettare direttamente i token di accesso ottenuti tramite le identità gestite per le risorse di Azure.

Per eseguire l'autenticazione al file system di Data Lake Store, si invia un token di accesso rilasciato da Microsoft Entra ID all'endpoint del file system di Data Lake Store. Il token di accesso è incluso in un'intestazione dell'autorizzazione nel formato Bearer \<ACCESS_TOKEN_VALUE\>. Per altre informazioni sul supporto di Data Lake Store per l'autenticazione di Microsoft Entra, vedere Autenticazione con Data Lake Store tramite Microsoft Entra ID.

Successivamente si esegue l'autenticazione all'API REST per il file system di Data Lake Store usando cURL per inviare richieste REST.

Nota

Gli SDK client del file system di Data Lake Store non supportano ancora le identità gestite per le risorse di Azure.

Per completare questi passaggi, è necessario disporre di un client SSH. Se si usa Windows, è possibile usare il client SSH nel sottosistema Windows per Linux. Per informazioni sulla configurazione delle chiavi del client SSH, vedere Come usare le chiavi SSH con Windows in Azure o Come creare e usare una coppia di chiavi SSH pubblica e privata per le macchine virtuali Linux in Azure.

  1. Nel portale passare alla macchina virtuale Linux e quindi nella sezione Panoramica selezionare Connetti.

  2. Connettersi alla VM usando il client SSH di propria scelta.

  3. Nella finestra del terminale usare cURL per inviare una richiesta all'endpoint locale delle identità gestite per le risorse di Azure per ottenere un token di accesso per il file system di Data Lake Store. L'identificatore della risorsa per Data Lake Store è https://datalake.azure.net/. È importante includere la barra finale nell'identificatore della risorsa.

    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 risposta con esito positivo restituisce il token di accesso che viene usato per l'autenticazione a 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. Usando cURL, inviare una richiesta all'endpoint REST del file system di Data Lake Store per ottenere un elenco delle cartelle nella cartella radice. È il modo migliore per controllare che tutto sia configurato correttamente. Copiare il valore del token di accesso dal passaggio precedente. È importante che la stringa Bearer nell'intestazione dell'autorizzazione contenga una "B" maiuscola. È possibile trovare il nome dell'istanza di Data Lake Store nella sezione Panoramica del riquadro Data Lake Store nel portale di Azure.

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

    Una risposta positiva è simile a questa:

    {"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. Caricare ora un file nell'istanza di Data Lake Store. Creare prima di tutto un file da caricare.

    echo "Test file." > Test1.txt
    
  6. Usando cURL, inviare una richiesta all'endpoint REST del file system di Data Lake Store per caricare il file nella cartella creata in precedenza. Il caricamento implica un reindirizzamento e cURL segue automaticamente il reindirizzamento.

    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 risposta positiva è simile a questa:

    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
    

Infine, è ora possibile usare altre API per il file system di Data Lake Store per eseguire aggiunte ai file, download di file e altre operazioni.

Usare un'identità gestita assegnata dal sistema per una macchina virtuale Linux per accedere ad Archiviazione di Azure

Questa esercitazione mostra come usare un'identità gestita assegnata dal sistema per una macchina virtuale Linux per accedere ad Archiviazione di Azure.

Si apprenderà come:

  • Creare un account di archiviazione
  • Creare un contenitore BLOB nell'account di archiviazione
  • Concedere all'identità gestita della VM Linux l'accesso a un contenitore di Archiviazione di Azure
  • Ottenere un token di accesso e usarlo per chiamare l'archiviazione di Azure

Creare un account di archiviazione

Per eseguire gli script dell'interfaccia della riga di comando in questo esempio, sono disponibili due opzioni:

Creare prima di tutto un account di archiviazione.

  1. Selezionare il pulsante + Crea una risorsa visualizzato nell'angolo in alto a sinistra del portale di Azure.

  2. Selezionare Archiviazione, quindi Account di archiviazione - BLOB, file, tabella, coda.

  3. In Nome, immettere il nome dell'account di archiviazione.

  4. Modello di distribuzione e Tipologia account devono essere impostati su Gestione di risorse e Archiviazione (utilizzo generico v1).

  5. Verificare che le impostazioni in Sottoscrizione e Gruppo di risorse corrispondano a quelle specificate al momento della creazione della macchina virtuale nel passaggio precedente.

  6. Seleziona Crea.

    Screenshot che mostra la schermata di creazione del nuovo account di archiviazione.

Creare un contenitore BLOB e caricare un file nell'account di archiviazione

Poiché i file richiedono l'archiviazione BLOB, è necessario creare un contenitore BLOB in cui archiviare il file. Nel contenitore BLOB caricare un file con il nuovo account di archiviazione.

  1. Tornare all'account di archiviazione appena creato.

  2. Selezionare Servizio BLOB, quindi Contenitori.

  3. Selezionare + Contenitore nella parte superiore della pagina.

  4. Selezionare Nuovo contenitore, quindi immettere un nome per il contenitore.

  5. Assicurarsi che il livello di accesso pubblico sia il valore predefinito.

    Screenshot che mostra la schermata di creazione del contenitore di archiviazione.

  6. Utilizzando un editor di propria scelta, creare un file denominato hello world.txt nel computer locale. Aprire il file e aggiungere il testo Hello world!, quindi salvarlo.

  7. Selezionare il nome del contenitore, quindi Carica. In questo modo il file viene caricato nel contenitore appena creato.

  8. Nel riquadro Carica BLOB, nella sezione File, selezionare l'icona della cartella e passare al file hello_world.txt nel computer locale.

  9. Selezionare il file, quindi Carica.

    Screenshot che mostra la sezione di caricamento del file di testo.

Concedere alla macchina virtuale l'accesso a un contenitore di Archiviazione di Azure

È possibile utilizzare identità gestita della macchina virtuale per recuperare i dati nel BLOB di archiviazione di Azure. Le identità gestite per le risorse di Azure possono essere usate per eseguire l'autenticazione alle risorse che supportano l'autenticazione di Microsoft Entra. Concedere l'accesso assegnando il ruolo storage-blob-data-reader all'identità gestita nell'ambito del gruppo di risorse che contiene l'account di archiviazione.

Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

Nota

Per altre informazioni sui vari ruoli che è possibile usare per concedere le autorizzazioni per le risorse di archiviazione, vedere Autorizzare l'accesso a BLOB e code usando Microsoft Entra ID

Ottenere un token di accesso e usarlo per chiamare l'archiviazione di Azure

Archiviazione di Azure supporta in modo nativo l'autenticazione di Microsoft Entra, per poter accettare direttamente i token di accesso ottenuti usando un'identità gestita. Questo fa parte dell'integrazione di Archiviazione di Azure con Microsoft Entra ID e non prevede l'inserimento di credenziali nella stringa di connessione.

Per completare i passaggi seguenti, si deve operare dalla VM creata in precedenza ed è necessario un client SSH per la connessione.

Se si usa Windows, è possibile usare il client SSH nel sottosistema Windows per Linux. Per richiedere assistenza nella configurazione delle chiavi del client SSH, vedere Come usare le chiavi SSH con Windows in Azure o Come creare e usare una coppia di chiavi SSH pubblica e privata per le macchine virtuali Linux in Azure.

  1. Nel portale di Azure passare a Macchine virtuali, selezionare la macchina virtuale Linux in uso, quindi nella pagina Panoramica selezionare Connetti. Copiare la stringa di connessione alla macchina virtuale.

  2. Connettersi alla macchina virtuale usando un client SSH di propria scelta.

  3. Nella finestra del terminale usare CURL per inviare una richiesta all'endpoint locale dell'identità gestita e ottenere un token di accesso per Archiviazione di Azure.

    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. Usare il token di accesso per accedere ad Archiviazione di Azure. Ad esempio, per leggere il contenuto del file di esempio caricato in precedenza nel contenitore, sostituire i valori di <STORAGE ACCOUNT>, <CONTAINER NAME> e <FILE NAME> con i valori specificati in precedenza e <ACCESS TOKEN> con il token restituito nel passaggio precedente.

    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 risposta contiene il contenuto del file:

    Hello world! :)
    

Infine, è anche possibile archiviare il token in una variabile e passarlo al secondo comando come illustrato:

# 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"

Usare un'identità gestita assegnata dal sistema di una macchina virtuale Linux per accedere ad Archiviazione di Azure tramite credenziali di firma di accesso condiviso

Questa esercitazione illustra come usare un'identità gestita assegnata dal sistema per una macchina virtuale Linux per ottenere credenziali di firma di accesso condiviso per l'archiviazione, in particolare credenziali di firma di accesso condiviso del servizio.

Nota

La chiave di firma di accesso condiviso generata in questa esercitazione non sarà limitata/vincolata alla VM.

Una firma di accesso condiviso del servizio concede un accesso limitato agli oggetti in un account di archiviazione senza esporre una chiave di accesso all'account. L'accesso può essere concesso per un periodo di tempo limitato e per un servizio specifico. È possibile usare le credenziali di firma di accesso condiviso come di consueto durante le operazioni di archiviazione, ad esempio quando si usa Storage SDK. In questa esercitazione si caricherà e si scaricherà un BLOB usando l'interfaccia della riga di comando di Archiviazione di Azure.

Si apprenderà come:

  • Creare un account di archiviazione
  • Creare un contenitore BLOB nell'account di archiviazione
  • Concedere alla macchina virtuale l'accesso alla firma di accesso condiviso dell'account di archiviazione in Resource Manager
  • Ottenere un token di accesso tramite l'identità della macchina virtuale e usarlo per recuperare la firma di accesso condiviso da Resource Manager

Creare un account di archiviazione

Se non è già disponibile, è necessario creare un account di archiviazione. È anche possibile ignorare questo passaggio e concedere l'accesso dell'identità gestita assegnata dal sistema della macchina virtuale alle chiavi di un account di archiviazione esistente.

  1. Selezionare il pulsante +/Crea nuovo servizio, che si trova nell'angolo in alto a sinistra del portale di Azure.

  2. Selezionare Archiviazione, quindi Account di archiviazione, quindi viene visualizzato il pannello Crea account di archiviazione.

  3. Immettere il nome dell'account di archiviazione. Ricordare questo nome, perché sarà necessario in seguito.

  4. Assicurarsi che il modello di distribuzione sia impostato su Resource Manager e che Tipologia account sia impostato su Utilizzo generico.

  5. Verificare che le impostazioni in Sottoscrizione e Gruppo di risorse corrispondano a quelle specificate al momento della creazione della macchina virtuale.

  6. Selezionare Crea per completare la creazione dell'account di archiviazione.

    Screenshot che mostra la schermata di creazione del nuovo account di archiviazione.

Creare un contenitore BLOB nell'account di archiviazione

Più avanti nell'esercitazione si caricherà e si scaricherà un file nel nuovo account di archiviazione. Poiché i file richiedono l'archiviazione BLOB, è necessario creare un contenitore BLOB in cui archiviare il file.

  1. Tornare all'account di archiviazione appena creato.

  2. Selezionare il collegamento Contenitori nel pannello a sinistra, in Servizio BLOB.

  3. Selezionare + Contenitore nella parte superiore della pagina, quindi viene visualizzato un pannello Nuovo contenitore.

  4. Assegnare un nome al contenitore, selezionare un livello di accesso, quindi selezionare OK. Il nome specificato verrà usato più avanti nell'esercitazione.

    Screenshot che mostra la schermata di creazione del contenitore di archiviazione.

Concedere l'accesso per l'uso di una firma di accesso condiviso di archiviazione all'identità gestita assegnata dal sistema della macchina virtuale

Archiviazione di Azure supporta in modo nativo l'autenticazione di Microsoft Entra, quindi è possibile usare l'identità gestita assegnata dal sistema della macchina virtuale per recuperare una firma di accesso condiviso di archiviazione da Resource Manager. È quindi possibile usare la firma di accesso condiviso per accedere all'archiviazione.

In questa sezione si concede l'accesso all'identità gestita assegnata dal sistema della macchina virtuale alla firma di accesso condiviso dell'account di archiviazione. Assegnare il ruolo di Collaboratore Account di archiviazione all'identità gestita nell'ambito del gruppo di risorse che contiene l'account di archiviazione.

Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

Nota

Per altre informazioni sui vari ruoli che è possibile usare per concedere le autorizzazioni per le risorse di archiviazione, vedere Autorizzare l'accesso a BLOB e code usando Microsoft Entra ID.

Ottenere un token di accesso usando l'identità della macchina virtuale e usarlo per chiamare Azure Resource Manager

Il resto dell'esercitazione prevede l'uso dalla macchina virtuale creata in precedenza.

Per completare questi passaggi, è necessario disporre di un client SSH. Se si usa Windows, è possibile usare il client SSH nel sottosistema Windows per Linux. Se è necessaria assistenza per la configurazione delle chiavi del client SSH, vedere:

Dopo aver creato il client SSH, seguire questa procedura:

  1. Nel portale di Azure passare a Macchine virtuali, quindi passare alla macchina virtuale Linux.
  2. Nella pagina Panoramica selezionare Connetti nella parte superiore della schermata.
  3. Copiare la stringa di connessione alla macchina virtuale.
  4. Connettersi alla macchina virtuale tramite il client SSH.
  5. Immettere la password aggiunta durante la creazione della macchina virtuale Linux. A questo punto l'accesso è stato eseguito correttamente.
  6. Usare CURL per ottenere il token di accesso per Azure Resource Manager.

Di seguito sono illustrate la richiesta e la risposta CURL per il token di accesso:

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

Nella richiesta precedente il valore del parametro resource deve corrispondere esattamente a quello previsto da Microsoft Entra ID. Quando si usa l'ID risorsa di Azure Resource Manager, è necessario includere la barra finale nell'URI.

Nella risposta seguente l'elemento access_token è stato abbreviato per comodità.

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

Ottenere credenziali di firma di accesso condiviso da Azure Resource Manager per eseguire chiamate al servizio di archiviazione

Usare quindi CURL per chiamare Resource Manager con il token di accesso recuperato nella sezione precedente. Usare questa opzione per creare le credenziali di firma di accesso condiviso di archiviazione. Dopo aver creato le credenziali di firma di accesso condiviso, è possibile chiamare le operazioni di upload/download di archiviazione.

Per creare le credenziali di firma di accesso condiviso in questa richiesta usare i parametri della richiesta HTTP seguenti:

{
    "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.
}

Includere questi parametri nel corpo della richiesta POST per le credenziali di firma di accesso condiviso. Per altre informazioni sui parametri per la creazione di credenziali di firma di accesso condiviso, vedere le informazioni di riferimento REST per la firma di accesso condiviso del servizio List.

Per ottenere le credenziali di firma di accesso condiviso, usare la richiesta CURL seguente. Sostituire i valori dei parametri <SUBSCRIPTION ID>, <RESOURCE GROUP>, <STORAGE ACCOUNT NAME>, <CONTAINER NAME> e <EXPIRATION TIME> con valori personalizzati. Sostituire il valore di <ACCESS TOKEN> con il token di accesso recuperato prima:

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

Il testo nell'URL precedente fa distinzione tra maiuscole e minuscole. Assicurarsi quindi di usare la stessa combinazione di maiuscole e minuscole usata per i gruppi di risorse. È anche importante tenere conto che questa è una richiesta POST, non una richiesta GET.

La risposta CURL restituisce le credenziali di firma di accesso condiviso:

{"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"} 

In una macchina virtuale Linux creare un file BLOB di esempio da caricare nel contenitore di archiviazione BLOB usando il comando seguente:

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

Eseguire quindi l'autenticazione con il comando az storage dell'interfaccia della riga di comando usando le credenziali di firma di accesso condiviso e caricare il file nel contenitore BLOB. Per questo passaggio è necessario installare la versione più recente dell'interfaccia della riga di comando di Azure nella macchina virtuale, se non è già stato fatto.

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

Risposta:

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

È anche possibile scaricare il file usando l'interfaccia della riga di comando di Azure ed eseguendo l'autenticazione con le credenziali di firma di accesso condiviso.

Richiesta:

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

Risposta:

{
  "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
}

Usare un'identità gestita assegnata dal sistema per una macchina virtuale Linux per accedere ad Archiviazione di Azure tramite la chiave di accesso

Questa esercitazione mostra come usare un'identità gestita assegnata dal sistema per una macchina virtuale Linux per recuperare le chiavi di accesso dell'account di archiviazione. È possibile usare una chiave di accesso alle risorse di archiviazione come di consueto durante le operazioni di archiviazione, ad esempio quando si usa Storage SDK. In questa esercitazione si caricano e scaricano i BLOB usando l'interfaccia della riga di comando di Azure.

Si apprenderà come:

  • Concedere alla macchina virtuale l'accesso alle chiavi di accesso all'account di archiviazione in Resource Manager
  • Ottenere un token di accesso usando l'identità della macchina virtuale e usarlo per ottenere le chiavi di accesso alle risorse di archiviazione da Resource Manager

Creare un account di archiviazione

Se non si ha un account di archiviazione esistente prima di iniziare questa esercitazione, è necessario crearne uno. Se si dispone di un account di archiviazione esistente, seguire questa procedura per concedere all'identità gestita assegnata dal sistema della macchina virtuale l'accesso alle chiavi per l'account di archiviazione esistente.

  1. Selezionare il pulsante +/Crea nuovo servizio, che si trova nell'angolo in alto a sinistra del portale di Azure.

  2. Selezionare Archiviazione, quindi Account di archiviazione, quindi viene visualizzato il pannello Crea account di archiviazione.

  3. Immettere il nome dell'account di archiviazione. Ricordare questo nome, perché sarà necessario in seguito.

  4. Assicurarsi che il modello di distribuzione sia impostato su Resource Manager e che Tipologia account sia impostato su Utilizzo generico.

  5. Verificare che le impostazioni in Sottoscrizione e Gruppo di risorse corrispondano a quelle specificate al momento della creazione della macchina virtuale.

  6. Selezionare Crea per completare la creazione dell'account di archiviazione.

    Screenshot che mostra la creazione del nuovo account di archiviazione.

Creare un contenitore BLOB nell'account di archiviazione

Più avanti nell'esercitazione si caricherà e si scaricherà un file nel nuovo account di archiviazione. Poiché i file richiedono l'archiviazione BLOB, è necessario creare un contenitore BLOB in cui archiviare il file.

  1. Tornare all'account di archiviazione appena creato.

  2. Selezionare il collegamento Contenitori nel pannello a sinistra, in Servizio BLOB.

  3. Selezionare + Contenitore nella parte superiore della pagina, quindi viene visualizzato un pannello Nuovo contenitore.

  4. Assegnare un nome al contenitore, selezionare un livello di accesso, quindi selezionare OK. Il nome specificato verrà usato più avanti nell'esercitazione.

    Screenshot che mostra la creazione del contenitore di archiviazione.

Concedere l'accesso per l'uso delle chiavi di accesso dell'account di archiviazione all'identità gestita assegnata dal sistema della macchina virtuale

Archiviazione di Azure non supporta in modo nativo l'autenticazione di Microsoft Entra. È tuttavia possibile usare l'identità gestita assegnata dal sistema della macchina virtuale per recuperare una firma di accesso condiviso di archiviazione da Resource Manager e quindi usarla per accedere alle risorse di archiviazione. In questo passaggio si concede l'accesso alla firma di accesso condiviso dell'account di archiviazione all'identità gestita assegnata dal sistema della macchina virtuale. Concedere l'accesso assegnando il ruolo di Collaboratore Account di archiviazione all'identità gestita nell'ambito del gruppo di risorse che contiene l'account di archiviazione.

Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

Nota

Per altre informazioni sui vari ruoli che è possibile usare per concedere le autorizzazioni per le risorse di archiviazione, vedere Autorizzare l'accesso a BLOB e code usando Microsoft Entra ID.

Ottenere un token di accesso usando l'identità della macchina virtuale e usarlo per chiamare Azure Resource Manager

Il resto dell'esercitazione prevede che le operazioni vengano svolte dalla macchina virtuale creata in precedenza.

Per completare questi passaggi, è necessario disporre di un client SSH. Se si usa Windows, è possibile usare il client SSH nel sottosistema Windows per Linux. Per richiedere assistenza nella configurazione delle chiavi del client SSH, vedere Come usare le chiavi SSH con Windows in Azure o Come creare e usare una coppia di chiavi SSH pubblica e privata per le macchine virtuali Linux in Azure.

  1. Nel portale di Azure passare a Macchine virtuali, selezionare la macchina virtuale Linux e quindi nella parte superiore della pagina Panoramica selezionare Connetti. Copiare la stringa di connessione alla macchina virtuale.

  2. Connettersi alla macchina virtuale tramite il client SSH.

  3. Successivamente, è necessario immettere la password aggiunta durante la creazione della macchina virtuale Linux.

  4. Usare CURL per ottenere il token di accesso per Azure Resource Manager.

    Di seguito sono illustrate la richiesta e la risposta CURL per il token di accesso:

    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

    Nella richiesta precedente il valore del parametro "resource" deve corrispondere esattamente a quello previsto da Microsoft Entra ID. Quando si usa l'ID risorsa di Azure Resource Manager, è necessario includere la barra finale nell'URI. Nella risposta seguente l'elemento access_token è stato abbreviato per comodità.

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

Ottenere le chiavi di accesso dell'account di archiviazione da Azure Resource Manager per eseguire le chiamate al servizio di archiviazione

Di seguito viene usato CURL per eseguire una chiamata a Resource Manager usando il token di accesso recuperato nella sezione precedente, per recuperare la chiave di accesso alle risorse di archiviazione. Una volta recuperata la chiave di accesso alle risorse di archiviazione, è possibile chiamare le operazioni di caricamento/scaricamento. Sostituire i valori dei parametri <SUBSCRIPTION ID>, <RESOURCE GROUP> e <STORAGE ACCOUNT NAME> con i valori desiderati. Sostituire il valore di <ACCESS TOKEN> con il token di accesso recuperato prima:

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

Il testo nell'URL precedente fa distinzione tra maiuscole e minuscole. Assicurarsi quindi di usare la stessa combinazione di maiuscole e minuscole usata per i gruppi di risorse. Inoltre, è importante sapere che si tratta di una richiesta POST, non di una richiesta GET, e verificare di passare un valore per acquisire un limite di lunghezza con -d che può essere NULL.

La risposta CURL restituisce l'elenco di chiavi:

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

Creare un file di BLOB esempio da caricare nel contenitore di archiviazione BLOB. A tale scopo, in una macchina virtuale Linux eseguire il comando seguente.

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

Eseguire quindi l'autenticazione con il comando dell'interfaccia della riga di comando az storage usando la chiave di accesso alle risorse di archiviazione e caricare il file nel contenitore di BLOB. Per questo passaggio è necessario installare la versione più recente dell'interfaccia della riga di comando di Azure nella macchina virtuale, se non è già stato fatto.

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

Risposta:

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

È anche possibile scaricare il file usando l'interfaccia della riga di comando di Azure ed eseguendo l'autenticazione con la chiave di accesso alle risorse di archiviazione.

Richiesta:

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

Risposta:

{
  "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
}

Usare un'identità gestita assegnata dal sistema per una macchina virtuale Linux per accedere ad Azure Key Vault

Questa esercitazione mostra come usare un'identità gestita assegnata dal sistema per una macchina virtuale Linux per accedere ad Azure Key Vault. Key Vault consente all'applicazione client di usare un segreto per accedere alle risorse non protette da Microsoft Entra ID. Le identità del servizio gestito vengono gestite automaticamente da Azure e consentono di eseguire l'autenticazione ai servizi che supportano l'autenticazione di Microsoft Entra senza la necessità di includere le informazioni di autenticazione nel codice.

Si apprenderà come:

  • Concedere alla macchina virtuale l'accesso a un segreto archiviato in un insieme di credenziali delle chiavi
  • Ottenere un token di accesso usando l'identità della VM e usarlo per recuperare il segreto da Key Vault

Creare un insieme di credenziali delle chiavi

È anche necessaria una macchina virtuale Linux con le identità gestite assegnate dal sistema abilitate.

Suggerimento

I passaggi descritti in questo articolo possono variare leggermente in base al portale da cui si inizia.

Questa sezione illustra come concedere alla macchina virtuale l'accesso a un segreto archiviato in un insieme di credenziali delle chiavi. Usando le identità gestite per le risorse di Azure, il codice può ottenere i token di accesso per eseguire l'autenticazione alle risorse che supportano l'autenticazione di Microsoft Entra.

Tuttavia, non tutti i servizi di Azure supportano l'autenticazione di Microsoft Entra. 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.

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.

  1. Accedere al portale di Azure.

  2. Nella parte superiore della barra di spostamento a sinistra selezionare Crea una risorsa.

  3. Nella casella Cerca nel Marketplace digitare Key Vault e quindi premere INVIO.

  4. Nell'elenco dei risultati selezionare Key Vault.

  5. Seleziona Crea.

  6. Specificare un nome per il nuovo insieme di credenziali delle chiavi.

    Screenshot che mostra la schermata di creazione di Azure 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.

  8. Selezionare Rivedi e crea e quindi Crea.

Creare un segreto

Successivamente, è necessario aggiungere un segreto a Key Vault, in modo che sia possibile recuperarlo in un secondo momento usando il codice in esecuzione nella macchina virtuale. In questa sezione si userà PowerShell. Ma gli stessi concetti si applicano a qualsiasi codice in esecuzione in questa macchina virtuale.

  1. Passare all'istanza di Key Vault appena creata.

  2. Selezionare Segreti, quindi Aggiungi.

  3. Seleziona Genera/Importa.

  4. Nella sezione Crea un segreto passare a Opzioni di caricamento e assicurarsi che sia selezionato Manuale.

  5. Specificare un nome e il valore del segreto.  È possibile specificare qualsiasi valore. 

  6. Lasciare deselezionata la data di attivazione e la data di scadenza e assicurarsi che Abilitato sia impostato su

  7. Selezionare Crea per creare il segreto.

    Screenshot che mostra la creazione dei segreti.

Concedi accesso

L'identità gestita usata dalla macchina virtuale deve poter eseguire l'accesso per leggere il segreto archiviato in Key Vault.

  1. Passare all'istanza di Key Vault appena creata.

  2. Selezionare Criteri di accesso nel riquadro di spostamento a sinistra.

  3. Seleziona Aggiungi criteri di accesso.

    Screenshot della schermata dei criteri di accesso di creazione dell'insieme di credenziali delle chiavi.

  4. Nella sezione Aggiungi criterio di accesso in Configura dal modello (facoltativo) scegliere Gestione dei segreti dal menu a discesa.

  5. Scegliere Selezionare un'entità e nel campo di ricerca immettere il nome della macchina virtuale creata in precedenza.  Selezionare la macchina virtuale nell'elenco dei risultati e quindi Selezionare.

  6. Selezionare Aggiungi.

  7. Seleziona Salva.

Accedere ai dati

Per completare questi passaggi, è necessario disporre di un client SSH.  Se si usa Windows, è possibile usare il client SSH nel sottosistema Windows per Linux. Per richiedere assistenza nella configurazione delle chiavi del client SSH, vedere Come usare le chiavi SSH con Windows in Azure o Come creare e usare una coppia di chiavi SSH pubblica e privata per le macchine virtuali Linux in Azure.

Importante

Tutti gli SDK di Azure supportano la libreria Azure.Identity che semplifica l'acquisizione di token di Microsoft Entra per accedere ai servizi di destinazione. Altre informazioni sugli SDK di Azure e sull'accesso alla libreria Azure.Identity.

  1. Nel portale, passare alla macchina virtuale Linux e in Panoramica selezionare Connetti
  2. Connettersi alla macchina virtuale usando un client SSH di propria scelta. 
  3. Nella finestra del terminale usare cURL per eseguire una richiesta all'endpoint locale delle identità gestite per le risorse di Azure per ottenere un token di accesso per Azure Key Vault.   La richiesta CURL per il token di accesso è mostrata di seguito.
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"} 

È possibile usare questo token di accesso per l'autenticazione ad Azure Key Vault.  La successiva richiesta CURL mostra come leggere un segreto da Key Vault usando CURL e l'API REST di Key Vault.  È 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.  È necessario anche il token di accesso ottenuto dalla chiamata precedente. 

curl 'https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01' -H "Authorization: Bearer <ACCESS TOKEN>" 

La risposta ha un aspetto simile al seguente:

{"value":"p@ssw0rd!","id":"https://mytestkeyvault.vault.azure.net/secrets/MyTestSecret/7c2204c6093c4d859bc5b9eff8f29050","attributes":{"enabled":true,"created":1505088747,"updated":1505088747,"recoveryLevel":"Purgeable"}} 

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.

Pulire le risorse

Quando si è pronti per pulire le risorse, accedere al portale di Azure, selezionare Gruppi di risorse, quindi individuare e selezionare il gruppo di risorse creato nel processo di questa esercitazione, ad esempio mi-test. È possibile usare il comando Elimina gruppo di risorse oppure PowerShell o l'interfaccia della riga di comando.

Usare un'identità gestita assegnata dal sistema di una macchina virtuale Linux per accedere a un gruppo di risorse in gestione risorse

Suggerimento

I passaggi descritti in questo articolo possono variare leggermente in base al portale da cui si inizia.

Questa esercitazione illustra come creare un'identità assegnata dal sistema, assegnarla a una macchina virtuale Linux e quindi usare tale identità per accedere all'API Azure Resource Manager. Le identità del servizio gestito vengono gestite automaticamente da Azure. Si abilita l'autenticazione ai servizi che supportano l'autenticazione di Microsoft Entra senza la necessità di incorporare le credenziali nel codice.

Scopri come:

  • Concedere alla macchina virtuale l'accesso ad Azure Resource Manager.
  • Ottenere un token di accesso usando l'identità gestita assegnata dal sistema della macchina virtuale per accedere alla gestione risorse.
  1. Accedere al portale di Azure con un account amministratore.

  2. Passare alla scheda Gruppo di risorse.

  3. Selezionare il gruppo di risorse a cui si vuole concedere l'accesso all'identità gestita della macchina virtuale.

  4. Selezionare Controllo di accesso (IAM) nel riquadro a sinistra.

  5. Selezionare Aggiungi e quindi Aggiungi assegnazione di ruolo.

  6. Nella scheda Ruolo selezionare Lettore. Questo ruolo consente di visualizzare tutte le risorse, ma non consente di apportare modifiche.

  7. Nella scheda Membri selezionare Identità gestita nell'opzione Assegnare l'accesso a, quindi selezionare + Selezionare i membri.

  8. Verificare che nell'elenco a discesa Sottoscrizione sia elencata la sottoscrizione corretta. Per Gruppo di risorse selezionare Tutti i gruppi di risorse.

  9. Nell'elenco a discesa Gestisci identità selezionare Macchina virtuale.

  10. Nell'opzione Seleziona scegliere la macchina virtuale nell'elenco a discesa e quindi selezionare Salva.

    Screenshot che mostra l'aggiunta del ruolo di lettore all'identità gestita.

Ottenere un token di accesso

Usare l'identità gestita assegnata dal sistema della macchina virtuale e chiamare la gestione risorse per ottenere un token di accesso.

Per completare questi passaggi, è necessario disporre di un client SSH. Se si usa Windows, è possibile usare il client SSH nel sottosistema Windows per Linux. Per richiedere assistenza nella configurazione delle chiavi del client SSH, vedere Come usare le chiavi SSH con Windows in Azure o Come creare e usare una coppia di chiavi SSH pubblica e privata per le macchine virtuali Linux in Azure.

  1. Nel portale di Azure passare alla macchina virtuale Linux.
  2. In Panoramica selezionare Connetti.
  3. Connettersi alla macchina virtuale usando un client SSH di propria scelta.
  4. Nella finestra del terminale usare curl per effettuare una richiesta all'endpoint locale delle identità gestite per le risorse di Azure per ottenere un token di accesso per Azure Resource Manager.   La richiesta curl per il token di accesso è mostrata di seguito.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Nota

Il valore del parametro resource deve corrispondere esattamente a quello previsto da Microsoft Entra ID. Quando si usa l'ID della risorsa di Resource Manager, è necessario includere la barra finale nell'URI.

La risposta include il token di accesso necessario per accedere ad Azure Resource Manager.

Risposta:

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

Usare questo token di accesso per accedere ad Azure Resource Manager. Ad esempio, per leggere i dettagli del gruppo di risorse a cui è stato precedentemente concesso l'accesso alla macchina virtuale. Sostituire i valori di <SUBSCRIPTION-ID>, <RESOURCE-GROUP> e <ACCESS-TOKEN> con quelli creato in precedenza.

Nota

L'URL fa distinzione tra maiuscole e minuscole. Accertarsi quindi di usare la stessa combinazione di maiuscole e minuscole usata in precedenza per il nome del gruppo di risorse, facendo attenzione alla maiuscola "G" in resourceGroup.

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

La risposta restituisce le informazioni specifiche del gruppo di risorse:

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

Usare un'identità gestita assegnata dall'utente di una macchina virtuale Linux per accedere a un gruppo di risorse in Resource Manager

Suggerimento

I passaggi descritti in questo articolo possono variare leggermente in base al portale da cui si inizia.

Questa esercitazione illustra come creare un'identità, assegnarla a una macchina virtuale Linux e quindi usare tale identità per accedere all'API Azure Resource Manager. Le identità del servizio gestito vengono gestite automaticamente da Azure. Si abilita l'autenticazione ai servizi che supportano l'autenticazione di Microsoft Entra senza la necessità di incorporare le credenziali nel codice.

Si apprenderà come:

  • Concedere alla macchina virtuale l'accesso ad Azure Resource Manager.
  • Ottenere un token di accesso usando l'identità gestita assegnata dal sistema della macchina virtuale per accedere a Resource Manager.

Creare un'identità gestita assegnata dall'utente tramite az identity create. Il parametro -g specifica il gruppo di risorse in cui viene creata l'identità gestita assegnata dall'utente, mentre il parametro -n ne specifica il nome. Sostituire i valori dei parametri <RESOURCE GROUP> e <UAMI NAME> con valori personalizzati:

Importante

Quando si creano identità gestite assegnate dall'utente, il nome deve iniziare con una lettera o un numero e può includere una combinazione di caratteri alfanumerici, trattini (-) e caratteri di sottolineatura (_). Per il corretto funzionamento dell'assegnazione a una macchina virtuale o a un set di scalabilità di macchine virtuali, il nome può essere composto da un massimo di 24 caratteri. Per altre informazioni, vedere Domande frequenti e problemi noti.

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

La risposta contiene i dettagli relativi all'identità gestita assegnata dall'utente creata ed è simile all'esempio seguente. Prendere nota del valore id dell'identità gestita assegnata dall'utente perché verrà usato nel passaggio successivo:

{
"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"
}

Assegnare un'identità alla macchina virtuale Linux

Un'identità gestita assegnata dall'utente può essere usata dai client in più risorse di Azure. Usare i comandi seguenti per assegnare l'identità gestita assegnata dall'utente a una singola macchina virtuale. Usare la proprietà Id restituita nel passaggio precedente per il parametro -IdentityID.

Assegnare l'identità gestita assegnata dall'utente alla macchina virtuale Linux usando az vm identity assign. Sostituire i valori dei parametri <RESOURCE GROUP> e <VM NAME> con valori personalizzati. Usare la proprietà id restituita nel passaggio precedente per il valore del parametro --identities.

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

Concedere l'accesso a un gruppo di risorse in Azure Resource Manager

L'Identità gestite sono identità che il codice può usare per richiedere i token di accesso per l'autenticazione alle API di risorsa che supporta l'autenticazione di Microsoft Entra. In questa esercitazione il codice accede all'API di Azure Resource Manager.

Prima che il codice possa accedere all'API, è necessario concedere all'identità l'accesso a una risorsa in Azure Resource Manager. In questo caso si tratta del gruppo di risorse in cui è contenuta la macchina virtuale. Aggiornare il valore per <SUBSCRIPTION ID> e <RESOURCE GROUP> in base all'ambiente in uso. Sostituire inoltre <UAMI PRINCIPALID> con la proprietà principalId restituita dal comando az identity create in Creare un'identità gestita assegnata dall'utente:

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

La risposta contiene i dettagli per l'assegnazione di ruolo creata, in modo analogo all'esempio seguente:

{
  "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"
}

Ottenere un token di accesso usando l'identità della macchina virtuale e usarlo per chiamare Azure Resource Manager

Suggerimento

I passaggi descritti in questo articolo possono variare leggermente in base al portale da cui si inizia.

Il resto dell'esercitazione prevede che le operazioni vengano svolte con la macchina virtuale creata in precedenza.

Per completare questi passaggi, è necessario disporre di un client SSH. Se si usa Windows, è possibile usare il client SSH nel sottosistema Windows per Linux.

  1. Accedere al portale di Azure.

  2. Nel portale passare a Macchine virtuali, selezionare la macchina virtuale Linux e in Panoramica fare clic su Connetti. Copiare la stringa di connessione alla macchina virtuale.

  3. Connettersi alla macchina virtuale usando un client SSH di propria scelta. Se si usa Windows, è possibile usare il client SSH nel sottosistema Windows per Linux. Per richiedere assistenza nella configurazione delle chiavi del client SSH, vedere Come usare le chiavi SSH con Windows in Azure o Come creare e usare una coppia di chiavi SSH pubblica e privata per le macchine virtuali Linux in Azure.

  4. Nella finestra del terminale usare CURL per fare una richiesta all'endpoint di Identità del servizio metadati dell'istanza di Azure per ottenere un token di accesso per Azure Resource Manager.

    La richiesta CURL per acquisire un token di accesso viene visualizzata nell'esempio seguente. Assicurarsi di sostituire <CLIENT ID> con la proprietà clientId restituita dal comando az identity create in Creare un'identità gestita assegnata dall'utente:

    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

    Il valore del parametro resource deve corrispondere esattamente a quello previsto da Microsoft Entra ID. Quando si usa l'ID risorsa di Gestione risorse, è necessario includere la barra finale nell'URI.

    La risposta include il token di accesso necessario per accedere ad Azure Resource Manager.

    Esempio di risposta:

    {
    "access_token":"eyJ0eXAiOi...",
    "refresh_token":"",
    "expires_in":"3599",
    "expires_on":"1504130527",
    "not_before":"1504126627",
    "resource":"https://management.azure.com",
    "token_type":"Bearer"
    } 
    
  5. Usare il token di accesso per accedere ad Azure Resource Manager e leggere le proprietà del gruppo di risorse a cui in precedenza si è concesso l'accesso per l'identità gestita assegnata dall'utente. Verificare di sostituire <SUBSCRIPTION ID>, <RESOURCE GROUP> con i valori specificati in precedenza e <ACCESS TOKEN> con il token restituito nel passaggio precedente.

    Nota

    L'URL rispetta la distinzione tra maiuscole e minuscole, pertanto usare la stessa combinazione usata in precedenza quando al gruppo di risorse è stato assegnato il nome e il carattere "G" maiuscolo in resourceGroups.

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

    La risposta contiene le informazioni sul gruppo di risorse specifico, in modo analogo all'esempio seguente:

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

Altre informazioni