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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Eseguire query verso tipi non mappati in Entity Framework Core
Creare un webhook in Azure DevOps
Migrare una service connection a workload identity federation in Azure DevOps
Paginare i risultati con QuickGrid in Blazor
Creare gruppi di client per Event Grid MQTT
Utilizzare Tailwind CSS all'interno di React: installazione
Creare alias per tipi generici e tuple in C#
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Verificare la provenienza di un commit tramite le GitHub Actions
Aggiungere interattività lato server in Blazor 8
Accesso sicuro ai secrets attraverso i file in Azure Container Apps