Configura l'autenticazione in Artifact Registry per npm

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 ambienti di runtime come Google Kubernetes Engine e Cloud Run, ma devi verificare che le autorizzazioni richieste siano configurate.

Node.js supporta due metodi per autenticare le richieste al repository Artifact Registry:

  • Token di accesso: utilizza i token di accesso quando l'autenticazione nella tua applicazione è gestita da un utente umano.
  • Autenticazione con password: utilizza questa opzione quando un'applicazione non supporta le credenziali predefinite dell'applicazione, ma supporta l'autenticazione con un nome utente e una password.

Prima di iniziare

  1. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:

    gcloud init

    Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  2. (Facoltativo) Configura le impostazioni predefinite per i comandi gcloud CLI.
  3. Se ti connetti ai repository da Windows, installa PowerShell.
  4. Crea un account di servizio che agisca per conto della tua applicazione.
  5. Se non hai familiarità con npm, leggi la panoramica per scoprire di più sui pacchetti con ambito e sul file di configurazione per le impostazioni di autenticazione.

Generare token per l'autenticazione

Per autenticare il pacchetto in Artifact Registry, devi prima generare un token di autenticazione. Puoi quindi utilizzare questo token quando effettui richieste dal pacchetto ad Artifact Registry.

Puoi generare un oauth2 token di accesso utilizzando Google Cloud o un oauth2l token al di fuori di Google Cloud.

I token di accesso sono validi per 60 minuti. Genera un token di accesso poco prima di eseguire i comandi che interagiscono con i repository. Se il token di accesso è scaduto, devi generarne uno nuovo.

Generare un token utilizzando gcloud

Per generare un oauth2 token di accesso utilizzando Google Cloud, esegui il seguente comando:

export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"

Ora puoi fare riferimento a ACCESS_TOKEN quando effettui richieste dal pacchetto Node.js ad Artifact Registry.

Generare un token senza utilizzare gcloud

Per generare un token di accesso utilizzando solo la CLI oauth2l:

  1. Installa l'ultima versione di oauth2l eseguendo il comando seguente:

    go install github.com/google/oauth2l@latest
    
  2. Esegui questo comando:

    export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"
    

    Google Cloud genera un token hash SHA256 e lo memorizza nella variabile ACCESS_TOKEN. Ora puoi fare riferimento a ACCESS_TOKEN quando effettui richieste dal pacchetto Node.js ad Artifact Registry.

Configurare l'autenticazione con password utilizzando le chiavi dei account di servizio

Utilizza questo approccio quando la tua applicazione Node.js richiede l'autenticazione con un nome utente e una password specificati.

Le chiavi dei service account sono credenziali a lunga durata. Utilizza le seguenti 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 dal account di servizio. Ad esempio, assegna il ruolo Lettore Artifact Registry a un account di servizio che scarica solo gli 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 creare un account di servizio e configurare l'autenticazione:

  1. Crea un service account che agisca per conto della tua applicazione o scegli un service account esistente che utilizzi per l'automazione.

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

    Vai alla pagina Service account

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

  3. Se vuoi attivare il account di servizio nella sessione gcloud CLI corrente, esegui il comando:

    gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
    

    Dove

    • ACCOUNT è l'utente o account di servizio.
    • KEY-FILE è il percorso del file della chiave JSON del account di servizio .
  4. 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, questo viene utilizzato quando questo flag viene omesso dal comando.
    • LOCATION è la località regionale o multiregionale location del repository.
    • SCOPE-NAME è il nome dell'ambito npm scope da associare al repository.

      L'utilizzo degli ambiti garantisce che tu pubblichi e installi sempre i pacchetti dal repository corretto.

      I pacchetti senza ambito sono associati al registro npm predefinito, in genere il registro pubblico npm. Se non specifichi un ambito, la configurazione restituita imposta il repository Artifact Registry come registro predefinito. Questo può causare problemi se i tuoi progetti Node.js devono installare pacchetti sia dal registro npm pubblico sia dal repository Artifact Registry.

    • KEY-FILE è il percorso del file della chiave JSON del account di servizio .

  5. Aggiungi le impostazioni di configurazione restituite al file di configurazione .npmrc nei tuoi progetti Node.js. Questo file si trova in genere nella stessa directory di package.json. Assicurati di includere queste impostazioni nei progetti Node.js per i pacchetti che pubblichi e per i progetti che installeranno le dipendenze dal tuo repository npm.

  6. Se hai altri repository Node.js a cui connetterti, ripeti i passaggi precedenti per ottenere le impostazioni e aggiungile al file .npmrc.

Passaggi successivi