Questo documento mostra come mappare i ruoli Container Registry ai ruoli 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 ruoli Identity and Access Management (IAM) diversi per controllare l'accesso alle immagini container archiviate nel registro.
Per facilitare la transizione da Container Registry ad Artifact Registry, puoi eseguire un comando Google Cloud CLI che:
- Identifica le policy di autorizzazione che si applicano a un bucket di archiviazione Cloud Storage che archivia le immagini per Container Registry
- Restituisce una policy con ruoli Artifact Registry simili in modo da poter concedere agli utenti Container Registry esistenti l'accesso ai repository Artifact Registry.
Il comando utilizza IAM Policy Analyzer per analizzare le policy 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 eseguire la migrazione manuale ai repositorypkg.dev
.Enable the Cloud Asset API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.Devi abilitare l'API nel progetto in cui vuoi analizzare le policy di autorizzazione esistenti.
Installa e inizializza gcloud CLI. Per un'installazione esistente, esegui l'aggiornamento all'ultima versione con il comando:
gcloud components update
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per analizzare le policy di autorizzazione e concedere l'accesso ai repository Artifact Registry, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto, sulla cartella o sull'organizzazione che vuoi analizzare per le autorizzazioni:
-
Visualizzatore di asset Cloud (
roles/cloudasset.viewer
) -
Per analizzare i criteri con ruoli IAM personalizzati:
Visualizzatore ruoli (
roles/iam.roleViewer
) -
Per utilizzare Google Cloud CLI per analizzare le policy:
Consumer di Service Usage (
roles/serviceusage.serviceUsageConsumer
) - Per concedere ruoli su un repository Artifact Registry: Artifact Registry Administrator
Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per analizzare le policy di autorizzazione e concedere l'accesso ai repository Artifact Registry. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per analizzare le policy 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 ruoli su un repository Artifact Registry:
artifactregistry.repositories.setIamPolicy
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Utilizzare lo strumento di mapping
Lo strumento di mappatura controlla i criteri di autorizzazione per un nome host Container Registry specificato, ad esempio gcr.io
.
Lo strumento verifica i set di autorizzazioni presenti nei ruoli Cloud Storage predefiniti e li mappa ai ruoli Artifact Registry. Per un confronto tra le autorizzazioni Cloud Storage e i ruoli 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 che lo strumento analizzi:
gcr.io
asia.gcr.io
eu.gcr.io
us.gcr.io
PROJECT_ID è l'ID del progetto Google Cloud con l'host del registro che stai analizzando.
POLICY_FILE è il nome file della policy, in formato YAML, che lo strumento restituirà.
Il seguente comando di esempio analizza il bucket di archiviazione per
gcr.io
nel progettomy-project
per le policy di autorizzazione applicate direttamente al bucket o ereditate dall'ID organizzazione padre101231231231
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 policy in formato YAML con i binding dei ruoli Artifact Registry, in base alle policy di autorizzazione esistenti per il bucket di archiviazione. Se il progetto padre per il bucket di archiviazione si trova in un'organizzazione, il file dei criteri include le entità a cui è stato concesso l'accesso a livello di cartella o organizzazione.
Ad esempio, il seguente campione include le associazioni di ruoli Artifact Registry per:
- agenti di servizio Cloud Build, Compute Engine e Container Registry. Gli agenti di servizio agiscono per conto dei serviziGoogle Cloud .
- L'account utente
user@example.com
- Il 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 per l'agente di servizio Container Registry dal file dei criteri, 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
.Nella policy di esempio del passaggio precedente, la riga con l'agente di servizio Container Registry è:
- serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
Esamina gli altri binding dei ruoli per verificare che siano appropriati.
Artifact Registry dispone di ruoli predefiniti aggiuntivi che potresti voler prendere in considerazione per alcune entità. Ad esempio, l'amministratore del repository Artifact Registry Create-on-Push consente a un principal di creare repository gcr.io in Artifact Registry, ma non di creare altri repository Artifact Registry.
Aggiungi le associazioni di ruolo per le entità mancanti nel file della policy.
Le seguenti entità potrebbero non essere presenti nel file della policy restituito:
- Entità con ruoli personalizzati e questi ruoli personalizzati non dispongono dei set di autorizzazioni che lo strumento utilizzava per mappare i ruoli.
- Entità a cui è stato concesso l'accesso a un'organizzazione o una cartella padre se non disponi delle autorizzazioni per visualizzare un'organizzazione o una cartella padre.
Applica i binding dei criteri ai 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.
Il seguente esempio per il progetto
my-project
applica il criterio nel filegcr-io-policy.yaml
al repository denominatogcr.io
nella località multiregionaleus
:gcloud artifacts repositories set-iam-policy gcr.io gcr-io-policy.yaml \ --project=my-project \ --location=us
Se vuoi applicare i binding dei ruoli a una risorsa di livello superiore, modifica la policy esistente per progetto, cartella o organizzazione con i binding che vuoi aggiungere.
Mappature dei ruoli
La tabella seguente mostra quali ruoli Artifact Registry predefiniti devono essere concessi agli utenti Container Registry esistenti a seconda delle autorizzazioni 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 |