Eseguire l'autenticazione con un registro contenitori Docker privatoAuthenticate with a private Docker container registry

Esistono diversi modi per eseguire l'autenticazione con un registro contenitori di Azure, ognuno dei quali è applicabile a uno o più scenari di utilizzo del registro.There are several ways to authenticate with an Azure container registry, each of which is applicable to one or more registry usage scenarios.

È possibile accedere a un registro direttamente tramite l'accesso individuale. Le applicazioni e gli agenti di orchestrazione dei contenitori possono eseguire l'autenticazione automatica o "headless", usando un'entità servizio di Azure Active Directory (Azure AD).You can log in to a registry directly via individual login, and your applications and container orchestrators can perform unattended, or "headless," authentication by using an Azure Active Directory (Azure AD) service principal.

Il registro contenitori di Azure non supporta le operazioni di Docker non autenticate o l'accesso anonimo.Azure Container Registry does not support unauthenticated Docker operations or anonymous access. Per le immagini pubbliche, è possibile usare l'Hub Docker.For public images, you can use Docker Hub.

Accesso individuale con Azure ADIndividual login with Azure AD

Quando si usa direttamente il registro, ad esempio per eseguire il pull o il push delle immagini dalla workstation di sviluppo, eseguire l'autenticazione usando il comando az acr login nell'interfaccia della riga di comando di Azure:When working with your registry directly, such as pulling images to and pushing images from your development workstation, authenticate by using the az acr login command in the Azure CLI:

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.When you log in with az acr login, the CLI uses the token created when you executed az login to seamlessly authenticate your session with your registry. Dopo avere effettuato l'accesso in questo modo, le credenziali vengono memorizzate nella cache e i successivi comandi docker non richiedono il nome utente o la password.Once you've logged in this way, your credentials are cached, and subsequent docker commands do not require a username or password. In caso di scadenza del token, è possibile aggiornarlo usando di nuovo il comando az acr login per eseguire nuovamente l'autenticazione.If your token expires, you can refresh it by using the az acr login command again to reauthenticate. L'uso di az acr login con le identità di Azure offre l'accesso in base al ruolo.Using az acr login with Azure identities provides role-based access.

Entità servizioService principal

È possibile assegnare al registro un'entità servizio, che l'applicazione o il servizio può successivamente usare per eseguire l'autenticazione headless.You can assign a service principal to your registry, and your application or service can use it for headless authentication. Le entità servizio consentono di eseguire l'accesso in base al ruolo a un registro. È possibile assegnare più entità servizio a un registro.Service principals allow role-based access to a registry, and you can assign multiple service principals to a registry. L'uso di più entità servizio consente di definire un accesso diverso per applicazioni diverse.Multiple service principals allow you to define different access for different applications.

I ruoli disponibili sono:The available roles are:

  • Lettore: pullReader: pull
  • Collaboratore: pull e pushContributor: pull and push
  • Proprietario: pull, push e assegnazione di ruoli ad altri utentiOwner: pull, push, and assign roles to other users

Le entità servizio consentono la connettività headless a un registro in entrambi gli scenari push e pull, come i seguenti:Service principals enable headless connectivity to a registry in both push and pull scenarios like the following:

  • Lettore: distribuzioni di contenitori da un registro a sistemi di orchestrazione, inclusi Kubernetes, DC/OS e Docker Swarm.Reader: Container deployments from a registry to orchestration systems including Kubernetes, DC/OS, and Docker Swarm. È anche possibile eseguire il pull da registri contenitori a servizi di Azure correlati, ad esempio AKS, Servizio app, Batch, Service Fabric e altri ancora.You can also pull from container registries to related Azure services such as AKS, App Service, Batch, Service Fabric, and others.

  • Collaboratore: soluzioni di distribuzione e integrazione continua come Visual Studio Team Services o Jenkins, che creano immagini dei contenitori e ne eseguono il push a un registro.Contributor: Continuous integration and deployment solutions like Visual Studio Team Services (VSTS) or Jenkins that build container images and push them to a registry.

