Metodi di autenticazione

Questa pagina descrive come configurare un client di terze parti per l'autenticazione con Container Registry.

I servizi Google Cloud che si integrano con Container Registry sono preconfigurati con autorizzazioni per accedere ai repository all'interno dello stesso progetto. Non è necessario configurare l'autenticazione per questi ma devi verificare che le autorizzazioni siano configurato in modo appropriato.

Prima di iniziare

  1. Verifica di aver abilitato l'API Container Registry e di aver installato con gcloud CLI. Vedi Attivazione e disattivazione del servizio per istruzioni.
  2. Verifica che l'account che utilizzi per l'autenticazione sia autorizzazioni per accedere a Container Registry. I nostri suggerimenti Utilizzi un account di servizio invece che un utente .

  3. Installa Docker, se non è già installato. Docker è incluso in Cloud Shell.

  4. Docker richiede un accesso privilegiato per interagire con i registri. Su Linux o Windows, aggiungi l'utente che utilizzi per eseguire i comandi Docker su gruppo di sicurezza Docker. Questo passaggio non è necessario su macOS dal giorno 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 questo 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 questo comando :

    net localgroup docker-users DOMAIN\USERNAME /add
    

    Dove

    • DOMAIN è il tuo dominio Windows.
    • USERNAME è il tuo nome utente.

    Esci e accedi nuovamente per rendere effettive le modifiche di appartenenza al gruppo. Se utilizzi una macchina virtuale, potrebbe essere necessario riavviare computer per l'applicazione delle modifiche all'appartenenza.

Metodi di autenticazione

Devi configurare tutti i client di terze parti che devono accedere a Container Registry.

Sono disponibili i seguenti metodi di autenticazione:

Assistente delle credenziali gcloud (consigliato)
Configura le credenziali di Container Registry da utilizzare con Docker direttamente in gcloud. Se possibile, utilizza questo metodo per un accesso sicuro e di breve durata alle risorse del tuo progetto. Questa opzione supporta solo Docker 18.03 o versioni successive.
Assistente per le credenziali autonomo
Questa opzione è principalmente per configurare le credenziali da utilizzare con Docker in assenza di Google Cloud CLI. Questa opzione supporta solo le versioni Docker 18.03 o versioni successive.
Token di accesso
Credenziali predefinite dell'applicazione fornire token di accesso di breve durata che per accedere alle tue risorse Google Cloud. È la più sicura tra le alternative all'utilizzo di gcloud come assistente per le credenziali.
File di chiave JSON

Una coppia di chiavi gestita dall'utente che puoi utilizzare come credenziale per un l'account di servizio. Poiché la credenziale ha una lunga durata, è la meno sicura di tutti i metodi di autenticazione disponibili.

Se possibile, utilizza un token di accesso o un altro metodo di autenticazione disponibile per ridurre il rischio l'accesso agli artefatti. Se non vengono gestite correttamente, le chiavi degli account di servizio comportano un rischio per la sicurezza. Dovresti Scegliere un'alternativa più sicura alle chiavi degli account di servizio ove possibile. Se devi autenticarti con una chiave dell'account di servizio, sei responsabile della chiave privata e per le altre operazioni descritte Best practice per la gestione delle chiavi degli account di servizio. Se ti viene impedito di creare una chiave dell'account di servizio, è possibile che questa disattivato per la tua organizzazione. Per ulteriori informazioni, vedi Gestione delle risorse dell'organizzazione sicure per impostazione predefinita.

Alcuni strumenti o flussi di lavoro non offrono un valido supporto per l'utilizzo di gcloud come un assistente per le credenziali. Se utilizzi una delle opzioni alternative, assicurati di comprendere le implicazioni per la sicurezza.

Impostazioni di autenticazione nel file di configurazione 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 distinte per i diversi metodi di autenticazione:

credHelpers
Se utilizzi l'assistente per le credenziali Docker per l'autenticazione Container Registry archivia le impostazioni di supporto delle credenziali credHelpers del file.
auths
Se usi Docker per accedere con un token o una chiave dell'account di servizio come , Docker archivia le credenziali nella sezione auths del file.
credStore
Se hai configurato un credential store per gestire le credenziali, le impostazioni dell'archivio credenziali sono nella sezione credStore del file.

Quando Docker si connette a un registro, verifica prima la presenza di un assistente per le credenziali associato all'host. Pertanto, se config.json include impostazioni di Container Registry nelle sezioni credHelpers e auths; le impostazioni nella sezione auths vengono ignorate.

assistente credenziali gcloud

Ti consigliamo vivamente di utilizzare questo metodo, se possibile. Offre un accesso sicuro e di breve durata alle risorse del tuo progetto.

