Configura l'autenticazione per Go

L'autenticazione in Artifact Registry è diversa per il caricamento e il download di moduli Go in pacchetti. Durante la pacchettizzazione e il caricamento di un modulo Go in Artifact Registry, lo strumento gcloud CLI cerca le credenziali nel tuo ambiente per configurare l'autenticazione nel seguente ordine, a meno che non venga passato il flag --json_key per utilizzare una chiave dell'account di servizio.

  1. Credenziali predefinite dell'applicazione (ADC), una strategia che cerca le credenziali nel seguente ordine:

    1. Credenziali definite nella variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS.

    2. Credenziali fornite dall'account di servizio predefinito per Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine o Cloud Functions.

  2. Credenziali fornite da Google Cloud CLI, incluse le credenziali utente del comando gcloud auth application-default login.

La variabile GOOGLE_APPLICATION_CREDENTIALS rende esplicita l'account per l'autenticazione, il che semplifica la risoluzione dei problemi. Se non utilizzi la variabile, verifica che tutti gli account che potrebbero essere utilizzati da ADC dispongano delle autorizzazioni richieste. Ad esempio, l'account di servizio predefinito per le VM di Compute Engine, i nodi Google Kubernetes Engine e le revisioni di Cloud Run ha accesso di sola lettura ai repository. Se intendi caricare da questi ambienti utilizzando l'account di servizio predefinito, devi modificare le autorizzazioni.

Durante il download di moduli Go in pacchetto da utilizzare come dipendenze da Artifact Registry, il programma binario Go utilizza le credenziali nel tuo file .netrc per l'autenticazione in Artifact Registry.

Artifact Registry supporta i seguenti metodi di autenticazione quando utilizzi le credenziali nel file .netrc:

Credenziali di breve durata (consigliate)
Utilizza lo strumento di supporto delle credenziali Go di Artifact Registry per aggiornare i token di autenticazione nel file .netrc utilizzando le credenziali nel tuo ambiente oppure aggiungi manualmente le credenziali di Artifact Registry al file .netrc.
Usa una chiave dell'account di servizio
Utilizza questa opzione quando non puoi usare le credenziali nel tuo ambiente per l'autenticazione. Puoi utilizzare lo strumento di supporto delle credenziali Go di Artifact Registry per aggiungere la chiave dell'account di servizio non criptata al file .netrc o aggiungerla manualmente al file.

Prima di iniziare

  1. Installa Go 1.15 o versioni successive.
  2. Installa il componente aggiuntivo gcloud CLI package-go-module:

    gcloud components install package-go-module

