Configura l'autenticazione in Artifact Registry per npm

Devi eseguire l'autenticazione in Artifact Registry quando utilizzi un'applicazione di terze parti per connetterti a un repository.

Non è necessario configurare l'autenticazione per Cloud Build o per gli ambienti di runtime Google Cloudcome Google Kubernetes Engine e Cloud Run, ma devi verificare che siano configurate le autorizzazioni richieste.

Node.js supporta due metodi per autenticare le richieste al tuo 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 i valori predefiniti 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 mai utilizzato npm, leggi la panoramica per scoprire di più sui pacchetti con ambito e sul file di configurazione per le impostazioni di autenticazione.

Genera 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 tuo pacchetto ad Artifact Registry.

Puoi generare un token di accesso oauth2 utilizzando Google Cloud o un token oauth2l 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.

Genera un token utilizzando gcloud

Per generare un token di accesso oauth2 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 tuo pacchetto Node.js ad Artifact Registry.

Genera un token senza utilizzare gcloud

Per generare un token di accesso utilizzando solo la CLI oauth2l, segui questi passaggi:

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

    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 tuo pacchetto Node.js ad Artifact Registry.

Configura l'autenticazione con password con le chiavi del account di servizio

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

Le chiavi dei service account sono credenziali di lunga durata. 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 dalaccount di serviziot. Ad esempio, assegna il ruolo Artifact Registry Reader a un account di servizio che scarica solo artefatti.
  • Se i gruppi della tua organizzazione richiedono diversi livelli di accesso 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 oppure scegli un service account esistente che utilizzi per l'automazione.

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

    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 il account di servizio.
    • KEY-FILE è il percorso del file della chiave JSON del account di servizio.
  4. Esegui questo comando 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 del repository.
    • SCOPE-NAME è il nome dell'ambito npm 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. Ciò può causare problemi se i tuoi progetti Node.js devono installare pacchetti sia dal registro npm pubblico sia dal tuo 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 aggiungerle al file .npmrc.

Passaggi successivi