Utilizza gcloud CLI per configurare l'autenticazione in Cloud Shell o in qualsiasi in cui è installata Google Cloud CLI. Cloud Shell include una versione attuale di Docker.

Per configurare l'autenticazione:

  1. Accedi a gcloud come utente che eseguirà i comandi Docker.

    • Per configurare l'autenticazione con credenziali utente, esegui questo comando :

      gcloud auth login
      
    • Per configurare l'autenticazione con le credenziali dell'account di servizio, esegui seguente 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 i dati esistenti in Account di servizio pagina della console Google Cloud o con il comando gcloud iam service-accounts list
      • KEY-FILE è il file delle chiavi dell'account di servizio. Consulta le Documentazione di Identity and Access Management (IAM) per informazioni sulla creazione di una chiave.
  2. Configura Docker con il seguente comando:

    gcloud auth configure-docker
    

    Le tue credenziali vengono salvate nella home directory dell'utente.

    • Linux: $HOME/.docker/config.json
    • Windows: %USERPROFILE%/.docker/config.json

Assistente per le credenziali autonomo

L'helper delle credenziali Docker standalone configura Docker per l'autenticazione in Container Registry su un sistema in cui gcloud CLI non è disponibile.

L'assistente per le credenziali recupera le tue credenziali di Container Registry: automaticamente o da una posizione specificata utilizzando --token-source e li scrive nel file di configurazione di Docker. In questo modo puoi utilizzare strumento a riga di comando di Docker, docker, per interagire direttamente e Container Registry.

Per configurare l'autenticazione:

  1. Accedi alla macchina come utente che eseguirà i comandi Docker.

  2. Scarica docker-credential-gcr da Release di GitHub:

    Se necessario, 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/
    
  3. Configura Docker con il seguente comando:

    docker-credential-gcr configure-docker
    

    Le tue credenziali vengono salvate nella home directory dell'utente.

    • Linux: $HOME/.docker/config.json
    • Windows: %USERPROFILE%/.docker/config.json

Per maggiori informazioni, consulta la documentazione di supporto per le credenziali Docker standalone su GitHub.

Docker è ora configurato per l'autenticazione con Container Registry. Per eseguire il push e estrarre immagini, assicurati che le autorizzazioni siano configurate correttamente.

Token di accesso

Puoi generare un token di accesso OAuth di breve durata per l'autenticazione e Container Registry. Poiché il token è valido per 60 minuti, dovresti richiederlo meno di un'ora prima di utilizzarlo per connetterti e Container Registry.

  1. Creare un nuovo account di servizio che interagisca con Container Registry.

    Console

    1. Nella console Google Cloud, vai alla pagina Crea account di servizio.

      Vai alla pagina Crea account di servizio

    2. Seleziona il progetto che vuoi utilizzare.

    3. Inserisci un nome nel campo Nome account di servizio.

    4. (Facoltativo) Nel campo Descrizione account di servizio, inserisci una o l'audiodescrizione.

    5. Fai clic su Crea.

    6. Fai clic sul campo Seleziona un ruolo. In Tutti i ruoli, seleziona un'opzione appropriata Ruolo Cloud Storage in base alle autorizzazioni che vuoi concedere all'account di servizio.

    7. Fai clic su Fine.

    gcloud

    Puoi eseguire i comandi seguenti utilizzando Google Cloud CLI sulla tua macchina locale, o in Cloud Shell.

    1. Crea il service account. Sostituisci NAME con un nome per l'account di servizio.

      gcloud iam service-accounts create NAME
      
    2. Concedi un ruolo all'account di servizio. Sostituisci PROJECT_ID con l'ID progetto e la ROLE con le informazioni Ruolo Cloud Storage per l'account di servizio. Questo ruolo viene applicato a tutti i repository all'interno del progetto. Puoi modificare il ruolo in un secondo momento e puoi anche concedere ruoli diversi all'account di servizio su repository specifici.

      gcloud projects add-iam-policy-binding PROJECT_ID --member "serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role "roles/ROLE"
      
  2. Ottieni una chiave per l'account di servizio con cui interagirà e Container Registry.

    Console

    1. Nella console Google Cloud, vai alla pagina Account di servizio.

      Vai alla pagina Account di servizio

    2. Fai clic sull'indirizzo email dell'account di servizio che vuoi utilizzare.

    3. Fai clic su Chiavi.

    4. Fai clic su Aggiungi chiave, quindi su Crea nuova chiave.

    5. Fai clic su Crea. Un file JSON contenente le chiavi scaricate in del tuo computer.

      Le istruzioni in questa pagina utilizzano il nome file keyfile.json per questo file di chiave.

    6. Fai clic su Chiudi.

    gcloud

    Puoi eseguire questo 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 la chiave .

    gcloud iam service-accounts keys create keyfile.json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
    
  3. Esegui questo comando per accedere a Google Cloud CLI come 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 delle chiavi dell'account di servizio. Consulta le Documentazione IAM per informazioni sulla creazione di una chiave.
  4. Verifica che le autorizzazioni siano corrette configurato per l'account di servizio. Se utilizzi Compute Engine, devi configurare correttamente sia le autorizzazioni che di accesso agli ambiti di accesso.

  5. Ottieni un token di accesso per l'account di servizio. Poiché il token è di breve durata, richiedila meno di un'ora prima di utilizzarla per connetterti e 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 o asia.gcr.io.

