Configura l'autenticazione in Artifact Registry per i repository di pacchetti Python

Questa pagina descrive come configurare l'autenticazione con un repository di pacchetti Python di Artifact Registry.

Devi eseguire l'autenticazione in Artifact Registry quando utilizzi un server per la connessione a un repository.

Non è necessario configurare l'autenticazione per Cloud Build o Google Cloud di ambienti di runtime come Google Kubernetes Engine e Cloud Run, verifica che le autorizzazioni richieste sono configurate.

Prima di iniziare

  1. Se il repository di destinazione non esiste, creando un nuovo repository di pacchetti Python.
  2. Verifica che Python 3 sia installato. Per istruzioni sull'installazione, consulta Tutorial di Google Cloud per la configurazione di Python.
  3. Verifica che l'account utente o l'account di servizio che stai utilizzando abbia la le autorizzazioni necessarie per accedere repository Git.
  4. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  5. (Facoltativo) Configura i valori predefiniti per gcloud CLI gcloud.

Panoramica

Artifact Registry supporta i seguenti metodi di autenticazione.

Libreria di keyring Python (consigliata)
Artifact Registry fornisce un backend di keyring per archiviare le credenziali la connessione ai repository Artifact Registry.
Autenticazione tramite password
Utilizza questa opzione se non puoi usare il keyring e hai bisogno di un'opzione che supporti l'autenticazione basata su password di base.

Le istruzioni riportate in questa documentazione descrivono la configurazione di pip come unico indice dei pacchetti in cui pip cerca i pacchetti. Ti consigliamo di utilizzare repository virtuali per cercare pacchetti tra i tuoi pacchetti privati Artifact Registry e pacchetti pubblici da PyPI anziché configurare più indici di pacchetti nel file di configurazione pip. Lo strumento Pip non degli indici dei pacchetti di ricerca in un ordine particolare, in modo che i consumatori possano di scaricare o installare per errore un pacchetto pubblico con lo stesso nome di uno di i tuoi pacchetti privati. I repository virtuali ti consentono di configurare le priorità per le origini upstream per ridurre questo rischio di confusione delle dipendenze.

Autenticazione con il portachiavi

La libreria keyring di Python offre alle applicazioni un modo per accedere ai backend keyring, ovvero ai depositi delle credenziali del sistema operativo e di terze parti.

Artifact Registry fornisce il backend della chiave keyrings.google-artifactregistry-auth per gestire l'autenticazione con i repository Artifact Registry.

Ordine di ricerca delle credenziali

Quando utilizzi il backend della chiave dell'archivio di Artifact Registry, le tue credenziali non vengono memorizzate nel progetto Python. Artifact Registry cerca invece le credenziali nel seguente ordine:

  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. Credenziali fornite dall'account di servizio predefinito per Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine o Cloud Functions.

  2. Le credenziali fornite da Google Cloud CLI, incluse le credenziali utente del 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 gli account che potrebbero essere utilizzati da ADC dispongano delle autorizzazioni necessarie. 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 intendi eseguire il caricamento da questi ambienti utilizzando l'account di servizio predefinito, devi modificare le autorizzazioni.

Configurazione del portachiavi

Per configurare l'autenticazione con il backend della chiave dell'Artifact Registry:

  1. Installa la libreria keyring.

    pip install keyring
    
  2. Installa il backend Artifact Registry.

    pip install keyrings.google-artifactregistry-auth
    
  3. Elenca i backend per confermare l'installazione.

    keyring --list-backends
    

    L'elenco deve includere

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority: 9)
  4. Esegui il comando seguente per stampare la configurazione del repository da aggiungere al progetto Python.

    gcloud artifacts print-settings python --project=PROJECT \
        --repository=REPOSITORY \
        --location=LOCATION
    

    Sostituisci i seguenti valori:

    • PROJECT è l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.
    • REPOSITORY è l'ID del repository. Se hai configurato Artifact Registry predefinito repository, viene utilizzato quando questo flag viene omesso dal comando.
    • LOCATION indica una o più regioni location del repository.
  5. Aggiungi le seguenti impostazioni al file .pypirc. La posizione predefinita è:

    • Linux e macOS: $HOME/.pypirc
    • Windows: %USERPROFILE%\.pypirc
    [distutils]
    index-servers =
        PYTHON-REPO-ID
    
    [PYTHON-REPO-ID]
    repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/
    

    Sostituisci i seguenti valori:

    • PYTHON-REPO-ID è un ID del repository a cui puoi fare riferimento con strumenti come Twine.
    • PROJECT è l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.
    • REPOSITORY è l'ID del repository. Se hai configurato Artifact Registry predefinito repository, viene utilizzato quando questo flag viene omesso dal comando.
    • LOCATION indica una o più regioni location del repository.
  6. Aggiungi il tuo repository al file di configurazione pip. La posizione del file dipende da se vuoi aggiornare il file per utente o il file specifico nell'ambiente virtuale che stai utilizzando.

    Per il file associato all'utente del tuo sistema operativo:

    • Unix: $HOME/.config/pip/pip.conf o $HOME/.pip/pip.conf
    • macOS: /Library/Application Support/pip/pip.conf o $HOME/.config/pip/pip.conf
    • Windows: %APPDATA%\pip\pip.ini o %USERPROFILE%\pip\pip.ini

    Per gli ambienti virtuali:

    • Unix e macOS: $VIRTUAL_ENV/pip.conf
    • Windows: %VIRTUAL_ENV%\pip.ini

    Per configurare pip in modo che esegua la ricerca solo nel tuo repository, utilizza l'impostazione index-url e assicurati che non siano configurati altri indici dei pacchetti con l'impostazione extra-index-url.

    [global]
    index-url = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
    

    La stringa /simple/ alla fine del percorso del repository indica che la stringa il repository implementa l'API Python Simple Repository.

