In questa pagina viene descritta la concessione delle autorizzazioni per i repository di Artifact Registry.
Prima di iniziare
- Abilita Artifact Registry, tra cui l'abilitazione dell'API e l'installazione di Google Cloud CLI.
- Crea i repository per i tuoi pacchetti, se vuoi applicare autorizzazioni specifiche per i repository.
Panoramica
Artifact Registry è completamente integrato con i servizi Google Cloud per l'implementazione di una pipeline CI/CD, con autorizzazioni predefinite per ridurre al minimo l'impegno di configurazione. Puoi anche integrare Artifact Registry con strumenti CI/CD di terze parti e configurare le autorizzazioni e l'autenticazione necessarie per accedere ai repository.
Se utilizzi Artifact Analysis per lavorare con i metadati del container, ad esempio le vulnerabilità trovate nelle immagini, consulta la documentazione di Artifact Analysis per informazioni su come concedere l'accesso per visualizzare o gestire i metadati.
Integrazione con Google Cloud
Per impostazione predefinita, le seguenti autorizzazioni si applicano ai servizi CI/CD di Google Cloud nello stesso progetto di Artifact Registry:
- Le autorizzazioni Cloud Build includono le autorizzazioni per caricare e scaricare gli artefatti.
- Compute Engine, versioni Google Kubernetes Engine supportate e Cloud Run utilizzano l'account di servizio predefinito di Compute Engine, che ha accesso di sola lettura all'archiviazione.
Se tutti i tuoi servizi si trovano nello stesso progetto Google Cloud e le autorizzazioni predefinite soddisfano le tue esigenze, non è necessario configurare le autorizzazioni.
Devi configurare le autorizzazioni Artifact Registry per i seguenti servizi se:
- Vuoi utilizzare questi servizi per accedere ad Artifact Registry in un altro progetto. Nel progetto con Artifact Registry, concedi all'account di servizio il ruolo richiesto per ogni servizio. Se ti connetti a Cloud Run, concedi all'agente di servizio Cloud Run il ruolo richiesto.
- Stai utilizzando una versione di GKE che non ha il supporto integrato per il pull delle immagini da Artifact Registry. Consulta la sezione GKE per le istruzioni di configurazione.
- Vuoi che l'account di servizio predefinito abbia accesso in lettura e scrittura ai repository. Per informazioni dettagliate, leggi le seguenti informazioni:
- Utilizzi un account di servizio fornito dall'utente per i tuoi ambienti di runtime anziché l'account di servizio predefinito. Nel progetto con Artifact Registry, concedi al tuo account di servizio il ruolo richiesto.
Integrazione di terze parti
Per i client di terze parti, devi configurare sia le autorizzazioni sia l'autenticazione.
- Crea un account di servizio per agire per conto della tua applicazione oppure scegli un account di servizio esistente che utilizzi per l'automazione CI/CD.
- Concedi il ruolo di Artifact Registry appropriato all'account di servizio per fornire l'accesso al repository.
Configurare il client di terze parti per eseguire l'autenticazione con Artifact Registry.
Ruoli e autorizzazioni
Concedere un'autorizzazione Identity and Access Management (IAM) assegnando un ruolo che la includa. Puoi concedere le autorizzazioni a livello di progetto o repository.
Ruoli di Artifact Registry predefiniti
IAM fornisce ruoli predefiniti che concedono l'accesso a risorse Google Cloud specifiche e impediscono l'accesso non autorizzato ad altre risorse.
Utilizza i seguenti ruoli predefiniti per i repository standard, virtuali e remoti nel dominio pkg.dev
:
Ruolo | Descrizione |
---|---|
Lettore Artifact Registry ( roles/artifactregistry.reader ) |
Visualizzare e ottenere artefatti, visualizzare i metadati del repository. |
Writer Artifact Registry ( roles/artifactregistry.writer ) |
Lettura e scrittura di artefatti. |
Amministratore repository Artifact Registry ( roles/artifactregistry.repoAdmin ) |
Lettura, scrittura ed eliminazione di artefatti. |
Amministratore Artifact Registry ( roles/artifactregistry.admin ) |
Crea e gestisci repository e artefatti. |
I seguenti ruoli predefiniti aggiuntivi includono autorizzazioni per creare repository gcr.io per ospitare immagini per il dominio gcr.io
. I ruoli non includono le autorizzazioni per creare altri repository in Artifact Registry nel dominio pkg.dev
. Questi ruoli supportano la compatibilità con le versioni precedenti di Container Registry, poiché Container Registry utilizza il primo push di un'immagine container per creare ciascun registro a più aree geografiche.
Ruolo | Descrizione |
---|---|
Writer on-push di Artifact Registry
(roles/artifactregistry.createOnPushWriter ) |
Lettura e scrittura di artefatti. Creare repository gcr.io. |
Amministratore repository create-on-push di Artifact Registry
(roles/artifactregistry.createOnPushRepoAdmin ) |
Lettura, scrittura ed eliminazione di artefatti. Creare repository gcr.io. |
Per un elenco completo delle singole autorizzazioni in ciascun ruolo, consulta la pagina
Ruoli di Artifact Registry.
Puoi anche utilizzare il comando gcloud iam roles describe
per visualizzare un elenco delle autorizzazioni in ciascun ruolo.
Ruoli IAM di base
I ruoli IAM di base consentono agli utenti di accedere a livello globale a tutte le risorse Google Cloud. Se possibile, utilizza ruoli predefiniti per l'accesso ai repository in modo che gli utenti e gli account di servizio dispongano solo delle autorizzazioni necessarie.
Nella tabella seguente sono elencati i ruoli di base esistenti prima di IAM e i ruoli IAM di Artifact Registry che includono:
Ruolo | Titolo del ruolo | Include il ruolo |
---|---|---|
roles/viewer |
Visualizzatore | roles/artifactregistry.reader |
roles/editor
|
Editor |
|
roles/owner |
Proprietario | roles/artifactregistry.admin |
Concessione di autorizzazioni
Concedi le autorizzazioni a livello di progetto se le stesse autorizzazioni si applicano a tutti i repository nel progetto. Se alcuni account richiedono livelli di accesso diversi, concedi i ruoli a livello di repository.
Se concedi ruoli utilizzando il comando gcloud
, puoi specificare un'associazione di ruolo per un'entità o utilizzare un file di criteri per definire più associazioni.
Per gli esempi riportati in questa pagina viene utilizzato il modello di criteri di riferimento che segue.
Il file del criterio di riferimento è denominato policy.yaml
. Il modello contiene esempi di nomi di utenti e account di servizio. Sostituisci questi utenti e account di servizio di esempio come appropriato per il tuo progetto.
Per i dettagli sul formato dei criteri, consulta la documentazione relativa ai criteri IAM.
bindings:
- members:
- user: user@gmail.com
role: roles/owner
- members:
- serviceAccount: repo-readonly@iam.gserviceaccount.com
- user: user2@gmail.com
role: roles/artifactregistry.reader
- members:
- serviceAccount: repo-write@iam.gserviceaccount.com
role: roles/artifactregistry.writer
- members:
- serviceAccount: repo-admin@iam.gserviceaccount.com
role: roles/artifactregistry.repoAdmin
- members:
- serviceAccount: ar-admin@iam.gserviceaccount.com
role: roles/artifactregistry.admin
Concessione delle autorizzazioni a livello di progetto
Concedi un ruolo a livello di progetto se si applicano le stesse autorizzazioni a tutti i repository nel progetto.
Per aggiungere un membro del team a un progetto e concedergli un ruolo Artifact Registry:
Console
Apri la pagina IAM nella console Google Cloud.
Fai clic su Seleziona un progetto, scegli il progetto in cui è in esecuzione Artifact Registry e fai clic su Apri.
Fai clic su Add (Aggiungi).
Inserisci un indirizzo email. Puoi aggiungere singoli utenti, account di servizio o Google Gruppi come entità.
Seleziona un ruolo per l'entità. In conformità al principio di sicurezza del privilegio minimo, valuta la possibilità di concedere la quantità di privilegi minima necessaria per impedire l'accesso indesiderato ad altre risorse.
Fai clic su Salva.
gcloud
-
In Google Cloud Console, attiva Cloud Shell.
Nella parte inferiore di Google Cloud Console, viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Per concedere un ruolo a una singola entità, esegui questo comando:
gcloud projects add-iam-policy-binding PROJECT \ --member=PRINCPAL \ --role=ROLE
dove
- PROJECT è l'ID del progetto in cui è in esecuzione Artifact Registry.
PRINCIPAL è l'entità per cui vuoi aggiungere l'associazione. Utilizza il modulo
user|group|serviceAccount:email
odomain:domain
.Esempi:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
.ROLE è il ruolo che vuoi concedere.
Per ulteriori informazioni, consulta la documentazione di add-iam-policy-binding.
Per concedere i ruoli utilizzando un file dei criteri, esegui questo comando:
gcloud projects set-iam-policy PROJECT /PATH/TO/policy.yaml
Dove
- PROJECT è l'ID del progetto o l'identificatore completo del progetto in cui Artifact Registry è in esecuzione.
- /PATH/TO/policy.yaml è il percorso e il nome del file del criterio.
Per ottenere il criterio attualmente configurato, esegui questo comando:
gcloud projects get-iam-policy PROJECT
Dove PROJECT è l'ID del progetto o l'identificatore completo del progetto.
Per ulteriori informazioni, consulta la documentazione di set-iam-policy.
Concessione di autorizzazioni specifiche per il repository
Concedi le autorizzazioni a livello di repository quando vuoi che utenti o account di servizio abbiano livelli di accesso diversi per ogni repository nel progetto.
Console
Per concedere l'accesso a un repository specifico:
Apri la pagina Repository nella console Google Cloud.
Seleziona il repository appropriato.
Se il riquadro informazioni non è visualizzato, fai clic su Mostra riquadro informazioni nella barra dei menu.
Nella scheda Autorizzazioni, fai clic su Aggiungi entità.
Inserisci un indirizzo email. Puoi aggiungere come entità utenti, account di servizio o gruppi Google.
Seleziona un ruolo per l'entità. Ti consigliamo di assegnare all'entità il livello di privilegi minimo necessario.
Fai clic su Salva.
gcloud
-
In Google Cloud Console, attiva Cloud Shell.
Nella parte inferiore di Google Cloud Console, viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Puoi impostare un insieme IAM di singole associazioni di criteri o utilizzare un file di criteri.
Per concedere un ruolo a una singola entità, esegui questo comando:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location LOCATION \ --member=PRINCIPAL \ --role=ROLE
dove
- REPOSITORY è l'ID del repository.
PRINCIPAL è l'entità per cui vuoi aggiungere l'associazione. Utilizza il modulo
user|group|serviceAccount:email
odomain:domain
.Esempi:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
.ROLE è il ruolo che vuoi concedere.
LOCATION è la località del repository, a livello di una o più aree geografiche.
Ad esempio, per aggiungere un'associazione dei criteri IAM per il ruolo
roles/artifactregistry.writer
per l'utentewrite@gmail.com
con il repositorymy-repo
nella località--us-central1
, esegui:gcloud artifacts repositories add-iam-policy-binding my-repo \ --location=us-central1 --member=user:write@gmail.com --role=roles/artifactregistry.writer
Per concedere i ruoli utilizzando un file dei criteri, esegui questo comando:
gcloud artifacts repositories set-iam-policy REPOSITORY /PATH/TO/policy.yaml --location=LOCATION
Dove
- REPOSITORY è l'ID del repository.
- /PATH/TO/policy.yaml è il percorso e il nome del file del criterio.
- LOCATION è la località del repository, a livello di una o più aree geografiche.
Ad esempio, per impostare il criterio IAM per il repository
my-repo
nella località--us-central1
con il criterio definito inpolicy.yaml
, esegui:gcloud artifacts repositories set-iam-policy my-repo policy.yaml --location=us-central1
Terraform
Utilizza la risorsa google_artifact_registry_repository_iam per
configurare un criterio IAM. L'esempio seguente definisce un account di servizio con nome della risorsa repo-account
e concede l'accesso in lettura a un repository con il nome della risorsa my-repo
.
Se non hai mai utilizzato Terraform per Google Cloud, consulta la pagina Inizia - Google Cloud sul sito web di hashiCorp.
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta
location = "LOCATION"
repository_id = "REPOSITORY"
description = "DESCRIPTION"
format = "FORMAT"
}
resource "google_service_account" "repo-account" {
provider = google-beta
account_id = "ACCOUNT-ID"
display_name = "Repository Service Account"
}
resource "google_artifact_registry_repository_iam_member" "repo-iam" {
provider = google-beta
location = google_artifact_registry_repository.my-repo.location
repository = google_artifact_registry_repository.my-repo.name
role = "roles/artifactregistry.reader"
member = "serviceAccount:${google_service_account.repo-account.email}"
}
ACCOUNT-ID è l'ID dell'account di servizio. Questa è la parte del campo dell'indirizzo email dell'account di servizio prima del simbolo @
.
Per altri esempi, consulta la documentazione della risorsa google_artifact_registry_repository_iam.
Configurazione dell'accesso pubblico a un repository
Se hai degli artefatti che vuoi rendere disponibili a chiunque su Internet senza autenticazione, archiviali in un repository che rendi pubblico.
Per configurare un repository per l'accesso pubblico di sola lettura, concedi il ruolo Lettore Artifact Registry all'entità allUsers
. Consigliamo inoltre di limitare le quote di richiesta degli utenti in modo che un singolo utente non possa utilizzare la quota complessiva del progetto.
Console
Apri la pagina Repository nella console Google Cloud.
Seleziona il repository appropriato.
Se il riquadro informazioni non è visualizzato, fai clic su Mostra riquadro informazioni nella barra dei menu.
Nella scheda Autorizzazioni, fai clic su Aggiungi entità.
Nel campo Nuove entità, inserisci
allUsers
.Seleziona il ruolo Lettore Artifact Registry.
Imposta un limite per utente sulle richieste dell'API Artifact Registry per prevenire l'uso improprio da parte di utenti non autenticati. Per istruzioni, consulta la sezione Limitazione dell'utilizzo.
gcloud
-
In Google Cloud Console, attiva Cloud Shell.
Nella parte inferiore di Google Cloud Console, viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Esegui questo comando:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION --member=allUsers --role=ROLE
dove
REPOSITORY è l'ID del repository.
ROLE è il ruolo che vuoi concedere.
LOCATION è la località del repository, a livello di una o più aree geografiche.
Ad esempio, configura il repository
my-repo
nella località--us-central1
come pubblico, esegui:gcloud artifacts repositories add-iam-policy-binding my-repo \ --location=us-central1 --member=allUsers --role=roles/artifactregistry.reader
Imposta un limite per utente sulle richieste dell'API Artifact Registry per prevenire l'uso improprio da parte di utenti non autenticati. Per istruzioni, consulta la sezione Limitazione dell'utilizzo.
Revoca le autorizzazioni
Per revocare l'accesso a un repository, rimuovi l'entità dall'elenco dei provider autorizzati.
Per rimuovere l'accesso pubblico da un repository, rimuovi l'entità allUsers
.
Console
Per revocare le autorizzazioni:
Apri la pagina Repository nella console Google Cloud.
Seleziona il repository appropriato.
Se il riquadro informazioni non è visualizzato, fai clic su Mostra riquadro informazioni nella barra dei menu.
Nella scheda Autorizzazioni, espandi l'entità appropriata. Se rendi privato un repository pubblico, espandi l'entità
allUsers
.Fai clic su Rimuovi entità per revocare l'accesso.
gcloud
-
In Google Cloud Console, attiva Cloud Shell.
Nella parte inferiore di Google Cloud Console, viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Per revocare un ruolo a livello di progetto, esegui il comando seguente:
gcloud projects remove-iam-policy-binding PROJECT \ --member=PRINCIPAL \ --role=ROLE
- PROJECT è l'ID progetto.
PRINCIPAL è l'entità per cui vuoi rimuovere l'associazione. Utilizza il modulo
user|group|serviceAccount:email
odomain:domain
.Esempi:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
.ROLE è il ruolo che vuoi revocare.
Per revocare un ruolo per un repository, esegui il comando seguente:
gcloud artifacts repositories remove-iam-policy-binding REPOSITORY --member=PRINCIPAL \ --role=ROLE
dove
- REPOSITORY è l'ID del repository.
PRINCIPAL è l'entità per cui vuoi rimuovere l'associazione. Utilizza il modulo
user|group|serviceAccount:email
odomain:domain
.Esempi:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
odomain:example.domain.com
.Per revocare l'accesso pubblico al repository, specifica l'entità
allUsers
.ROLE è il ruolo che vuoi revocare.
Ad esempio, per rimuovere un'associazione dei criteri per il ruolo
roles/artifactregistry.writer
per l'utentewrite@gmail.com
con il repositorymy-repo
nella località--us-central1
, esegui:gcloud artifacts repositories remove-policy-binding my-repo \ --location=us-central1 \ --member=user:write@gmail.com \ --role=roles/artifactregistry.writer
Per revocare l'accesso pubblico a
my-repo
nella località--us-central1
, esegui:gcloud artifacts repositories remove-policy-binding my-repo \ --location=us-central1 \ --member=allUsers \ --role=roles/artifactregistry.reader
Concedere l'accesso condizionale con i tag
Questa funzionalità è in Anteprima.
Gli amministratori del progetto possono creare tag per le risorse in Google Cloud e gestirle in Resource Manager. Quando colleghi un tag a un repository di Artifact Registry, gli amministratori possono utilizzare il tag con condizioni IAM per concedere l'accesso condizionale al repository.
Non puoi associare tag a singoli elementi.
Per saperne di più, consulta la seguente documentazione:
- Gli amministratori impostano i tag e controllo dell'accesso.
- Sviluppatori che collegano i tag ai repository
Integrazione con i servizi Google Cloud
Per la maggior parte degli account di servizio Google Cloud, la configurazione dell'accesso a un registro richiede solo le autorizzazioni IAM appropriate.
Autorizzazioni predefinite per i servizi Google Cloud
I servizi Google Cloud come Cloud Build o Google Kubernetes Engine utilizzano un account di servizio predefinito o gestito da Google per interagire con le risorse all'interno dello stesso progetto.
Devi configurare o modificare le autorizzazioni autonomamente se:
- Il servizio Google Cloud si trova in un progetto diverso da quello di Artifact Registry.
- Le autorizzazioni predefinite non soddisfano le tue esigenze. Ad esempio, l'account di servizio predefinito di Compute Engine dispone dell'accesso di sola lettura allo spazio di archiviazione nello stesso progetto. Se vuoi eseguire il push di un'immagine da una VM ad Artifact Registry, puoi modificare le autorizzazioni per l'account di servizio VM o utilizzare un account diverso con le autorizzazioni richieste.
- Stai utilizzando un account di servizio fornito dall'utente per interagire con Artifact Registry anziché l'account di servizio predefinito.
I seguenti account di servizio in genere accedono ad Artifact Registry. L'indirizzo email dell'account di servizio include l'ID o il numero di progetto del progetto Google Cloud in cui è in esecuzione il servizio.
Servizio | Account di servizio | Indirizzo email | Autorizzazioni |
---|---|---|---|
Ambiente flessibile di App Engine | Account di servizio App Engine | PROJECT-ID@appspot.gserviceaccount.com | Ruolo Editor, può leggere e scrivere nei repository |
Compute Engine | Account di servizio predefinito di Compute Engine | PROJECT-NUMBER-compute@developer.gserviceaccount.com | Ruolo Editor, limitato all'accesso di sola lettura ai repository |
Cloud Build | Account di servizio Cloud Build | PROJECT-NUMBER@cloudbuild.gserviceaccount.com | Le autorizzazioni predefinite includono l'accesso in lettura e scrittura ai repository e la possibilità di creare repository gcr.io. |
Cloud Run |
Agente di servizio Cloud Run L'agente di servizio per run.googleapis.com . |
servizio-PROJECT-NUMBER@serverless-robot-prod.iam.gserviceaccount.com | Autorizzazioni dei lettori, limitate all'accesso di sola lettura ai repository |
GKE |
Account di servizio predefinito di Compute Engine L'account di servizio predefinito per i nodi. |
PROJECT-NUMBER-compute@developer.gserviceaccount.com | Ruolo Editor, limitato all'accesso di sola lettura ai repository |
Concessione dell'accesso alle istanze di Compute Engine
Per le istanze VM che accedono ai repository devono essere configurate sia le autorizzazioni Artifact Registry sia l'ambito di accesso di archiviazione.
Mentre il livello di accesso di un account di servizio è determinato dai ruoli IAM concessi all'account di servizio, gli ambiti di accesso su un'istanza VM determinano gli ambiti OAuth predefiniti per le richieste effettuate tramite gcloud CLI e le librerie client nell'istanza. Di conseguenza, gli ambiti di accesso limitano potenzialmente l'accesso ai metodi API durante l'autenticazione con le credenziali predefinite dell'applicazione.
Compute Engine utilizza le seguenti impostazioni predefinite:
- L'account di servizio predefinito di Compute Engine è l'identità per le istanze VM. L'indirizzo email dell'account di servizio ha il suffisso @developer.gserviceaccount.com.
- L'account di servizio predefinito ha il ruolo Editor di base IAM, se non hai disattivato questo comportamento.
- Le istanze che crei con l'account di servizio predefinito dispongono degli ambiti di accesso predefiniti di Compute Engine, incluso l'accesso in sola lettura allo spazio di archiviazione. Mentre il ruolo Editor concede in genere l'accesso in scrittura, l'ambito di accesso allo spazio di archiviazione di
read-only
limita l'account di servizio dell'istanza a scaricare gli artefatti solo da qualsiasi repository nello stesso progetto.
Devi configurare l'ambito di accesso dell'account di servizio se:
- L'account di servizio VM deve accedere a un repository in un progetto diverso.
- L'account di servizio VM deve eseguire azioni diverse dalla lettura degli artefatti dai repository. Questo di solito viene applicato a strumenti di terze parti su una VM che devono eseguire il push di immagini o eseguire i comandi
gcloud
di Artifact Registry.
Per configurare le autorizzazioni e impostare l'ambito di accesso:
Nel progetto con la tua istanza VM, ottieni il nome dell'account di servizio predefinito di Compute Engine. L'indirizzo email dell'account di servizio ha il suffisso @developer.gserviceaccount.com.
Nel progetto con il repository, concedi le autorizzazioni in modo che l'account di servizio possa accedere al repository.
Imposta l'ambito di accesso con l'opzione --scopes.
Arresta l'istanza VM. Vedi Arresta un'istanza.
Imposta l'ambito di accesso con il comando seguente:
gcloud compute instances set-service-account INSTANCE --scopes=SCOPE
Sostituisci SCOPE con il valore appropriato.
Per Docker, sono supportate le seguenti opzioni:
storage-ro
: concede l'autorizzazione di lettura solo per il pull delle immagini.storage-rw
: concede l'autorizzazione di lettura e scrittura per il push o il pull delle immagini.cloud-platform
- Visualizzare e gestire i dati, compresi i metadati, in tutto il servizio Google Cloud.
Per gli altri formati, devi utilizzare l'ambito
cloud-platform
.
Riavvia l'istanza VM. Consulta Avvio di un'istanza arrestata.
Concessione dell'accesso ai cluster Google Kubernetes Engine
I cluster GKE e i pool di nodi possono estrarre i container senza alcuna configurazione aggiuntiva se sono soddisfatti tutti i seguenti requisiti:
- GKE è nello stesso progetto di Artifact Registry
- I nodi utilizzano l'account di servizio predefinito, l'account di servizio predefinito di Compute Engine
- I nodi sono stati creati con accesso in lettura all'archiviazione come segue:
- Utilizzare gli ambiti di accesso predefiniti di Compute Engine.
- Concedere l'ambito di accesso
cloud-platform
o un altro ambito che include l'accesso in lettura allo spazio di archiviazione.
- Stai eseguendo una versione supportata di GKE
Se il tuo ambiente GKE non soddisfa questi requisiti, le istruzioni per concedere l'accesso dipendono dall'utilizzo dell'account di servizio predefinito di Compute Engine o di un account di servizio fornito dall'utente come identità per i nodi.
- Account di servizio predefinito
I seguenti requisiti di configurazione si applicano all'account di servizio predefinito di Compute Engine:
Se GKE si trova in un progetto diverso da Artifact Registry, concedi le autorizzazioni richieste all'account di servizio.
Per eseguire il push delle immagini, interagire con i repository per formati diversi dai container o eseguire comandi
gcloud
dal tuo cluster, devi impostare gli ambiti di accesso per l'account di servizio quando crei il cluster o il pool di nodi.Se non utilizzi una versione supportata di GKE, configura imagePullSecrets.
- Account di servizio fornito dall'utente
Se vuoi utilizzare un account di servizio fornito dall'utente come identità per un cluster, devi:
Concedi le autorizzazioni necessarie all'account di servizio dal progetto Google Cloud in cui Artifact Registry è in esecuzione.
Per impostazione predefinita, la creazione di un cluster o di un pool di nodi con un account di servizio fornito dall'utente concede l'ambito di accesso
cloud-platform
.Se utilizzi il flag
--scopes
con il comando gcloud container clusters create o gcloud container node-pools create, devi includere ambiti di accesso appropriati da utilizzare con Artifact Registry.
Impostazione degli ambiti di accesso
Gli ambiti di accesso sono il metodo legacy per specificare l'autorizzazione per le VM di Compute Engine. Per eseguire il pull delle immagini dai repository Artifact Registry, i nodi GKE devono avere l'ambito di accesso in sola lettura allo spazio di archiviazione o un altro ambito di accesso allo spazio di archiviazione che include l'accesso in lettura allo spazio di archiviazione.
Puoi impostare gli ambiti di accesso solo quando crei un cluster o un pool di nodi. Non puoi modificare gli ambiti di accesso sui nodi esistenti.
- Se utilizzi l'account di servizio predefinito di Compute Engine, GKE crea nodi con gli ambiti di accesso predefiniti di Compute Engine, che includono l'accesso di sola lettura allo spazio di archiviazione.
- Se utilizzi un account di servizio fornito dall'utente, GKE crea
nodi con l'ambito
cloud-platform
, l'ambito richiesto per la maggior parte dei servizi Google Cloud.
Per specificare gli ambiti di accesso durante la creazione di un cluster, esegui questo comando:
gcloud container clusters create NAME --scopes=SCOPES
Per specificare gli ambiti di accesso durante la creazione di un pool di nodi, esegui il comando seguente:
gcloud container node-pools create NAME --scopes=SCOPES
Sostituisci i seguenti valori:
- NAME è il nome del cluster o del pool di nodi.
SCOPES è un elenco separato da virgole di ambiti di accesso da concedere.
Per accedere ai repository Docker, utilizza uno dei seguenti ambiti:
storage-ro
: concede l'autorizzazione di sola lettura per il pull delle immagini.storage-rw
: concede l'autorizzazione di lettura e scrittura per il push o il pull delle immagini.cloud-platform
- Visualizzare e gestire i dati, compresi i metadati, in tutto il servizio Google Cloud.Per accedere ad altri repository, devi utilizzare l'ambito
cloud-platform
.
Per un elenco completo degli ambiti, consulta la documentazione per gcloud container clusters create o gcloud container node-pools create.
Per ulteriori informazioni sugli ambiti che puoi impostare durante la creazione di un nuovo cluster, consulta la documentazione del comando gcloud container clusters create.
Configurazione di un imagePullSecret
Per configurare imagePullSecret
:
Nel progetto con GKE, trova l'account di servizio predefinito di Compute Engine. L'indirizzo email dell'account ha il suffisso @developer.gserviceaccount.com.
Scarica la chiave dell'account di servizio per l'account di servizio.
Nel progetto con il repository, verifica di disporre delle autorizzazioni concesse al repository.
Nel progetto con il cluster, crea un secret
imagePullSecret
chiamatoartifact-registry
con la chiave dell'account di servizio.kubectl create secret docker-registry artifact-registry \ --docker-server=https://LOCATION-docker.pkg.dev \ --docker-email=SERVICE-ACCOUNT-EMAIL \ --docker-username=_json_key \ --docker-password="$(cat KEY-FILE)"
Dove
- LOCATION è la località del repository, a livello di una o più aree geografiche.
- SERVICE-ACCOUNT-EMAIL è l'indirizzo email dell'account di servizio Compute Engine.
- KEY-FILE è il nome del file della chiave dell'account di servizio. Ad
esempio,
key.json
.
Apri il tuo account di servizio predefinito:
kubectl edit serviceaccount default --namespace default
Ogni spazio dei nomi nel cluster Kubernetes ha un account di servizio predefinito denominato
default
. Questo account di servizio predefinito viene utilizzato per eseguire il pull dell'immagine container.Aggiungi il secret
imagePullSecret
appena creato all'account di servizio predefinito:imagePullSecrets: - name: artifact-registry
Il tuo account di servizio dovrebbe avere il seguente aspetto:
apiVersion: v1 kind: ServiceAccount metadata: name: default namespace: default ... secrets: - name: default-token-zd84v # The secret you created: imagePullSecrets: - name: artifact-registry
Ora, per tutti i nuovi pod creati nello spazio dei nomi default
attuale sarà definito il secret di imagePullSecret
.
Account di servizio Artifact Registry
L'agente di servizio Artifact Registry è un account di servizio gestito da Google che agisce per conto di Artifact Registry quando interagisce con i servizi Google Cloud. Per maggiori informazioni sull'account e sulle relative autorizzazioni, consulta la pagina Account di servizio Artifact Registry.
Passaggi successivi
Dopo aver configurato le autorizzazioni, scopri di più sull'utilizzo degli artefatti.
- Immagini container: Docker, Helm
- Pacchetti di linguaggi: Java, Node.js, Python, Go
- Pacchetti del sistema operativo: Debian, RPM