Devi autenticarti in Artifact Registry quando utilizzi un'applicazione di terze parti per connetterti a un repository.
Non è necessario configurare l'autenticazione per Cloud Build o Google Cloud gli ambienti di runtime come Google Kubernetes Engine e Cloud Run, ma devi verificare che le autorizzazioni richieste siano configurate.
Prima di iniziare
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- (Facoltativo) Configura i valori predefiniti per i comandi gcloud CLI.
- Se ti connetti ai repository da Windows, installa PowerShell.
- Crea un account di servizio che agisca per conto della tua applicazione.
- Se non hai mai utilizzato npm, leggi la panoramica per saperne di più sui pacchetti con ambito e sul file di configurazione per le impostazioni di autenticazione.
Panoramica
Artifact Registry supporta i seguenti metodi di autenticazione.
- Utilizzare un helper per le credenziali
- Questa opzione offre la massima flessibilità. Quando includi l'helper nella configurazione npm, Artifact Registry cerca le credenziali dell'account di servizio nell'ambiente.
- Specifica una chiave dell'account di servizio come credenziale
- Utilizza questa opzione quando un'applicazione non supporta le credenziali predefinite dell'applicazione, ma supporta l'autenticazione con un nome utente e una password.
Autenticazione con un helper per le credenziali
google-artifactregistry-auth è una libreria client che ottiene le credenziali per i repository Artifact Registry.
Artifact Registry cerca le credenziali nel seguente ordine:
Credenziali predefinite dell'applicazione (ADC), una strategia che cerca le credenziali nel seguente ordine:
Credenziali definite nella variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
.Credenziali fornite dall'account di servizio predefinito per Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine o Cloud Functions.
Le credenziali fornite da Google Cloud CLI, incluse le credenziali utente del comando
gcloud auth application-default login
.
La variabile GOOGLE_APPLICATION_CREDENTIALS
rende esplicito l'account per l'autenticazione, semplificando la risoluzione dei problemi. Se
non utilizzi la variabile, verifica che gli account che potrebbero essere utilizzati dall'ADC dispongano delle
autorizzazioni richieste. Ad esempio, l'account di servizio predefinito per le VM Compute Engine, i nodi Google Kubernetes Engine e le revisioni Cloud Run ha accesso in sola lettura ai repository. Se intendi eseguire il caricamento da questi ambienti utilizzando l'account di servizio predefinito, devi modificare le autorizzazioni.
Per creare un account di servizio e impostare la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS
:
Crea un account di servizio per agire per conto della tua applicazione oppure scegli un account di servizio esistente da utilizzare per l'automazione CI/CD.
Concedi il ruolo Artifact Registry specifico all'account di servizio per fornire l'accesso al repository.
Assegna il percorso del file della chiave dell'account di servizio alla variabile
GOOGLE_APPLICATION_CREDENTIALS
in modo che l'helper per le credenziali di Artifact Registry possa ottenere la chiave quando si connette ai repository.export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
dove KEY-FILE è il percorso del file della chiave dell'account di servizio.
Per configurare l'autenticazione:
Esegui il comando seguente per stampare la configurazione del repository:
gcloud artifacts print-settings npm [--project=PROJECT] \ [--repository=REPOSITORY] \ [--location=LOCATION] \ --scope=@SCOPE-NAME \
Dove
- PROJECT è l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.
- REPOSITORY è l'ID del repository. Se hai configurato un repository Artifact Registry predefinito, viene utilizzato quando questo flag viene omesso dal comando.
- LOCATION è la posizione regionale o multiregionale del repository.
SCOPE-NAME è il nome dello scopo npm da associare al repository.
L'utilizzo degli ambiti ti consente di pubblicare e installare sempre i pacchetti dal repository corretto.
I pacchetti senza ambito sono associati al registry npm predefinito, in genere il registry pubblico npm. Se non specifichi un ambito, la configurazione restituita imposta il repository Artifact Registry come registry predefinito. Ciò può causare problemi se i progetti Node.js devono installare pacchetti sia dal registry npm pubblico sia dal repository Artifact Registry.
Aggiungi le impostazioni di configurazione restituite al file di configurazione .npmrc nei tuoi progetti Node.js. Di solito questo file si trova nella stessa directory di
package.json
.Assicurati di includere queste impostazioni nei progetti Node.js per i pacchetti che pubblichi, nonché nei progetti che installeranno le dipendenze dal tuo repository npm.
Se hai altri repository Node.js a cui connetterti, ripeti i passaggi precedenti per ottenere le impostazioni e aggiungerle ai file
.npmrc
appropriati.Quando è tutto pronto per collegare un repository, ottieni un token di accesso per l'autenticazione.
Ogni repository di pacchetti Node.js di Artifact Registry è associato a un
endpoint del registry https://LOCATION-npm.pkg.dev/PROJECT/REPOSITORY
Se non hai specificato un ambito con il comando print-settings
, puoi eseguire il seguente comando per associare un ambito a un repository Artifact Registry.
npm config set @SCOPE_NAME:registry https://LOCATION-npm.pkg.dev/PROJECT/REPOSITORY/
Ottenere un token di accesso
I token di accesso sono validi per 60 minuti. Genera un token di accesso poco prima di eseguire comandi che interagiscono con i repository.
Per ottenere un token, utilizza una delle seguenti opzioni:
Utilizza il comando
npx
per aggiornare il token di accesso.Assicurati che le credenziali per la connessione al registry npm pubblico siano nel file di configurazione npm dell'utente,
~/.npmrc
.Esegui il seguente comando nella directory del progetto Node.js.
npx google-artifactregistry-auth
Se il repository Artifact Registry è impostato come registry globale e i pacchetti non sono definiti, utilizza il seguente comando in modo che possa scaricare l'helper delle credenziali dal registry npm pubblico anziché dal repository Artifact Registry.
npm_config_registry=https://registry.npmjs.org npx google-artifactregistry-auth
Aggiungi uno script al file
package.json
del progetto."scripts": { "artifactregistry-login": "npx google-artifactregistry-auth" }
Esegui lo script nella directory del progetto Node.js.
npm run artifactregistry-login
Artifact Registry legge le impostazioni del repository di Artifact Registry nel
file .npmrc
del progetto e le utilizza per aggiungere le credenziali del token al
file .npmrc
dell'utente. La memorizzazione del token nel file .npmrc
dell'utente isola le tue credenziali dal codice sorgente e dal sistema di controllo del codice sorgente.
--repo-config
è il file.npmrc
con le impostazioni del repository. Se non specifichi questo flag, la posizione predefinita è la directory corrente.--credential-config
è il percorso del file.npmrc
in cui vuoi scrivere il token di accesso. Il valore predefinito è il file.npmrc
dell'utente.
Configurazione dell'autenticazione tramite password
Utilizza questo approccio quando l'applicazione Node.js richiede l'autenticazione con un nome utente e una password specificati.
Le chiavi dell'account di servizio sono credenziali a lungo termine. Utilizza le seguenti linee guida 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 Artifact Registry minimo richiesto dall'account di servizio. Ad esempio, assegna il ruolo Artifact Registry Reader a un account di servizio che scarica solo gli elementi.
- 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 creare un account di servizio e configurare l'autenticazione:
Crea un account di servizio per agire per conto della tua applicazione o scegli un account di servizio esistente che utilizzi per l'automazione.
Per configurare l'autenticazione con Artifact Registry, devi conoscere la posizione del file della chiave dell'account di servizio. Per gli account esistenti, puoi visualizzare le chiavi e crearne di nuove nella pagina Account di servizio.
Concedi il ruolo Artifact Registry specifico all'account di servizio per fornire l'accesso al repository.
Se vuoi attivare l'account di servizio nella sessione CLI gcloud corrente, esegui il comando:
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
Dove
- ACCOUNT è l'account utente o di servizio.
- KEY-FILE è il percorso del file della chiave JSON dell'account di servizio.
Esegui il comando seguente per stampare la configurazione del repository:
gcloud artifacts print-settings npm [--project=PROJECT] \ [--repository=REPOSITORY] [--location=LOCATION] --scope=@SCOPE-NAME --json-key=KEY-FILE
Dove
- PROJECT è l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.
- REPOSITORY è l'ID del repository. Se hai configurato un repository Artifact Registry predefinito, viene utilizzato quando questo flag viene omesso dal comando.
- LOCATION è la posizione regionale o multiregionale del repository.
SCOPE-NAME è il nome dello scopo npm da associare al repository.
L'utilizzo degli ambiti ti consente di pubblicare e installare sempre i pacchetti dal repository corretto.
I pacchetti senza ambito sono associati al registry npm predefinito, in genere il registry pubblico npm. Se non specifichi un ambito, la configurazione restituita imposta il repository Artifact Registry come registry predefinito. Ciò può causare problemi se i progetti Node.js devono installare pacchetti sia dal registry npm pubblico sia dal repository Artifact Registry.
KEY-FILE è il percorso del file della chiave JSON dell'account di servizio.
Aggiungi le impostazioni di configurazione restituite al file di configurazione .npmrc nei tuoi progetti Node.js. Di solito questo file si trova nella stessa directory di
package.json
. Assicurati di includere queste impostazioni nei progetti Node.js per i pacchetti che pubblichi, nonché nei progetti che installeranno le dipendenze dal tuo repository npm.Se hai altri repository Node.js a cui connetterti, ripeti i passaggi precedenti per ottenere le impostazioni e aggiungerle al file
.npmrc
.
Passaggi successivi
- Configurare l'accesso ai repository
- Scopri di più sulla gestione dei repository
- Scopri di più sulla gestione dei pacchetti