Autorizzare l'accesso a BLOB e file con AzCopy e Microsoft Entra ID

È possibile fornire a AzCopy le credenziali di autorizzazione usando Microsoft Entra ID. In questo modo, non è necessario aggiungere un token di firma di accesso condiviso a ogni comando.

Per iniziare, verificare le assegnazioni di ruolo. Scegliere quindi il tipo di entità di sicurezza da autorizzare. Un'identità utente, un'identità gestita e un'entità servizio sono ognuno un tipo di entità di sicurezza.

Per autorizzare l'accesso, verranno impostate variabili di ambiente in memoria. Eseguire quindi qualsiasi comando AzCopy. AzCopy recupererà il token di autenticazione necessario per completare l'operazione. Al termine dell'operazione, il token scompare dalla memoria.

AzCopy recupera il token OAuth usando le credenziali fornite. In alternativa, AzCopy può usare il token OAuth di una sessione attiva dell'interfaccia della riga di comando di Azure o di Azure PowerShell.

Per altre informazioni su AzCopy, introduzione ad AzCopy.

Verificare le assegnazioni di ruolo

Il livello di autorizzazione necessario è basato sul fatto che si intenda caricare i file o semplicemente scaricarli.

Se si vogliono solo scaricare i file, verificare che il ruolo Lettore di dati blob di archiviazione (Archiviazione BLOB di Azure) o il ruolo con autorizzazioni di lettura con privilegi per i dati dei file di archiviazione (File di Azure) sia stato assegnato all'identità utente, all'identità gestita o all'entità servizio.

Per caricare file in Archiviazione BLOB di Azure, verificare che uno di questi ruoli sia stato assegnato all'entità di sicurezza.

Se si vogliono caricare file in una condivisione file di Azure, verificare che l'utilità di lettura con privilegi per i dati dei file di archiviazione sia stata assegnata all'entità di sicurezza.

Questi ruoli possono essere assegnati all'entità di sicurezza in uno di questi ambiti:

  • Contenitore (file system) o condivisione file
  • Account di archiviazione
  • Resource group
  • Subscription

Per informazioni su come verificare e assegnare ruoli, vedere Assegnare un ruolo di Azure per l'accesso ai dati BLOB (archiviazione BLOB) o Scegliere come autorizzare l'accesso ai dati dei file nel portale di Azure (File di Azure).

Nota

Tenere presente che la propagazione delle assegnazioni di ruolo di Azure può richiedere fino a cinque minuti.

Non è necessario avere uno di questi ruoli assegnati all'entità di sicurezza se l'entità di sicurezza viene aggiunta all'elenco di controllo di accesso (ACL) del contenitore o della directory di destinazione. Nell'elenco di controllo di accesso, l'entità di sicurezza deve disporre dell'autorizzazione di scrittura per la directory di destinazione ed eseguire l'autorizzazione per il contenitore e ogni directory padre.

Per altre informazioni, vedere Modello di controllo di accesso in Azure Data Lake Storage.

Autorizzare con AzCopy

AzCopy usa le credenziali fornite per autorizzare l'entità di sicurezza.

Autorizzare un'identità utente

Dopo aver verificato che all'identità utente sia stato assegnato il livello di autorizzazione necessario, digitare il comando seguente e quindi premere INVIO.

export AZCOPY_AUTO_LOGIN_TYPE=DEVICE

