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
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Miglioramenti agli screen reader e al contrasto in Angular
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Semplificare il deployment di siti statici con Azure Static Web App
Configurare policy CORS in Azure Container Apps
Elencare le container images installate in un cluster di Kubernetes
Migrare una service connection a workload identity federation in Azure DevOps
Utilizzare la session affinity con Azure Container Apps
Verificare la provenienza di un commit tramite le GitHub Actions
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Hosting di componenti WebAssembly in un'applicazione Blazor static
Sfruttare al massimo i topic space di Event Grid MQTT
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)