Eseguire l'autenticazione con un Registro Azure Container

Esistono diversi modi per eseguire l'autenticazione con un Registro Azure Container, ognuno dei quali è applicabile a uno o più scenari di utilizzo del registro.

I modi consigliati includono:

  • Eseguire l'autenticazione a un registro direttamente tramite un singolo account di accesso
  • Le applicazioni e gli agente di orchestrazione dei contenitori possono eseguire l'autenticazione automatica, o "headless", usando un'entità servizio Azure Active Directory (Azure AD)

Se si usa un registro contenitori con servizio Azure Kubernetes o un altro cluster Kubernetes, vedere Scenari per l'autenticazione con Registro Azure Container da Kubernetes.

Opzioni di autenticazione

Nella tabella seguente sono elencati i metodi di autenticazione disponibili e gli scenari tipici. Per informazioni dettagliate, vedere contenuto collegato.

Metodo Come eseguire l'autenticazione Scenari Controllo degli accessi in base al ruolo di Azure Limitazioni
Identità ad Active Directory singola az acr login nell'interfaccia della riga di comando di Azure

Connect-AzContainerRegistryin Azure PowerShell
Push/pull interattivo da sviluppatori, tester Il token ad Active Directory deve essere rinnovato ogni 3 ore
Entità servizio ad Active Directory docker login

az acr login nell'interfaccia della riga di comando di Azure

Connect-AzContainerRegistryin Azure PowerShell

Impostazioni di accesso del Registro di sistema nelle API o negli strumenti

Segreto pull di Kubernetes
Push automatico dalla pipeline CI/CD

Pull automatico in Azure o servizi esterni
La scadenza predefinita della password SP è 1 anno
Identità gestita per le risorse di Azure docker login

az acr login nell'interfaccia della riga di comando di Azure

Connect-AzContainerRegistryin Azure PowerShell
Push automatico dalla pipeline CI/CD di Azure

Pull automatico nei servizi di Azure

Usare solo da servizi di Azure selezionati che supportano le identità gestite per le risorse di Azure
Identità gestita del cluster del servizio Web del servizio Web di Servizio Web di Gestione risorse di Collegare il registro quando viene creato o aggiornato il cluster del servizio Web Dia Pull automatico nel cluster del servizio AzureKs nella stessa sottoscrizione o in una sottoscrizione diversa No, solo accesso pull Disponibile solo con il cluster del servizio Servizio Web di Gestione risorse di Microsoft
Entità servizio del cluster del servizio AKS Abilitare la creazione o l'aggiornamento di un cluster del servizio Web Disassoce Pull automatico nel cluster del servizio Active Directory dal registro in un altro tenant di Active Directory No, solo accesso pull Disponibile solo con il cluster del servizio Servizio Web di Gestione risorse di Microsoft
Utente amministratore docker login Push/pull interattivo da parte di singoli sviluppatori o tester

Distribuzione dell'immagine nel portale dal registro Servizio app di Azure o Istanze di Azure Container
No, sempre accesso pull e push Singolo account per registro, non consigliato per più utenti
Token di accesso con ambito repository docker login

az acr login nell'interfaccia della riga di comando di Azure

Connect-AzContainerRegistryin Azure PowerShell

Segreto pull di Kubernetes
Push interattivo/pull nel repository da parte di singoli sviluppatori o tester

Pull automatico dal repository per singolo sistema o dispositivo esterno
Non attualmente integrato con l'identità di Active Directory

Accesso individuale con Azure AD

Quando si usa direttamente il registro, ad esempio per eseguire il pull e il push delle immagini da una workstation di sviluppo a un registro creato, eseguire l'autenticazione usando la singola identità di Azure. Accedere all'interfaccia della riga di comando di Azure con az logine quindi eseguire il comando az acr login:

az login
az acr login --name <acrName>

Quando si esegue l'accesso con az acr login, l'interfaccia della riga di comando usa il token creato con l'esecuzione di az login per l'autenticazione della sessione con il registro. Per completare il flusso di autenticazione, l'interfaccia della riga di comando di Docker e il daemon Docker devono essere installati e in esecuzione nell'ambiente in uso. az acr loginusa il client Docker per impostare un token Azure Active Directory nel docker.config file . Dopo aver effettuato l'accesso in questo modo, le credenziali vengono memorizzate nella cache e i successivi comandi docker nella sessione non richiedono il nome utente o la password.

Suggerimento

Usare anche per autenticare una singola identità quando si vuole eseguire il push o il pull di artefatti diversi da immagini Docker nel registro, ad esempio az acr login artefatti OCI.

Per l'accesso al Registro di sistema, il token usato da è valido per 3 ore, quindi è consigliabile accedere sempre al Registro di sistema prima di az acr login eseguire un docker comando. In caso di scadenza del token, è possibile aggiornarlo usando di nuovo il comando az acr login per eseguire nuovamente l'autenticazione.

