Questa pagina descrive come configurare un client di terze parti per eseguire l'autenticazione con Container Registry.
I servizi Google Cloud che si integrano con Container Registry sono preconfigurati con le autorizzazioni per accedere ai repository nello stesso progetto. Non è necessario configurare l'autenticazione per questi servizi, ma devi verificare che le autorizzazioni siano configurate correttamente.
Prima di iniziare
- Verifica di aver attivato l'API Container Registry e di aver installato gcloud CLI. Per le istruzioni, consulta la sezione Attivare e disattivare il servizio.
Verifica che l'account che utilizzi per l'autenticazione disponga delle autorizzazioni per accedere a Container Registry. Ti consigliamo di utilizzare un account di servizio anziché un account utente.
Installa Docker, se non è già installato. Docker è incluso in Cloud Shell.
Docker richiede l'accesso con privilegi per interagire con i registri. Su Linux o Windows, aggiungi l'utente che utilizzi per eseguire i comandi Docker al gruppo di sicurezza Docker. Questo passaggio non è necessario su macOS poiché Docker Desktop viene eseguito su una macchina virtuale come utente root.
Linux
Il gruppo di sicurezza Docker si chiama
docker
. Per aggiungere il tuo nome utente, esegui il seguente comando:sudo usermod -a -G docker ${USER}
Windows
Il gruppo di sicurezza Docker si chiama
docker-users
. Per aggiungere un utente dal prompt dei comandi dell'amministratore, esegui il seguente comando:net localgroup docker-users DOMAIN\USERNAME /add
Dove
- DOMAIN è il tuo dominio Windows.
- USERNAME è il tuo nome utente.
Uscire e accedere di nuovo per applicare le modifiche all'appartenenza al gruppo. Se utilizzi una macchina virtuale, potrebbe essere necessario riavviare la macchina virtuale affinché le modifiche all'abbonamento vengano applicate.
Metodi di autenticazione
Devi configurare tutti i client di terze parti che devono accedere a Container Registry.
Sono disponibili i seguenti metodi di autenticazione:
gcloud
credential helper (consigliato)- Configura le credenziali di Container Registry per l'utilizzo con Docker direttamente in gcloud. Se possibile, utilizza questo metodo per accedere in modo sicuro e temporaneo alle risorse del tuo progetto. Questa opzione supporta solo le versioni Docker 18.03 o successive.
- Utilità di assistenza per le credenziali autonoma
- Questa opzione è principalmente per configurare le credenziali per l'utilizzo con Docker in assenza di Google Cloud CLI. Questa opzione supporta solo le versioni Docker 18.03 o successive.
- Token di accesso Le
- credenziali predefinite dell'applicazione
forniscono token di accesso di breve durata che un account di servizio utilizza per accedere alle tue risorse Google Cloud.
È la più sicura delle alternative all'utilizzo di
gcloud
come strumento di assistenza per le credenziali. - File di chiavi JSON
Una coppia di chiavi gestita dall'utente che puoi utilizzare come credenziale per un account di servizio. Poiché la credenziale è permanente, è l'opzione meno sicura tra tutti i metodi di autenticazione disponibili.
Se possibile, utilizza un token di accesso o un altro metodo di autenticazione disponibile per ridurre il rischio di accesso non autorizzato ai tuoi elementi. Le chiavi degli account di servizio comportano un rischio per la sicurezza se non vengono gestite correttamente. Dovresti scegliere un'alternativa più sicura alle chiavi degli account di servizio quando è possibile. Se devi effettuare l'autenticazione con una chiave dell'account di servizio, sei responsabile della sicurezza della chiave privata e di altre operazioni descritte dalle best practice per la gestione delle chiavi degli account di servizio. Se non riesci a creare una chiave del account di servizio, la creazione di chiavi del account di servizio potrebbe essere disabilitata per la tua organizzazione. Per ulteriori informazioni, vedi Gestire le risorse dell'organizzazione sicure per impostazione predefinita.
Alcuni strumenti o flussi di lavoro non forniscono un buon supporto per l'utilizzo di gcloud
come aiuto per le credenziali. Se utilizzi una delle opzioni alternative, assicurati di comprendere le implicazioni per la sicurezza.
Impostazioni di autenticazione nel file di configurazione di Docker
Docker salva le impostazioni di autenticazione nel file di configurazione config.json.
- Linux:
~/.docker/config.json
- Windows:
%USERPROFILE%\.docker\config.json
Il file contiene sezioni separate per i diversi metodi di autenticazione:
credHelpers
- Se utilizzi l'helper per le credenziali Docker per l'autenticazione,
Container Registry memorizza le impostazioni dell'helper per le credenziali nella
credHelpers
sezione del file. auths
- Se utilizzi Docker per accedere con un token o una chiave dell'account di servizio come password, Docker memorizza le tue credenziali nella sezione
auths
del file. credStore
- Se hai configurato un
archivio delle credenziali
per gestire le tue credenziali, le impostazioni per l'archivio delle credenziali si trovano
nella sezione
credStore
del file.
Quando Docker si connette a un registry, controlla prima se è presente un assistente per le credenziali associato all'host. Pertanto, se config.json
include le impostazioni di Container Registry sia nelle sezioni credHelpers
sia in auths
, le impostazioni nella sezione auths
vengono ignorate.
gcloud credential helper
Ti consigliamo vivamente di utilizzare questo metodo, se possibile. Fornisce accesso sicuro e temporaneo alle risorse del progetto.
Utilizza gcloud CLI per configurare l'autenticazione in Cloud Shell o in qualsiasi ambiente in cui è installato Google Cloud CLI. Cloud Shell include una versione attuale di Docker.
Per configurare l'autenticazione:
Accedi a gcloud come utente che eseguirà i comandi Docker.
Per configurare l'autenticazione con le credenziali utente, esegui il seguente comando:
gcloud auth login
Per configurare l'autenticazione con le credenziali dell'account di servizio, esegui questo comando:
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
Dove
- ACCOUNT è il nome dell'account di servizio nel formato
[USERNAME]@[PROJECT-ID].iam.gserviceaccount.com
. Puoi visualizzare gli account di servizio esistenti nella pagina Account di servizio della console Google Cloud o con il comandogcloud iam service-accounts list
- KEY-FILE è il file della chiave dell'account di servizio. Per informazioni sulla creazione di una chiave, consulta la documentazione di Identity and Access Management (IAM).
- ACCOUNT è il nome dell'account di servizio nel formato
Configura Docker con il seguente comando:
gcloud auth configure-docker
Le credenziali vengono salvate nella home directory dell'utente.
- Linux:
$HOME/.docker/config.json
- Windows:
%USERPROFILE%/.docker/config.json
- Linux:
Assistente per le credenziali autonomo
L'assistente per le credenziali Docker autonomo configura Docker per eseguire l'autenticazione in Container Registry su un sistema in cui gcloud CLI non è disponibile.
L'helper delle credenziali recupera le credenziali di Container Registry, automaticamente o da una posizione specificata utilizzando il relativo flag --token-source
, quindi le scrive nel file di configurazione di Docker. In questo modo, puoi utilizzare lo strumento a riga di comando di Docker, docker
, per interagire direttamente con Container Registry.
Per configurare l'autenticazione:
Accedi alla macchina come utente che eseguirà i comandi Docker.
Scarica
docker-credential-gcr
dalle release di GitHub:Se vuoi, puoi utilizzare l'utilità a riga di comando
curl
. Ad esempio:VERSION=2.1.23 OS=linux # or "darwin" for OSX, "windows" for Windows. ARCH=amd64 # or "386" for 32-bit OSs, "arm64" for ARM 64. curl -fsSL "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v${VERSION}/docker-credential-gcr_${OS}_${ARCH}-${VERSION}.tar.gz" \ | tar xz docker-credential-gcr \ && chmod +x docker-credential-gcr && sudo mv docker-credential-gcr /usr/bin/
Configura Docker con il seguente comando:
docker-credential-gcr configure-docker
Le credenziali vengono salvate nella home directory dell'utente.
- Linux:
$HOME/.docker/config.json
- Windows:
%USERPROFILE%/.docker/config.json
- Linux:
Per ulteriori informazioni, consulta la documentazione dell'helper per le credenziali Docker autonomo su GitHub.
Docker è ora configurato per eseguire l'autenticazione con Container Registry. Per spingere e estrarre le immagini, assicurati che le autorizzazioni siano configurate correttamente.
Token di accesso
Puoi generare un token di accesso OAuth di breve durata per autenticarti con Container Registry. Poiché il token è valido per 60 minuti, lo devi richiedere meno di un'ora prima di utilizzarlo per connetterti a Container Registry.
Crea un nuovo account di servizio che interagirà con Container Registry.
Console
Nella console Google Cloud, vai alla pagina Crea account di servizio.
Seleziona il progetto che vuoi utilizzare.
Inserisci un nome nel campo Nome account di servizio.
(Facoltativo) Nel campo Descrizione account di servizio, inserisci una descrizione.
Fai clic su Crea.
Fai clic sul campo Seleziona un ruolo. In Tutti i ruoli, seleziona un ruolo Cloud Storage appropriato in base alle autorizzazioni che vuoi concedere all'account di servizio.
Fai clic su Fine.
gcloud
Puoi eseguire i seguenti comandi utilizzando Google Cloud CLI sulla tua macchina locale o in Cloud Shell.
Crea il service account. Sostituisci NAME con un nome per l'account di servizio.
gcloud iam service-accounts create NAME
Concedi un ruolo all'account di servizio. Sostituisci PROJECT_ID con il tuo ID progetto e ROLE con il ruolo Cloud Storage appropriato per l'account di servizio. Questo ruolo si applica a tutti i repository del progetto. Puoi modificare il ruolo in un secondo momento e assegnare anche ruoli diversi all'account di servizio in repository specifici.
gcloud projects add-iam-policy-binding PROJECT_ID --member "serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role "roles/ROLE"
Ottieni una chiave per l'account di servizio che interagirà con Container Registry.
Console
Nella console Google Cloud, vai alla pagina Account di servizio.
Fai clic sull'indirizzo email dell'account di servizio che vuoi utilizzare.
Fai clic su Chiavi.
Fai clic su Aggiungi chiave, quindi su Crea nuova chiave.
Fai clic su Crea. Un file JSON contenente la chiave viene scaricato sul computer.
Le istruzioni in questa pagina utilizzano il nome file
keyfile.json
per questo file della chiave.Fai clic su Chiudi.
gcloud
Puoi eseguire il seguente comando utilizzando Google Cloud CLI sulla tua macchina locale o in Cloud Shell.
Le istruzioni in questa pagina utilizzano il nome file
keyfile.json
per il file della chiave.gcloud iam service-accounts keys create keyfile.json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
Esegui il seguente comando per accedere all'interfaccia a Google Cloud CLI come account di servizio.
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
Dove
- ACCOUNT è il nome dell'account di servizio nel formato
[USERNAME]@[PROJECT-ID].iam.gserviceaccount.com
. - KEY-FILE è il file della chiave dell'account di servizio. Per informazioni sulla creazione di una chiave, consulta la documentazione di IAM.
- ACCOUNT è il nome dell'account di servizio nel formato
Verifica che le autorizzazioni siano configurate correttamente per l'account di servizio. Se utilizzi l'account di servizio Compute Engine, devi configurare correttamente sia le autorizzazioni sia gli ambiti di accesso.
Ottieni un token di accesso per l'account di servizio. Poiché il token è di breve durata, richiedilo meno di un'ora prima di utilizzarlo per connetterti a Container Registry.
Esegui questo comando:
Linux
gcloud auth print-access-token | docker login -u oauth2accesstoken \ --password-stdin https://HOSTNAME
Windows
gcloud auth print-access-token | docker login -u oauth2accesstoken --password-stdin https://HOSTNAME
dove HOSTNAME è
gcr.io
,us.gcr.io
,eu.gcr.io
oasia.gcr.io
.
Docker è ora autenticato con Container Registry.
File di chiavi JSON
Una chiave dell'account di servizio è una coppia di chiavi a lungo termine che puoi utilizzare come credenziale per un account di servizio. A differenza del token di accesso OAuth, una chiave dell'account di servizio non scade.
Chiunque abbia accesso a una chiave privata valida per un account di servizio potrà accedere alle risorse tramite l'account di servizio. Ad esempio, ad alcuni account di servizio creati automaticamente da Google Cloud, come l'account di servizio Container Registry, viene concesso il ruolo di scrittura/lettura Editor
per il progetto principale. L'account di servizio predefinito Compute Engine è configurato con accesso di sola lettura allo spazio di archiviazione all'interno dello stesso progetto.
Inoltre, il ciclo di vita dell'accesso della chiave all'account di servizio (e quindi ai dati a cui ha accesso l'account di servizio) è indipendente dal ciclo di vita dell'utente che ha scaricato la chiave.
Utilizza le seguenti linee guida per limitare l'accesso alle immagini dei contenitori:
- Crea account di servizio dedicati che vengono utilizzati solo per interagire con Container Registry.
- Concedi il ruolo specifico per il minor accesso richiesto dall'account di servizio.
- Segui le best practice per la gestione delle credenziali.
Per creare un nuovo account di servizio e una chiave di account di servizio da utilizzare solo con i repository Container Registry:
Crea un nuovo account di servizio che interagirà con Container Registry.
Console
Nella console Google Cloud, vai alla pagina Crea account di servizio.
Seleziona il progetto che vuoi utilizzare.
Inserisci un nome nel campo Nome account di servizio.
(Facoltativo) Nel campo Descrizione account di servizio, inserisci una descrizione.
Fai clic su Crea.
Fai clic sul campo Seleziona un ruolo. In Tutti i ruoli, seleziona un ruolo Cloud Storage appropriato per l'account di servizio.
Fai clic su Fine.
gcloud
Puoi eseguire i seguenti comandi utilizzando Google Cloud CLI sulla tua macchina locale o in Cloud Shell.
Crea il service account. Sostituisci NAME con un nome per l'account di servizio.
gcloud iam service-accounts create NAME
Concedi un ruolo all'account di servizio. Sostituisci PROJECT_ID con il tuo ID progetto e ROLE con il ruolo Cloud Storage appropriato per l'account di servizio.
gcloud projects add-iam-policy-binding PROJECT_ID --member "serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role "roles/ROLE"
Ottieni una chiave per l'account di servizio che interagirà con Container Registry.
Console
Nella console Google Cloud, vai alla pagina Account di servizio.
Fai clic sull'indirizzo email dell'account di servizio che vuoi utilizzare.
Fai clic su Chiavi.
Fai clic su Aggiungi chiave, quindi su Crea nuova chiave.
Fai clic su Crea. Un file JSON contenente la chiave viene scaricato sul computer.
Le istruzioni in questa pagina utilizzano il nome file
keyfile.json
per questo file della chiave.Fai clic su Chiudi.
gcloud
Puoi eseguire il seguente comando utilizzando Google Cloud CLI sulla tua macchina locale o in Cloud Shell.
Le istruzioni in questa pagina utilizzano il nome file
keyfile.json
per il file della chiave.gcloud iam service-accounts keys create keyfile.json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
Verifica che le autorizzazioni siano configurate correttamente per l'account di servizio. Se utilizzi l'account di servizio Compute Engine, devi configurare correttamente sia le autorizzazioni sia gli ambiti di accesso.
Utilizza la chiave dell'account di servizio come password per autenticarti con Docker.
Linux / macOS
cat KEY-FILE | docker login -u _json_key --password-stdin \ https://HOSTNAME
Windows
Get-Content KEY-FILE | docker login -u _json_key --password-stdin https://HOSTNAME
Sostituisci quanto segue:
- KEY-FILE è il nome del file della chiave dell'account di servizio in formato JSON.
- HOSTNAME è
gcr.io
,us.gcr.io
,eu.gcr.io
oasia.gcr.io
.
Docker è ora autenticato con Container Registry.