Docker è ora autenticato con Container Registry.

File di chiave JSON

Una chiave dell'account di servizio è una coppia di chiavi di lunga durata che puoi utilizzare come credenziale per un account di servizio. A differenza del token di accesso OAuth, una chiave dell'account di servizio non scadono.

Chiunque abbia accesso a una chiave privata valida per un account di servizio sarà in grado di per accedere alle risorse tramite l'account di servizio. Ad esempio, alcune di servizio creati automaticamente da Google Cloud, ad esempio all'account di servizio di Container Registry, dispongono della Ruolo Editor per l'elemento principale progetto. L'account di servizio predefinito di Compute Engine è configurato con allo spazio di archiviazione all'interno dello stesso progetto.

Inoltre, anche il ciclo di vita dell'accesso della chiave all'account di servizio Pertanto, i dati a cui ha accesso l'account di servizio sono indipendenti dal ciclo di vita dell'utente che ha scaricato la chiave.

Segui queste linee guida per limitare l'accesso alle immagini container:

  • Crea account di servizio dedicati che vengano utilizzati solo per interagire e Container Registry.
  • Concedi il ruolo specifico per il minor numero di accessi possibile richiesti dall'account di servizio.
  • Segui le best practice per la gestione delle credenziali.

Per creare un nuovo account di servizio e una chiave dell'account di servizio da utilizzare con Solo repository Container Registry:

  1. Creare un nuovo account di servizio che interagisca con Container Registry.

    Console

    1. Nella console Google Cloud, vai alla pagina Crea account di servizio.

      Vai alla pagina Crea account di servizio

    2. Seleziona il progetto che vuoi utilizzare.

    3. Inserisci un nome nel campo Nome account di servizio.

    4. (Facoltativo) Nel campo Descrizione account di servizio, inserisci una o l'audiodescrizione.

    5. Fai clic su Crea.

    6. Fai clic sul campo Seleziona un ruolo. In Tutti i ruoli, seleziona un'opzione appropriata Ruolo Cloud Storage per l'account di servizio.

    7. Fai clic su Fine.

    gcloud

    Puoi eseguire i comandi seguenti utilizzando Google Cloud CLI sulla tua macchina locale, o in Cloud Shell.

    1. Crea il service account. Sostituisci NAME con un nome per l'account di servizio.

      gcloud iam service-accounts create NAME
      
    2. Concedi un ruolo all'account di servizio. Sostituisci PROJECT_ID con l'ID progetto e la ROLE con le informazioni Ruolo Cloud Storage per l'account di servizio.

      gcloud projects add-iam-policy-binding PROJECT_ID --member "serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role "roles/ROLE"
      
  2. Ottieni una chiave per l'account di servizio con cui interagirà e Container Registry.

    Console

    1. Nella console Google Cloud, vai alla pagina Account di servizio.

      Vai alla pagina Account di servizio

    2. Fai clic sull'indirizzo email dell'account di servizio che vuoi utilizzare.

    3. Fai clic su Chiavi.

    4. Fai clic su Aggiungi chiave, quindi su Crea nuova chiave.

    5. Fai clic su Crea. Un file JSON contenente le chiavi scaricate in del tuo computer.

      Le istruzioni in questa pagina utilizzano il nome file keyfile.json per questo file di chiave.

    6. Fai clic su Chiudi.

    gcloud

    Puoi eseguire questo 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 la chiave .

    gcloud iam service-accounts keys create keyfile.json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
    
  3. Verifica che le autorizzazioni siano corrette configurato per l'account di servizio. Se utilizzi Compute Engine, devi configurare correttamente sia le autorizzazioni che di accesso agli ambiti di accesso.

  4. Utilizza la chiave dell'account di servizio come password per l'autenticazione 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 JSON.
    • HOSTNAME è gcr.io, us.gcr.io, eu.gcr.io o asia.gcr.io.

Docker è ora autenticato con Container Registry.