L'uso di con le identità di Azure offre il controllo degli accessi in base al ruolo di az acr login Azure. Per alcuni scenari, è possibile accedere a un registro con la propria identità personale in Azure AD o configurare altri utenti di Azure con autorizzazioni e ruoli di Azure specifici. Per gli scenari tra servizi o per gestire le esigenze di un gruppo di lavoro o di un flusso di lavoro di sviluppo in cui non si vuole gestire l'accesso individuale, è anche possibile accedere con un'identità gestita per le risorse di Azure.

az acr login with --expose-token

In alcuni casi, è necessario eseguire az acr login l'autenticazione con quando il daemon Docker non è in esecuzione nell'ambiente. Ad esempio, potrebbe essere necessario eseguire in uno script in Azure Cloud Shell, che fornisce l'interfaccia della riga di comando di Docker, ma non esegue il az acr login daemon Docker.

Per questo scenario, eseguire az acr login prima con il parametro --expose-token . Questa opzione espone un token di accesso invece di accedere tramite l'interfaccia della riga di comando di Docker.

az acr login --name <acrName> --expose-token

L'output visualizza il token di accesso, abbreviato qui:

{
  "accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
  "loginServer": "myregistry.azurecr.io"
}

Per l'autenticazione del registro, è consigliabile archiviare le credenziali del token in una posizione sicura e seguire le procedure consigliate per gestire le credenziali di accesso docker. Ad esempio, archiviare il valore del token in una variabile di ambiente:

TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)

Eseguire quindi docker login , passando come nome utente e usando il token di accesso come 00000000-0000-0000-0000-000000000000 password:

docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password $TOKEN

Entità servizio

Se si assegna un'entità servizio al registro, l'applicazione o il servizio può usarla per eseguire l'autenticazione headless. Le entità servizio consentono il controllo degli accessi in base al ruolo di Azure in un registro ed è possibile assegnare più entità servizio a un registro. L'uso di più entità servizio consente di definire un accesso diverso per applicazioni diverse.

I ruoli disponibili per un registro contenitori includono:

  • AcrPull: pull

  • AcrPush: pull e push

  • Proprietario: pull, push e assegnazione di ruoli ad altri utenti

Per un elenco completo dei ruoli, vedere Ruoli e autorizzazioni di Registro Azure Container.

Per gli script dell'interfaccia della riga di comando per creare un'entità servizio per l'autenticazione con un Registro Azure Container e altre indicazioni, vedere Registro Azure Container'autenticazionecon entità servizio.

Account amministratore

Ogni registro contenitori include un account utente amministratore che, per impostazione predefinita, è disabilitato. È possibile abilitare l'utente amministratore e gestirne le credenziali nel portale di Azure o usando l'interfaccia della riga di comando di Azure, Azure PowerShell o altri strumenti di Azure. L'account amministratore ha autorizzazioni complete per il registro.

L'account amministratore è attualmente necessario per alcuni scenari per distribuire un'immagine da un registro contenitori a determinati servizi di Azure. Ad esempio, l'account amministratore è necessario quando si usa il portale di Azure per distribuire un'immagine del contenitore da un registro direttamente in Istanze di Azure Container o in App Web di Azure per contenitori.

Importante

L'account amministratore è pensato per consentire l'accesso al registro a un singolo utente, principalmente a scopo di test. Non è consigliabile condividere le credenziali dell'account amministratore tra più utenti. Tutti gli utenti che si autenticano con l'account amministratore vengono visualizzati come un unico utente con accesso di tipo push e pull al registro. Se si modifica o si disattiva questo account, tutti gli utenti che ne usano le credenziali non potranno più accedere al registro. Negli scenari di tipo headless è consigliabile che gli utenti e le entità servizio abbiano una propria identità.

L'account amministratore è dotato di due password, entrambe rigenerabili. L'uso di due password consente di mantenere la connessione al registro usando una password mentre si rigenera l'altra. Se l'account amministratore è abilitato, è possibile passare il nome utente e una password al comando docker login quando richiesto, per eseguire l'autenticazione di base al registro. Ad esempio:

docker login myregistry.azurecr.io

Per le procedure consigliate per gestire le credenziali di accesso, vedere le informazioni di riferimento sul comando docker login.

Per consentire a un utente amministratore di accedere a un registro esistente, è possibile usare il parametro --admin-enabled del comando az acr update nell'interfaccia della riga di comando di Azure:

az acr update -n <acrName> --admin-enabled true

Per abilitare l'utente amministratore nel portale di Azure, passare al registro interessato, selezionare Chiavi di accesso in IMPOSTAZIONI, quindi selezionare Abilita in Utente amministratore.

Abilitare l'interfaccia utente dell'utente amministratore nel portale di Azure

Passaggi successivi