Accedere ad Azure Container Registry tramite AAD

di Cristian Civera, in Container Registry,

Quando necessitiamo di un registry per Docker ci sono molti servizi disponibili, privati e pubblici, a pagamento o gratuiti. Azure Container Registry (ACR) è il servizio della piattaforma Microsoft Azure che offre la possibilità di storicizzare le nostre immagini in maniera privata, affidabile e geo distribuita. Offre inoltre funzionalità aggiuntive, come la possibilità di eseguire task per la creazione delle immagini e il supporto a Helm.

Per poter effettuare push e pull di immagini, però, ci si avvale degli stessi strumenti disponibili per gli altri registri. Nel caso di Docker, attraverso le istruzioni docker push e docker pull possiamo inviare o scaricare un'immagine, ma prima è fondamentale aver effettuato l'accesso. L'istruzione docker login permette di farlo specificando lo username e la password. Nel caso di ACR è disponibile una chiave d'accesso amministrativa, ma normalmente è disabilitata perché non permette di distinguere i permessi e chi ha effettuato l'operazione.

Il modo più semplice per effettuare l'accesso consiste quindi nell'utilizzare Azure CLI. Attraverso due semplice comandi possiamo prima di tutto entrare con le nostre credenziali Microsoft e successivamente ottenere la sessione di autenticazione per Docker.

az login
az acr login --name ricciolo

Nell'esempio precedente vogliamo accedere all'istanza di nome ricciolo. Questa procedura richiede che l'utente utilizzato sia uno user o un guest configurato in Azure Active Directory (AAD) e abbia i permessi di accesso all'istanza da noi desiderata.

In alternativa possiamo utilizzare un service principal, cioè creare un applicativo che permetta l'accesso senza procedure web, ideale quindi per esecuzioni batch. Per farlo dobbiamo accedere nella sezione ADD e successivamente in App Registrations. Tramite il pulsante New registration diamo un nome al nostro principal.

Creato il principal accediamo alla sezione Certificates & secrets e generiamo un nuovo secret.

Annotiamolo perché questo rappresenta la password del principal. Nell'overview dell'app prendiamo inoltre nota del Application (client) ID, il quale rappresenta lo username.

L'ultimo step richiede l'assegnazione dei permessi, fondamentale nel caso dei principal, ma anche nel caso in cui utilizzassimo un utente AAD che non è amministratore dell'intera sottoscrizione. Nella sezione Access control (IAM) della nostra istanza ACR aggiungiamo quindi una nuova assegnazione per l'applicativo appena creato, indicando uno o più ruoli specifici, come per esempio, AcrPull e AcrPush.

Creato l'applicativo e dati i permessi, possiamo usare direttamente Docker per effettuare il login mediante client id e secret.

docker login ricciolo.azurecr.io --username 5100bea1-df8c-43d5-b4d5-05302fba74b4 --password fdgfdsgdsgdsgsdgf

In alternativa alla password è possibile anche usare i certificati dedicati alle applicazioni rendendo ancora più sicuro l'accesso. In generale è buona norma, come già detto, non usare l'utenza amministrativa predefinita, ma procedere con una delle due metodologie indicate.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi