Container Registry e Artifact Registry utilizzano ruoli di Identity and Access Management 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 i criteri di autorizzazione applicabili a un bucket Cloud Storage che archivia le immagini per Container Registry
- Restituisce un criterio con ruoli Artifact Registry simili in modo che tu possa concedere agli utenti di Container Registry esistenti l'accesso ai repository Artifact Registry.
Il comando utilizza l'Analizzatore criteri IAM per analizzare i criteri di autorizzazione IAM.
Prima di iniziare
Attiva 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 utilizzando 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 sul progetto, sulla cartella o sull'organizzazione che vuoi analizzare per ottenere le autorizzazioni:
-
Visualizzatore Cloud Asset (
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:
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) - Per concedere i ruoli su un repository Artifact Registry: Amministratore di Artifact Registry
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per analizzare i criteri di autorizzazione e concedere l'accesso ai repository Artifact Registry. Per visualizzare le autorizzazioni esatte necessarie, 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 su un repository Artifact Registry:
artifactregistry.repositories.setIamPolicy
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Utilizzare lo strumento di mappatura
Lo strumento di mappatura controlla i criteri consentiti per un nome host di Container Registry specificato, come gcr.io
.
Lo strumento verifica la presenza di insiemi di autorizzazioni presenti 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 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 venga analizzato dallo strumento:
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 del criterio, in formato YAML, che verrà restituito dallo strumento.
Il comando di esempio seguente analizza il bucket di archiviazione per
gcr.io
nel progettomy-project
al fine di individuare i criteri di autorizzazione applicati direttamente al bucket o ereditati 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 dei criteri in formato YAML con associazioni di ruoli 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 dei 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 Artifact Registry per:
- Agenti di servizio di Cloud Build, Compute Engine e Container Registry. Gli agenti di servizio sono account di servizio gestiti da Google che 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 dell'agente di servizio Container Registry dal file dei criteri, poiché tale 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 di servizio di Container Registry è:
- serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
Esamina le altre associazioni di ruoli per verificare che siano appropriate.
Artifact Registry dispone di altri ruoli predefiniti che potresti prendere in considerazione per alcune entità. Ad esempio, l'amministratore del repository Create-on-push di Artifact Registry consente a un'entità di creare repository gcr.io in Artifact Registry, ma non permette di creare altri repository Artifact Registry.
Aggiungi associazioni di ruoli per le entità mancanti nel file dei criteri.
Nel file dei criteri restituito potrebbero mancare le seguenti entità:
- Le entità con ruoli personalizzati e questi ruoli personalizzati non dispongono degli insiemi di autorizzazioni utilizzati dallo strumento per mappare i ruoli.
- Entità a cui è stato concesso l'accesso su una cartella o un'organizzazione padre se non disponi delle autorizzazioni per visualizzare una cartella o un'organizzazione principale.
Applica le associazioni di 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 di criteri che stai applicando al repository.
- PROJECT_ID è l'ID progetto.
- LOCATION è la località a livello di una o più regioni del repository.
L'esempio seguente 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 associazioni di ruoli a una risorsa di livello superiore, modifica il criterio di progetto, cartella o organizzazione esistente con le associazioni che vuoi aggiungere.
Mappature dei ruoli
La seguente tabella mostra quali ruoli di Artifact Registry predefiniti dovrebbero essere concessi agli utenti di Container Registry esistenti in base alle autorizzazioni di Cloud Storage di cui dispongono.
Autorizzazioni richieste nel ruolo | Ruolo Artifact Registry |
---|---|
storage.objects.get storage.objects.list |
Lettore Artifact Registry |
storage.buckets.get storage.objects.get storage.objects.list storage.objects.create |
Writer Artifact Registry |
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 |
Amministratore di Artifact Registry |