L'ambiente Python è ora configurato per l'autenticazione con Artifact Registry.

Autenticazione del portachiavi con le credenziali utente

Dopo aver configurato il portachiavi, puoi utilizzarlo con le tue credenziali utente nella CLI gcloud. Accedi a Google Cloud CLI prima di collegarti a un repository di pacchetti Python.

Esegui questo comando:

gcloud auth login

Autenticazione del portachiavi con le credenziali dell'account di servizio

Dopo aver configurato il portachiavi, puoi configurare un account di servizio per l'autenticazione.

  1. Crea un account di servizio o scegli un account di servizio esistente che utilizzi per l'automazione.
  2. Concedi il ruolo Artifact Registry specifico all'account di servizio per fornire l'accesso al repository.
  3. Utilizza una delle seguenti opzioni per eseguire l'autenticazione con il tuo account di servizio:

    • Credenziali predefinite dell'applicazione (opzione consigliata)

      Assegna alla variabile la posizione del file della chiave dell'account di servizio GOOGLE_APPLICATION_CREDENTIALS in modo che Artifact Registry l'assistente per le credenziali può ottenere la tua chiave quando ti connetti ai repository.

      export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
      
    • Credenziali dell'interfaccia a riga di comando gcloud

      Prima di connetterti a un repository, accedi come account di servizio. Evita questa opzione se ti connetti ai repository dalle VM di Compute Engine poiché Artifact Registry trova le credenziali dell'account di servizio della VM prima delle credenziali in gcloud CLI.

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

    Sostituisci KEY-FILE con il percorso dell'account di servizio file della chiave.

Autenticazione con una chiave dell'account di servizio

Utilizza questo approccio quando è richiesta 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 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 configurare l'autenticazione:

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

    Devi specificare la posizione del file della chiave dell'account di servizio da 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 la licenza appropriata Artifact Registry per l'account di servizio per fornire il repository l'accesso.

  3. Esegui questo comando per stampare la configurazione del repository al tuo progetto Python.

    gcloud artifacts print-settings python --project=PROJECT \
        --repository=REPOSITORY \
        --location=LOCATION \
        --json-key=KEY-FILE
    

    Sostituisci i seguenti valori:

    • PROJECT è l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.
    • REPOSITORY è l'ID del repository. Se hai configurato Artifact Registry predefinito repository, viene utilizzato quando questo flag viene omesso dal comando.
    • LOCATION indica una o più regioni location del repository.
    • KEY-FILE è il percorso del file JSON dell'account di servizio file della chiave.
  4. Aggiungi le seguenti impostazioni al file .pypirc. La posizione predefinita per il file di configurazione pip per utente è:

    • Linux e macOS: $HOME/.pypirc
    • Windows: %USERPROFILE%\.pypirc
    [distutils]
    index-servers =
        PYTHON-REPO-ID
    
    [PYTHON-REPO-ID]
    repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/
    username: _json_key_base64
    password: KEY
    

    Sostituisci i seguenti valori:

    • PYTHON-REPO-ID è un ID del repository a cui puoi fare riferimento con strumenti come Twine.
    • PROJECT è l'ID progetto. Se questo flag viene omesso, attuale o progetto predefinito.
    • REPOSITORY è l'ID del repository. Se hai configurato Artifact Registry predefinito repository, viene utilizzato quando questo flag viene omesso dal comando.
    • LOCATION indica una o più regioni location del repository.
    • KEY è la chiave con codifica Base64 nel file delle chiavi dell'account di servizio.
  5. Aggiungi il tuo repository al file di configurazione di pip. La posizione del file di configurazione pip dipende da se vuoi aggiornare il file per utente o il file specifico nell'ambiente virtuale che stai utilizzando.

    Per il file associato all'utente del tuo sistema operativo:

    • Unix: $HOME/.config/pip/pip.conf o $HOME/.pip/pip.conf
    • macOS: /Library/Application Support/pip/pip.conf o $HOME/.config/pip/pip.conf
    • Windows: %APPDATA%\pip\pip.ini o %USERPROFILE%\pip\pip.ini

    Per gli ambienti virtuali:

    • Unix e macOS: $VIRTUAL_ENV/pip.conf
    • Windows: %VIRTUAL_ENV%\pip.ini

    Aggiungi la seguente riga al file di configurazione di pip:

    [global]
    index-url = https://_json_key_base64:KEY@LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
    
    • KEY la chiave privata nel file della chiave dell'account di servizio.
    • La stringa /simple/ alla fine del percorso del repository indica che il repository implementa l'API Python Simple Repository.

Passaggi successivi