Configurare l'ambiente Go

  1. Indica a Vai di scaricare i moduli da Artifact Registry, dal proxy del modulo Go pubblico, quindi crea l'origine in questo ordine:

      export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
    

    Sostituisci quanto segue:

    • LOCATION è la località a una o più regioni del repository.
    • PROJECT è il tuo ID progetto Google Cloud.
    • REPOSITORY è il nome del repository in cui è archiviato il pacchetto.
  2. Escludi il modulo dal database di checksum pubblico:

      export GONOSUMDB=MODULE_PATH_REGEX
    

    Sostituisci MODULE_PATH_REGEX con il percorso del modulo o con un'espressione regolare se vuoi escludere più moduli.

    Ad esempio, per escludere il modulo example.com/foo dal controllo utilizzando il database di checksum pubblico, esegui questo comando:

      export GONOSUMDB=example.com/foo
    

    Il seguente comando esclude tutti i moduli con percorsi di modulo che iniziano con example.com dal controllo tramite il database di checksum pubblico:

      export GONOSUMDB=example.com/*
    

Aggiungi le credenziali di Artifact Registry al tuo file .netrc

  1. Esegui questo comando per aggiungere le tue credenziali Artifact Registry al file .netrc con l'helper per le credenziali Go:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          --json_key=PATH_TO_JSON_KEY
    

    Dove:

    • LOCATION è la località a una o più regioni del tuo repository. Per aggiungere più località, inseriscile come elenco separato da virgole.
    • PATH_TO_JSON_KEY Facoltativa. Percorso della chiave dell'account di servizio.

      L'helper per le credenziali Go aggiunge impostazioni al file .netrc per l'autenticazione in Artifact Registry. Se passi il flag --json_key, la chiave viene aggiunta al file .netrc per l'autenticazione tramite password.

  2. Se utilizzi credenziali di breve durata per l'autenticazione su Artifact Registry, dovrai aggiornare il token OAuth eseguendo il comando seguente prima di utilizzare il modulo come dipendenza:

      GOPROXY=proxy.golang.org \
      go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
    

Autenticazione con una chiave dell'account di servizio

Utilizza questo approccio quando richiedi l'autenticazione con nome utente e password.

Le chiavi dell'account di servizio sono credenziali di lunga durata. Segui queste linee guida per limitare l'accesso ai repository:

  • Valuta la possibilità di utilizzare un account di servizio dedicato per interagire con i repository.
  • Concedi il ruolo Artifact Registry minimo richiesto dall'account di servizio. Ad esempio, assegna Lettore Artifact Registry a un account di servizio che scarica solo artefatti.
  • Se i gruppi della tua organizzazione richiedono livelli di accesso diversi a repository specifici, concedi l'accesso a livello di repository anziché a livello di progetto.
  • Segui le best practice per la gestione delle credenziali.

Per configurare l'autenticazione:

  1. Crea un account di servizio che agisca per conto della tua applicazione oppure scegli un account di servizio esistente che utilizzi per l'automazione.

    Avrai bisogno della posizione del file della chiave dell'account di servizio per configurare l'autenticazione con Artifact Registry. Per gli account esistenti, puoi visualizzare le chiavi e crearne di nuove nella pagina Account di servizio.

    Vai alla pagina Account di servizio

  2. Concedi all'account di servizio il ruolo Artifact Registry appropriato per fornire l'accesso al repository.

  3. Esegui questo comando per aggiungere le credenziali dell'account di servizio al file .netrc con l'helper per le credenziali Go:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          --json_key=PATH_TO_JSON_KEY
    

    Dove:

    • LOCATION è la località a una o più regioni del tuo repository. Per aggiungere più località, inseriscile come elenco separato da virgole.
    • PATH_TO_JSON_KEY è il percorso del file di chiave JSON dell'account di servizio.

      L'helper per le credenziali Go aggiunge la chiave dell'account di servizio al file .netrc per l'autenticazione tramite password.

È anche possibile aggiungere manualmente la chiave dell'account di servizio al file .netrc nel seguente formato:

machine LOCATION.pkg.dev
login json_key_base64
password KEY

Sostituisci quanto segue:

  • LOCATION con la località a livello di una o più regioni del tuo repository.
  • KEY con la chiave con codifica Base64 nel file delle chiavi dell'account di servizio.

Aggiungi l'helper per le credenziali Go a GONOPROXY

Prima di utilizzare l'helper per le credenziali Go, devi aggiungerlo all'elenco GONOPROXY per forzare il download con Vai direttamente da GitHub. Se ci sono altri moduli che vuoi scaricare direttamente dall'origine, puoi aggiungerli in un elenco separato da virgole come mostrato nell'esempio seguente:

  export GONOPROXY=MODULE_PATH1, MODULE_PATH2

Dove MODULE_PATH1 e MODULE_PATH2 sono i percorsi dei moduli da scaricare dall'origine.

Per aggiungere l'helper per le credenziali Go al tuo elenco GONOPROXY ed eseguirlo per configurare le tue credenziali:

  1. Aggiungi l'helper per le credenziali Go a GONOPROXY

      export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
    
  2. Esegui questo comando per aggiungere le tue credenziali Artifact Registry al tuo file .netrc con lo strumento per i pacchetti di moduli Go:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          [--json_key=path/to/service/account/key.json]
    

    Dove LOCATION è la località a una o più regioni del tuo repository. Per aggiungere più località, inseriscile come elenco separato da virgole.

    L'helper per le credenziali Go aggiunge impostazioni al file .netrc per l'autenticazione in Artifact Registry. Se passi il flag --json_key, la chiave viene aggiunta al file .netrc per l'autenticazione tramite password.

Passaggi successivi