Suggerimento

È possibile rigenerare la password di un'entità servizio eseguendo il comando az ad sp reset-credentials.You can regenerate the password of a service principal by running the az ad sp reset-credentials command.

È inoltre possibile accedere direttamente con un'entità servizio.You can also log in directly with a service principal. Specificare l'ID app e la password dell'entità servizio nel comando docker login:Provide the app ID and password of the service principal to the docker login command:

docker login myregistry.azurecr.io -u xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p myPassword

Dopo aver effettuato l'accesso, Docker memorizza nella cache le credenziali, così da non doversi ricordare l'ID app.Once logged in, Docker caches the credentials, so you don't need to remember the app ID.

A seconda della versione di Docker installata, è possibile che venga visualizzato un avviso di sicurezza che consiglia di usare il parametro --password-stdin.Depending on the version of Docker you have installed, you might see a security warning recommending the use of the --password-stdin parameter. Sebbene il suo utilizzo non rientri nell'ambito di questo articolo, si raccomanda di seguire questa procedura consigliata.While its use is outside the scope of this article, we recommend following this best practice. Per altre informazioni, vedere la guida comandi di accesso di Docker.For more information, see the docker login command reference.

Per altre informazioni su come usare un'entità servizio per l'autenticazione headless al Registro contenitori di Azure, vedere Autenticazione al Registro contenitori di Azure con entità servizio.For more information on using a service principal for headless authentication to ACR, see Azure Container Registry authentication with service principals.

Account amministratoreAdmin account

Ogni registro contenitori include un account utente amministratore che, per impostazione predefinita, è disabilitato.Each container registry includes an admin user account, which is disabled by default. È possibile abilitare l'utente amministratore e gestirne le credenziali nel portale di Azure o usando l'interfaccia della riga di comando di Azure.You can enable the admin user and manage its credentials in the Azure portal, or by using the Azure CLI.

Importante

L'account amministratore è pensato per consentire l'accesso al registro a un singolo utente, principalmente a scopo di test.The admin account is designed for a single user to access the registry, mainly for testing purposes. Non è consigliabile condividere le credenziali dell'account amministratore con più utenti.We do not recommend sharing the admin account credentials with multiple users. 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.All users authenticating with the admin account appear as a single user with push and pull access to the registry. Se si modifica o si disattiva questo account, tutti gli utenti che ne usano le credenziali non potranno più accedere al registro.Changing or disabling this account disables registry access for all users who use its credentials. Negli scenari di tipo headless è consigliabile che gli utenti e le entità servizio abbiano una propria identità.Individual identity is recommended for users and service principals for headless scenarios.

L'account amministratore è dotato di due password, entrambe rigenerabili.The admin account is provided with two passwords, both of which can be regenerated. L'uso di due password consente di mantenere la connessione al registro usando una password mentre si rigenera l'altra.Two passwords allow you to maintain connection to the registry by using one password while you regenerate the other. Se l'account amministratore è abilitato, è possibile passare il nome utente e una password al comando docker login per eseguire l'autenticazione di base al registro.If the admin account is enabled, you can pass the username and either password to the docker login command for basic authentication to the registry. Ad esempio: For example:

docker login myregistry.azurecr.io -u myAdminName -p myPassword1

Anche in questo caso, in Docker è consigliabile usare il parametro --password-stdin invece di specificarlo nella riga di comando, per una maggiore sicurezza.Again, Docker recommends that you use the --password-stdin parameter instead of supplying it on the command line for increased security. È inoltre possibile specificare solo il nome utente, senza -p, e immettere la password quando viene richiesto.You can also specify only your username, without -p, and enter your password when prompted.

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:To enable the admin user for an existing registry, you can use the --admin-enabled parameter of the az acr update command in the Azure CLI:

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.You can enable the admin user in the Azure portal by navigating your registry, selecting Access keys under SETTINGS, then Enable under Admin user.

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

Passaggi successiviNext steps