Eseguire quindi qualsiasi comando azcopy (ad esempio: azcopy list https://contoso.blob.core.windows.net).

Questo comando restituisce un codice di autenticazione e l'URL di un sito Web. Aprire il sito Web, immettere il codice e quindi scegliere il pulsante Avanti.

Creazione di un contenitore

Verrà visualizzata una finestra di accesso. In tale finestra accedere al proprio account Azure usando le relative credenziali. Dopo aver eseguito l'accesso, l'operazione può essere completata.

Autorizzare un'identità gestita

Questa è un'ottima opzione se si prevede di usare AzCopy all'interno di uno script che viene eseguito senza interazione dell'utente e lo script viene eseguito da una macchina virtuale di Azure. Quando si usa questa opzione, non sarà necessario archiviare credenziali nella macchina virtuale.

È possibile accedere all'account usando un'identità gestita a livello di sistema abilitata nella macchina virtuale oppure usando l'ID client, l'ID oggetto o l'ID risorsa di un'identità gestita assegnata dall'utente assegnata alla macchina virtuale.

Per altre informazioni su come abilitare un'identità gestita a livello di sistema o creare un'identità gestita assegnata dall'utente, vedere Configurare le identità gestite per le risorse di Azure in una macchina virtuale usando il portale di Azure.

Autorizzare usando un'identità gestita a livello di sistema

Assicurarsi prima di tutto di aver abilitato un'identità gestita a livello di sistema nella macchina virtuale. Vedere Identità gestita assegnata dal sistema.

Digitare il comando seguente e quindi premere INVIO.

export AZCOPY_AUTO_LOGIN_TYPE=MSI

Eseguire quindi qualsiasi comando azcopy (ad esempio: azcopy list https://contoso.blob.core.windows.net).

Autorizzare usando un'identità gestita assegnata dall'utente

Prima di tutto, assicurarsi di aver abilitato un'identità gestita assegnata dall'utente nella macchina virtuale. Vedere Identità gestita assegnata dall'utente.

Digitare il comando seguente e quindi premere INVIO.

export AZCOPY_AUTO_LOGIN_TYPE=MSI

Digitare quindi uno dei comandi seguenti e quindi premere INVIO.

export AZCOPY_MSI_CLIENT_ID=<client-id>

Sostituire il <client-id> segnaposto con l'ID client dell'identità gestita assegnata dall'utente.

export AZCOPY_MSI_OBJECT_ID=<object-id>

Sostituire il <object-id> segnaposto con l'ID oggetto dell'identità gestita assegnata dall'utente.

export AZCOPY_MSI_RESOURCE_STRING=<resource-id>

Sostituire il <resource-id> segnaposto con l'ID risorsa dell'identità gestita assegnata dall'utente.

Dopo aver impostato queste variabili, è possibile eseguire qualsiasi comando azcopy (ad esempio: azcopy list https://contoso.blob.core.windows.net).

Autorizzare un'entità servizio

Questa è un'ottima opzione se si prevede di usare AzCopy all'interno di uno script che viene eseguito senza interazione dell'utente, in particolare quando si esegue in locale. Se si prevede di eseguire AzCopy in macchine virtuali eseguite in Azure, un'identità del servizio gestita è più semplice da amministrare. Per altre informazioni, vedere la sezione Autorizzare un'identità gestita di questo articolo.

È possibile accedere all'account usando un segreto client o usando la password di un certificato associato alla registrazione dell'app dell'entità servizio.

Per altre informazioni sulla creazione di un'entità servizio, vedere Procedura: Usare il portale per creare un'applicazione Microsoft Entra e un'entità servizio in grado di accedere alle risorse.

Per altre informazioni sulle entità servizio in generale, vedere Oggetti applicazione e entità servizio in Microsoft Entra ID

Autorizzare un'entità servizio usando un segreto client

Digitare il comando seguente e quindi premere INVIO.

export AZCOPY_AUTO_LOGIN_TYPE=SPN
export AZCOPY_SPA_APPLICATION_ID=<application-id>
export AZCOPY_SPA_CLIENT_SECRET=<client-secret>
export AZCOPY_TENANT_ID=<tenant-id>

Sostituire il <application-id> segnaposto con l'ID applicazione della registrazione dell'app dell'entità servizio. Sostituire il <client-secret> segnaposto con il segreto client. Sostituire il <tenant-id> segnaposto con l'ID tenant dell'organizzazione a cui appartiene l'account di archiviazione. Per trovare l'ID tenant, selezionare Tenant properties > Tenant ID (ID tenant) nel portale di Azure.

Nota

Prendere in considerazione l'uso di un prompt per raccogliere la password dall'utente. In questo modo, la password non verrà visualizzata nella cronologia dei comandi.

Eseguire quindi qualsiasi comando azcopy (ad esempio: azcopy list https://contoso.blob.core.windows.net).

Autorizzare un'entità servizio usando un certificato

Se si preferisce usare le proprie credenziali per l'autorizzazione, è possibile caricare un certificato nella registrazione dell'app e quindi usare tale certificato per l'accesso.

Oltre a caricare il certificato nella registrazione dell'app, è anche necessario avere una copia del certificato salvato nel computer o nella macchina virtuale in cui verrà eseguito AzCopy. Questa copia del certificato deve essere in . PFX o . Formato PEM e deve includere la chiave privata. La chiave privata deve essere protetta da password. Se si usa Windows e il certificato esiste solo in un archivio certificati, assicurarsi di esportare tale certificato in un file PFX (inclusa la chiave privata). Per indicazioni, vedere Export-PfxCertificate

Digitare il comando seguente e quindi premere INVIO.

export AZCOPY_AUTO_LOGIN_TYPE=SPN
export AZCOPY_SPA_APPLICATION_ID=<application-id>
export AZCOPY_SPA_CERT_PATH=<path-to-certificate-file>
export AZCOPY_SPA_CERT_PASSWORD=<certificate-password>
export AZCOPY_TENANT_ID=<tenant-id>

Sostituire il <application-id> segnaposto con l'ID applicazione della registrazione dell'app dell'entità servizio. Sostituire il <path-to-certificate-file> segnaposto con il percorso relativo o completo del file di certificato. AzCopy salva il percorso di questo certificato, ma non salva una copia del certificato, quindi assicurarsi di mantenere il certificato sul posto. Sostituire il <certificate-password> segnaposto con la password del certificato. Sostituire il <tenant-id> segnaposto con l'ID tenant dell'organizzazione a cui appartiene l'account di archiviazione. Per trovare l'ID tenant, selezionare Tenant properties > Tenant ID (ID tenant) nel portale di Azure.

Nota

Prendere in considerazione l'uso di un prompt per raccogliere la password dall'utente. In questo modo, la password non verrà visualizzata nella cronologia dei comandi.

Eseguire quindi qualsiasi comando azcopy (ad esempio: azcopy list https://contoso.blob.core.windows.net).

Autorizzare usando il comando azcopy login

In alternativa all'uso delle variabili in memoria, si autorizza l'accesso usando il comando azcopy login.

Il comando azcopy login recupera un token OAuth e quindi inserisce tale token in un archivio segreto nel sistema. Se il sistema operativo non dispone di un archivio segreto, ad esempio un keyring Linux, il comando azcopy login non funzionerà perché non è possibile posizionare il token.

Autorizzare un'identità utente (comando azcopy login)

Dopo aver verificato che all'identità utente sia stato assegnato il livello di autorizzazione necessario, aprire un prompt dei comandi, digitare il comando seguente e quindi premere INVIO.

azcopy login

Se viene visualizzato un errore, provare a includere l'ID tenant dell'organizzazione a cui appartiene l'account di archiviazione.

azcopy login --tenant-id=<tenant-id>

Sostituire il <tenant-id> segnaposto con l'ID tenant dell'organizzazione a cui appartiene l'account di archiviazione. Per trovare l'ID tenant, selezionare Tenant properties > Tenant ID (ID tenant) nel portale di Azure.

Questo comando restituisce un codice di autenticazione e l'URL di un sito Web. Aprire il sito Web, immettere il codice e quindi scegliere il pulsante Avanti.

Creazione di un contenitore

Verrà visualizzata una finestra di accesso. In tale finestra accedere al proprio account Azure usando le relative credenziali. Dopo aver completato l'accesso, è possibile chiudere la finestra del browser e iniziare a usare AzCopy.

Autorizzare usando un'identità gestita a livello di sistema (comando azcopy login)

Assicurarsi prima di tutto di aver abilitato un'identità gestita a livello di sistema nella macchina virtuale. Vedere Identità gestita assegnata dal sistema.

Quindi, nella console dei comandi digitare il comando seguente e quindi premere INVIO.

azcopy login --identity

Autorizzare usando un'identità gestita assegnata dall'utente (comando azcopy login)

Prima di tutto, assicurarsi di aver abilitato un'identità gestita assegnata dall'utente nella macchina virtuale. Vedere Identità gestita assegnata dall'utente.

Quindi, nella console dei comandi digitare uno dei comandi seguenti e quindi premere INVIO.

azcopy login --identity --identity-client-id "<client-id>"

Sostituire il <client-id> segnaposto con l'ID client dell'identità gestita assegnata dall'utente.

azcopy login --identity --identity-object-id "<object-id>"

Sostituire il <object-id> segnaposto con l'ID oggetto dell'identità gestita assegnata dall'utente.

azcopy login --identity --identity-resource-id "<resource-id>"

Sostituire il <resource-id> segnaposto con l'ID risorsa dell'identità gestita assegnata dall'utente.

Autorizzare un'entità servizio (comando azcopy login)

Prima di eseguire uno script, è necessario accedere in modo interattivo almeno una volta in modo che sia possibile fornire a AzCopy le credenziali dell'entità servizio. Tali credenziali vengono archiviate in un file protetto e crittografato in modo che lo script non deve fornire tali informazioni riservate.

È possibile accedere all'account usando un segreto client o usando la password di un certificato associato alla registrazione dell'app dell'entità servizio.

Per altre informazioni sulla creazione di un'entità servizio, vedere Procedura: Usare il portale per creare un'applicazione Microsoft Entra e un'entità servizio in grado di accedere alle risorse.

Autorizzare un'entità servizio usando un segreto client (comando azcopy login)

Per iniziare, impostare la AZCOPY_SPA_CLIENT_SECRET variabile di ambiente sul segreto client della registrazione dell'app dell'entità servizio.

Nota

Assicurarsi di impostare questo valore dal prompt dei comandi e non nelle impostazioni delle variabili di ambiente del sistema operativo. In questo modo, il valore è disponibile solo per la sessione corrente.

Questo esempio illustra come eseguire questa operazione in PowerShell.

$env:AZCOPY_SPA_CLIENT_SECRET="$(Read-Host -prompt "Enter key")"

Nota

Prendere in considerazione l'uso di un prompt come illustrato in questo esempio. In questo modo, la password non verrà visualizzata nella cronologia dei comandi della console.

Digitare quindi il comando seguente e quindi premere INVIO.

azcopy login --service-principal  --application-id application-id --tenant-id=tenant-id

Sostituire il <application-id> segnaposto con l'ID applicazione della registrazione dell'app dell'entità servizio. Sostituire il <tenant-id> segnaposto con l'ID tenant dell'organizzazione a cui appartiene l'account di archiviazione. Per trovare l'ID tenant, selezionare Tenant properties > Tenant ID (ID tenant) nel portale di Azure.

Autorizzare un'entità servizio usando un certificato (comando azcopy login)

Se si preferisce usare le proprie credenziali per l'autorizzazione, è possibile caricare un certificato nella registrazione dell'app e quindi usare tale certificato per l'accesso.

Oltre a caricare il certificato nella registrazione dell'app, è anche necessario avere una copia del certificato salvato nel computer o nella macchina virtuale in cui verrà eseguito AzCopy. Questa copia del certificato deve essere in . PFX o . Formato PEM e deve includere la chiave privata. La chiave privata deve essere protetta da password. Se si usa Windows e il certificato esiste solo in un archivio certificati, assicurarsi di esportare tale certificato in un file PFX (inclusa la chiave privata). Per indicazioni, vedere Export-PfxCertificate

Impostare quindi la AZCOPY_SPA_CERT_PASSWORD variabile di ambiente sulla password del certificato.

Nota

Assicurarsi di impostare questo valore dal prompt dei comandi e non nelle impostazioni delle variabili di ambiente del sistema operativo. In questo modo, il valore è disponibile solo per la sessione corrente.

Questo esempio illustra come eseguire questa attività in PowerShell.

$env:AZCOPY_SPA_CERT_PASSWORD="$(Read-Host -prompt "Enter key")"

Digitare quindi il comando seguente e quindi premere INVIO.

azcopy login --service-principal --application-id application-id --certificate-path <path-to-certificate-file> --tenant-id=<tenant-id>

Sostituire il <application-id> segnaposto con l'ID applicazione della registrazione dell'app dell'entità servizio. Sostituire il <path-to-certificate-file> segnaposto con il percorso relativo o completo del file di certificato. AzCopy salva il percorso di questo certificato, ma non salva una copia del certificato, quindi assicurarsi di mantenere il certificato sul posto. Sostituire il <tenant-id> segnaposto con l'ID tenant dell'organizzazione a cui appartiene l'account di archiviazione. Per trovare l'ID tenant, selezionare Tenant properties > Tenant ID (ID tenant) nel portale di Azure.

Nota

Prendere in considerazione l'uso di un prompt come illustrato in questo esempio. In questo modo, la password non verrà visualizzata nella cronologia dei comandi della console.

Autorizzare con l'interfaccia della riga di comando di Azure

Se si accede usando l'interfaccia della riga di comando di Azure, l'interfaccia della riga di comando di Azure ottiene un token OAuth che AzCopy può usare per autorizzare le operazioni.

Per abilitare AzCopy all'uso di tale token, digitare il comando seguente e quindi premere INVIO.

export AZCOPY_AUTO_LOGIN_TYPE=AZCLI

Per altre informazioni su come accedere con l'interfaccia della riga di comando di Azure, vedere Accedere con l'interfaccia della riga di comando di Azure.

Autorizzare con Azure PowerShell

Se si accede usando Azure PowerShell, Azure PowerShell ottiene un token OAuth che AzCopy può usare per autorizzare le operazioni.

Per abilitare AzCopy all'uso di tale token, digitare il comando seguente e quindi premere INVIO.

$Env:AZCOPY_AUTO_LOGIN_TYPE="PSCRED"

Per altre informazioni su come accedere con Azure PowerShell, vedere Accedere con Azure PowerShell.

Passaggi successivi

  • Per altre informazioni su AzCopy, Introduzione ad AzCopy

  • Eventuali domande, problemi o commenti di carattere generale devono essere inoltrati alla pagina GitHub.