Configura l'autenticazione per Go

L'autenticazione ad Artifact Registry è diversa per il caricamento dei moduli Go pacchettizzati. Durante la pacchettizzazione e il caricamento di un modulo Go Artifact Registry, lo strumento gcloud CLI cerca le credenziali dell'ambiente di configurazione per impostare l'autenticazione nel seguente ordine, a meno che --json_key viene passato 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 in GOOGLE_APPLICATION_CREDENTIALS variabile di ambiente.

    2. Le credenziali dell'account di servizio predefinito per Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine o Cloud Functions fornisce.

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

La variabile GOOGLE_APPLICATION_CREDENTIALS rende l'account autenticazione esplicita, che semplifica la risoluzione dei problemi. Se non utilizzi la variabile, verifica che tutti gli account che ADC potrebbe utilizzare abbiano le autorizzazioni richieste. Ad esempio, account di servizio predefinito per VM di Compute Engine, nodi Google Kubernetes Engine e le revisioni di Cloud Run hanno accesso di sola lettura ai repository. Se vuoi caricare contenuti da questi ambienti usando l'account di servizio predefinito, devi modificare le autorizzazioni.

Durante il download di moduli Go pacchettizzati da utilizzare come dipendenze Artifact Registry, il programma binario Go utilizza le credenziali del file netrc per l'autenticazione in Artifact Registry. Per semplificare l'autenticazione, puoi utilizzare l'assistente per le credenziali Go per aggiornare i token netrc per l'autenticazione in Artifact Registry.

La posizione del file netrc può essere impostata con la variabile di ambiente netrc. Se la variabile NETRC non è impostata, il comando go leggerà $HOME/.netrc su piattaforme simili a UNIX o %USERPROFILE%\_netrc su Windows.

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

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

Prima di iniziare

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

    gcloud components install package-go-module

configura l'ambiente Go

  1. Indica a Go per scaricare i moduli da Artifact Registry, il programma pubblico Go modulo proxy e quindi l'origine in questo ordine:

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

    Sostituisci quanto segue:

    • LOCATION indica una o più regioni località del repository.
    • PROJECT è il tuo account Google Cloud ID progetto.
    • REPOSITORY è il nome del repository in cui quando viene archiviato un pacchetto.
  2. Escludi il modulo dal controllo utilizzando il database di checksum pubblico:

      export GONOSUMDB=MODULE_PATH_REGEX
    

    Sostituisci MODULE_PATH_REGEX con il percorso del modulo o con una normale se vuoi escludere più moduli.

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

      export GONOSUMDB=example.com/foo
    

    Il comando seguente esclude tutti i moduli i cui percorsi dei moduli iniziano in Controllo di example.com mediante il database pubblico di checksum:

      export GONOSUMDB=example.com/*
    

Aggiungi le credenziali Artifact Registry al file netrc

  1. Esegui questo comando per aggiungere le tue credenziali Artifact Registry al tuo netrc con l'helper delle 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 indica una o più regioni località del tuo repository. Per aggiungere più località, inseriscile come virgole elenco separato.
    • PATH_TO_JSON_KEY Facoltativa. Il percorso dell'account di servizio chiave.

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

  2. Se utilizzi credenziali di breve durata per l'autenticazione ad Artifact Registry, devi 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. Usa le linee guida seguenti per limitare l'accesso ai tuoi repository:

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

Per configurare l'autenticazione:

  1. Creare un servizio di agire per conto della tua applicazione o di scegliere un servizio esistente l'account di servizio che usi per l'automazione.

    Devi specificare la posizione del file della chiave dell'account di servizio da configurare l'autenticazione con Artifact Registry. Nel caso di account esistenti, puoi visualizzare le chiavi e crearne di nuove nella pagina Account di servizio.

    Vai alla pagina Account di servizio

  2. Concedi la licenza appropriata Artifact Registry per l'account di servizio per fornire il repository l'accesso.

  3. Esegui questo comando per aggiungere le credenziali dell'account di servizio netrc con l'helper delle 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 indica una o più regioni località del tuo repository. Per aggiungere più località, inseriscile come virgole elenco separato.
    • PATH_TO_JSON_KEY è il percorso del file JSON dell'account di servizio file della chiave.

      L'assistente per le credenziali di Go aggiunge la chiave dell'account di servizio alla tua rete 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 una o più regioni località del tuo repository.
  • KEY con la chiave con codifica base64 nel file della chiave dell'account di servizio.

Aggiungi l'assistente per le credenziali Go a GONOPROXY

Prima di utilizzare l'assistente per le credenziali di Go, devi aggiungerlo all'elenco GONOPROXY per forzare Go a scaricarlo direttamente da GitHub. Se sono presenti altri moduli se vuoi scaricarli direttamente dall'origine, puoi aggiungerli separati da virgole come mostrato nell'esempio seguente:

  export GONOPROXY=MODULE_PATH1, MODULE_PATH2

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

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

  1. Aggiungi l'assistente 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 netrc con lo strumento del pacchetto del modulo 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 indica una o più regioni località del tuo repository. Per aggiungere più località, inseriscile come elenco separato da virgole.

    L'assistente per le credenziali di Go aggiunge impostazioni al tuo file netrc per l'autenticazione in Artifact Registry. Se passi il flag --json_key a cui la chiave viene aggiunta il file netrc per l'autenticazione della password.

Passaggi successivi