Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Esistono diversi modi per eseguire l'autenticazione con Registro Azure Container, ognuno dei quali è applicabile a uno o più scenari di utilizzo del registro.
I modi consigliati includono:
- Eseguire l'autenticazione direttamente in un registro tramite un account di accesso singolo
- Le applicazioni e gli orchestratori di container possono eseguire l'autenticazione automatizzata o senza interfaccia usando un'entità servizio Microsoft Entra
Se si utilizza un registro contenitori con Azure Kubernetes Service (AKS) o un altro cluster Kubernetes, fare riferimento a Scenari per l'autenticazione con Azure Container Registry da Kubernetes.
Opzioni di autenticazione
Nella tabella seguente sono elencati i metodi di autenticazione disponibili e gli scenari tipici. Per informazioni dettagliate, vedere il contenuto collegato.
metodo | Come eseguire l'autenticazione | Scenari | Microsoft Entra: controllo degli accessi basato su ruoli | Limitazioni |
---|---|---|---|---|
Identità singola di Microsoft Entra |
az acr login nell'interfaccia della riga di comando di AzureConnect-AzContainerRegistry in Azure PowerShell |
Push/pull interattivo da parte di sviluppatori, tester | Sì | Il token Microsoft Entra deve essere rinnovato ogni 3 ore |
Principale del servizio Microsoft Entra | docker login az acr login nell'interfaccia della riga di comando di AzureConnect-AzContainerRegistry in Azure PowerShellImpostazioni di accesso al registro in API o strumenti segreto di pull di Kubernetes |
Push automatico dalla pipeline CI/CD Eseguire il pull automatico in Azure o nei servizi esterni |
Sì | La scadenza predefinita della password SP è 1 anno |
Identità gestita di Microsoft Entra per le risorse di Azure | docker login az acr login nell'interfaccia della riga di comando di AzureConnect-AzContainerRegistry in Azure PowerShell |
Push automatico dalla pipeline CI/CD di Azure Eseguire il pull automatico nei servizi di Azure Per un elenco degli scenari di assegnazione di ruoli dell'identità gestita, consultare gli scenari di assegnazione di ruoli ACR. |
Sì Assegnazioni di ruolo RBAC di Microsoft Entra con ruoli predefiniti di ACR Controllo degli accessi in base all'attributo Microsoft Entra (ABAC) per le autorizzazioni del repository basato su Microsoft Entra |
Usare solo i servizi di Azure selezionati che supportano le identità gestite per le risorse di Azure |
Identità gestita del kubelet del nodo del cluster AKS | Collegare il Registro di sistema quando il cluster del servizio Azure Kubernetes è stato creato o aggiornato | Eseguire un pull non presidiato su un nodo del cluster AKS nella stessa sottoscrizione o in una sottoscrizione diversa | No, solo accesso pull | Disponibile solo con il cluster del servizio Azure Kubernetes Non è possibile usare per l'autenticazione tra tenant |
Principale dell'entità servizio del cluster AKS | Abilitare quando il cluster del servizio Azure Kubernetes è stato creato o aggiornato | Eseguire il pull non monitorato nel cluster di Azure Kubernetes Service da un registro in un altro tenant di Azure Entra | No, solo accesso pull | Disponibile solo con il cluster del servizio Azure Kubernetes |
Utente amministratore | docker login |
Push/pull interattivo da parte di singoli sviluppatori o tester Distribuzione del portale dell'immagine dal Registro di sistema a Servizio app di Azure o istanze di Azure Container |
No, eseguire sempre il pull e l'accesso push | Account singolo per registro, non consigliato per più utenti |
Autorizzazioni del repository non basate su token di Microsoft Entra | docker login az acr login nell'interfaccia della riga di comando di AzureConnect-AzContainerRegistry in Azure PowerShellsegreto di pull di Kubernetes |
Push/pull interattivo nel repository da parte di singoli sviluppatori o tester Pull automatico dal repository da un singolo sistema o dispositivo esterno |
Le autorizzazioni del repository basate su token non supportano il controllo degli accessi in base al ruolo di Microsoft Entra. Per le autorizzazioni del repository basato su Microsoft Entra, consultare Microsoft Entra attribute-based access control (ABAC) per le autorizzazioni del repository basato su Microsoft Entra invece. |
Attualmente non integrato con l'identità di Microsoft Entra |
Account di accesso singolo con Microsoft Entra ID
Quando si usa direttamente il Registro di sistema, ad esempio il pull di immagini e il push di 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 login e 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, è necessario installare e eseguire l'interfaccia della riga di comando di Docker e il daemon Docker nell'ambiente.
az acr login
usa il client Docker per impostare un token Microsoft Entra nel file docker.config
. Dopo aver eseguito l'accesso in questo modo, le credenziali vengono memorizzate nella cache e i comandi successivi docker
nella sessione non richiedono un nome utente o una password.
Suggerimento
Usare az acr login
anche per autenticare un'identità individuale quando si desidera eseguire il push o il pull di artefatti diversi dalle immagini Docker nel proprio registro, ad esempio gli artefatti OCI.
Per l'accesso al Registro di sistema, il token usato da az acr login
è valido per 3 ore, pertanto è consigliabile accedere sempre al Registro di sistema prima di 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.
Utilizzare az acr login
con le identità Azure fornisce il controllo degli accessi basato sui ruoli di Azure. Per alcuni scenari, è possibile accedere a un registro con la propria identità individuale in Microsoft Entra ID o configurare altri utenti di Azure con ruoli specifici. Vedere Panoramica delle autorizzazioni e dei ruoli di Azure Container Registry Entra. 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 con --expose-token
In alcuni casi, è necessario eseguire l'autenticazione con az acr login
quando il daemon Docker non è in esecuzione nell'ambiente. Ad esempio, potrebbe essere necessario eseguire az acr login
in uno script in Azure Cloud Shell, che fornisce l'interfaccia della riga di comando di Docker, ma non esegue il daemon Docker.
Per questo scenario, eseguire prima az acr login
con il parametro --expose-token
. Questa opzione espone un token di accesso anziché eseguire l'accesso 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 di sistema, è consigliabile archiviare le credenziali del token in un percorso sicuro 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 00000000-0000-0000-0000-000000000000
come nome utente e usando il token di accesso come password:
docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN
Analogamente, è possibile usare il token restituito da az acr login
con il comando helm registry login
per eseguire l'autenticazione con il Registro di sistema:
echo $TOKEN | helm registry login myregistry.azurecr.io \
--username 00000000-0000-0000-0000-000000000000 \
--password-stdin
Entità servizio
Se si assegna un'entità servizio al Registro di sistema, l'applicazione o il servizio può usarla per l'autenticazione headless. Le entità servizio consentono il controllo degli accessi in base al ruolo di Azure a un registro ed è possibile assegnare più entità servizio a un registro. Più entità servizio consentono di definire un accesso diverso per applicazioni diverse.
Il token di autenticazione del Registro Azure Container viene creato al momento dell'accesso al Registro Azure Container e viene aggiornato dopo le operazioni successive. Il tempo necessario per il token è di 3 ore.
Per un elenco dei ruoli disponibili, vedere Panoramica delle autorizzazioni e dei ruoli di Azure Container Registry Entra.
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 Autenticazione di Registro Azure Container con 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 oppure tramite l'interfaccia della riga di comando, Azure PowerShell o altri strumenti di Azure. L'account amministratore dispone delle autorizzazioni complete per il Registro di sistema.
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 viene dotato di due password: entrambe possono essere rigenerate. Le nuove password create per gli account amministratore sono immediatamente disponibili. La rigenerazione delle password per gli account amministratore richiederà 60 secondi per la replica e sarà disponibile. Le due password consentono di mantenere la connessione al registro usando una password mentre l'altra viene rigenerata. 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 abilitare l'utente amministratore per un registro esistente, è possibile usare il --admin-enabled
parametro del comando az acr update nell'interfaccia della riga di comando di Azure:
az acr update -n <acrName> --admin-enabled true
È possibile abilitare l'utente amministratore nel portale di Azure passando al Registro di sistema, selezionando Chiavi di accesso in IMPOSTAZIONI e quindi Abilita in Utente amministratore.
Accedere con uno strumento contenitore alternativo invece di Docker
In alcuni scenari è necessario usare strumenti di contenitore alternativi, ad esempio podman
anziché lo strumento contenitore comune docker
. Ad esempio: Docker non è più disponibile in RHEL 8 e 9, quindi è necessario cambiare lo strumento contenitore.
Lo strumento contenitore predefinito è impostato su docker
per i comandi az acr login
. Se non si imposta lo strumento contenitore predefinito e nell'ambiente manca il comando docker
, verrà visualizzato l'errore seguente:
az acr login --name <acrName>
2024-03-29 07:30:10.014426 An error occurred: DOCKER_COMMAND_ERROR
Please verify if Docker client is installed and running.
Per modificare lo strumento contenitore predefinito usato dal comando az acr login
, è possibile impostare la variabile di ambiente DOCKER_COMMAND
. Ad esempio:
DOCKER_COMMAND=podman \
az acr login --name <acrName>
Nota
È necessaria l'interfaccia della riga di comando di Azure versione 2.59.0 o successiva installata e configurata per usare questa funzionalità. Eseguire az --version
per trovare la versione. Se è necessario installare o aggiornare, vedere Installare l'interfaccia della riga di comando di Azure.