Questo documento mostra come mappare i ruoli di Container Registry ai ruoli di Artifact Registry e applicarli a un repository Artifact Registry. Puoi eseguire gli stessi passaggi utilizzando lo strumento di migrazione automatica.
Container Registry e Artifact Registry utilizzano diversi ruoli IAM (Identity and Access Management) per controllare l'accesso alle immagini container archiviate nel registry.
Per aiutarti a passare da Container Registry ad Artifact Registry, puoi eseguire un comando Google Cloud CLI che:
- Identifica i criteri di autorizzazione che si applicano a un bucket di archiviazione Cloud Storage che archivia le immagini per Container Registry
- Restituisce un criterio con ruoli Artifact Registry simili in modo da poter concedere ai tuoi utenti Container Registry esistenti l'accesso ai repository Artifact Registry.
Il comando utilizza IAM Policy Analyzer per analizzare i criteri di autorizzazione IAM.
Prima di iniziare
Crea un repository Artifact Registry. Se hai scelto il metodo manuale per la transizione, segui i passaggi per eseguire la migrazione manuale ai repository
gcr.io
in Artifact Registry o la migrazione manuale ai repositorypkg.dev
.Enable the Cloud Asset API.
Devi abilitare l'API nel progetto o nell'organizzazione in cui vuoi analizzare i criteri di autorizzazione esistenti.
Installa e inizializza gcloud CLI. Per un'installazione esistente, esegui l'aggiornamento alla versione più recente con il comando:
gcloud components update
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per analizzare i criteri di autorizzazione e concedere l'accesso ai repository Artifact Registry, chiedi all'amministratore di concederti i seguenti ruoli IAM per il progetto, la cartella o l'organizzazione di cui vuoi esaminare le autorizzazioni:
-
Cloud Asset Viewer (
roles/cloudasset.viewer
) -
Per analizzare i criteri con ruoli IAM personalizzati:
Visualizzatore ruoli (
roles/iam.roleViewer
) -
Per utilizzare Google Cloud CLI per analizzare i criteri:
Consumatore di utilizzo del servizio (
roles/serviceusage.serviceUsageConsumer
) - Per concedere i ruoli in un repository Artifact Registry: Artifact Registry Administrator
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per analizzare le norme di autorizzazione e concedere l'accesso ai repository Artifact Registry. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per analizzare i criteri di autorizzazione e concedere l'accesso ai repository Artifact Registry sono necessarie le seguenti autorizzazioni:
-
cloudasset.assets.analyzeIamPolicy
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.searchAllIamPolicies
-
Per analizzare i criteri con ruoli IAM personalizzati:
iam.roles.get
-
Per utilizzare Google Cloud CLI per analizzare i criteri:
serviceusage.services.use
-
Per concedere i ruoli in un repository Artifact Registry:
artifactregistry.repositories.setIamPolicy
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Utilizzare lo strumento di mappatura
Lo strumento di mappatura controlla i criteri di autorizzazione per un nome host Container Registry specificato, ad esempio gcr.io
.
Lo strumento controlla la presenza di insiemi di autorizzazioni nei ruoli predefiniti di Cloud Storage e li mappa ai ruoli di Artifact Registry. Per un confronto tra le autorizzazioni di Cloud Storage e i ruoli di Artifact Registry, consulta Mappature dei ruoli.
Per utilizzare lo strumento di mappatura dei ruoli:
Esegui lo strumento di mappatura:
gcloud beta artifacts docker upgrade print-iam-policy HOSTNAME \ --project=PROJECT_ID > POLICY_FILENAME
Sostituisci i seguenti valori:
HOSTNAME è il nome host di Container Registry che vuoi analizzare con lo strumento:
gcr.io
asia.gcr.io
eu.gcr.io
us.gcr.io
PROJECT_ID è l'ID del progetto Google Cloud con l'host del registry che stai analizzando.
POLICY_FILE è il nome del file del criterio in formato YAML che verrà restituito dallo strumento.
Il seguente comando di esempio analizza il bucket di archiviazione per
gcr.io
nel progettomy-project
per i criteri di autorizzazione applicati direttamente al bucket o ereditati dall'ID organizzazione principale101231231231
e dai relativi discendenti.gcloud beta artifacts docker upgrade print-iam-policy gcr.io \ --project=my-project > gcr-io-policy.yaml
Il comando restituisce un file di criteri in formato YAML con le associazioni dei ruoli di Artifact Registry, in base ai criteri di autorizzazione esistenti per il bucket di archiviazione. Se il progetto principale per il bucket di archiviazione si trova in un'organizzazione, il file di criteri include le entità a cui è stato concesso l'accesso a livello di cartella o organizzazione.
Ad esempio, il seguente esempio include associazioni di ruoli di Artifact Registry per:
- Agenti di servizio Cloud Build, Compute Engine e Container Registry. Gli agenti di servizio agiscono per conto dei servizi Google Cloud.
- L'account utente
user@example.com
- L'account di servizio gestito dall'utente
deploy@my-project.iam.gserviceaccount.com
.
bindings: - members: - service-3213213213213@gcp-sa-cloudbuild.iam.gserviceaccount.com - user:user@example.com role: roles/artifactregistry.repoAdmin - members: - serviceAccount:deploy@my-project.iam.gserviceaccount.com - serviceAccount:service-1231231231231@@compute-system.iam.gserviceaccount.com - serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com role: roles/artifactregistry.reader
Rimuovi la riga relativa all'agente di servizio Container Registry dal file delle norme, poiché questo account di servizio non richiede l'accesso ai repository Artifact Registry. Il suffisso dell'indirizzo email dell'agente di servizio è
containerregistry.iam.gserviceaccount.com
.Nel criterio di esempio del passaggio precedente, la riga con l'agente del servizio Container Registry è:
- serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
Controlla le altre associazioni di ruoli per verificare che siano appropriate.
Artifact Registry dispone di altri ruoli predefiniti che potresti considerare per alcuni principali. Ad esempio, il ruolo Artifact Registry Create-on-push Repository Administrator consente a un utente di creare repository gcr.io in Artifact Registry, ma non consente di creare altri repository Artifact Registry.
Aggiungi associazioni di ruolo per eventuali entità mancanti nel file del criterio.
Nel file delle norme restituito potrebbero mancare i seguenti principali:
- Entità con ruoli personalizzati che non dispongono degli assiemi di autorizzazioni utilizzati dallo strumento per eseguire la mappatura dei ruoli.
- Principali a cui è stato concesso l'accesso a una cartella o un'organizzazione principale se non disponi delle autorizzazioni per visualizzare una cartella o un'organizzazione principale.
Applica le associazioni dei criteri ai tuoi repository Artifact Registry.
gcloud artifacts repositories set-iam-policy REPOSITORY FILENAME \ --project=PROJECT_ID \ --location=LOCATION
Sostituisci i seguenti valori:
- REPOSITORY è il nome del repository.
- POLICY_FILENAME è il nome del file delle norme che stai applicando al repository.
- PROJECT_ID è l'ID progetto.
- LOCATION è la posizione regionale o multiregionale del repository.
L'esempio seguente per il progetto
my-project
applica il criterio nel filegcr-io-policy.yaml
al repository denominatogcr.io
nella regione con più aree geograficheus
:gcloud artifacts repositories set-iam-policy gcr.io gcr-io-policy.yaml \ --project=my-project \ --location=us
Se vuoi applicare associazioni di ruoli a una risorsa di livello superiore, modifica il criterio del progetto, della cartella o dell'organizzazione esistente con le associazioni che vuoi aggiungere.
Mappature dei ruoli
La tabella seguente mostra quali ruoli predefiniti di Artifact Registry devono essere concessi agli utenti esistenti di Container Registry in base alle autorizzazioni di Cloud Storage di cui dispongono.
Autorizzazioni richieste nel ruolo | Ruolo Artifact Registry |
---|---|
storage.objects.get storage.objects.list |
Artifact Registry Reader |
storage.buckets.get storage.objects.get storage.objects.list storage.objects.create |
Artifact Registry Writer |
storage.buckets.get storage.objects.get storage.objects.list storage.objects.create storage.objects.delete |
Amministratore repository Artifact Registry |
storage.buckets.get storage.objects.get storage.objects.list storage.objects.create storage.buckets.create |
Artifact Registry Administrator |