Mappare i ruoli IAM da Container Registry ad Artifact Registry

Container Registry e Artifact Registry utilizzano ruoli 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 immagini
  • Restituisce un criterio con ruoli Artifact Registry simili in modo da poter 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

  1. Attiva Cloud Asset API.

    Abilita l'API

    Devi abilitare l'API nel progetto o nell'organizzazione in cui vuoi analizzare i criteri di autorizzazione esistenti.

  2. 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 sul progetto, sulla cartella o sull'organizzazione che vuoi analizzare per le autorizzazioni:

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 esattamente le autorizzazioni necessarie, espandi la sezione Autorizzazioni obbligatorie:

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 ruoli in un repository Artifact Registry: artifactregistry.repositories.setIamPolicy

Potresti anche riuscire a ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

Utilizzare lo strumento di mappatura

Lo strumento di mappatura controlla che consenta i criteri per un host di Container Registry specificato, ad esempio gcr.io.

Lo strumento verifica la presenza di insiemi di autorizzazioni contenuti nei ruoli Cloud Storage predefiniti 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:

  1. 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 lo strumento deve analizzare:

      • 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 file del criterio, in formato YAML, che lo strumento restituirà.

    Il comando di esempio seguente analizza il bucket di archiviazione per gcr.io nel progetto my-project per individuare i criteri di autorizzazione applicati direttamente al bucket o ereditati dall'ID organizzazione padre 101231231231 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 padre per il bucket di archiviazione si trova in un'organizzazione, il file dei criteri include le entità con accesso concesso a livello di cartella o organizzazione.

    Ad esempio, l'esempio seguente include associazioni di ruolo 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
    
  2. Rimuovi la riga dell'agente di servizio di Container Registry dal file dei criteri, poiché questo account di servizio non richiede l'accesso ai tuoi 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
    
  3. Esamina le altre associazioni di ruoli per verificare che siano appropriate.

    Artifact Registry offre ruoli predefiniti aggiuntivi che potresti prendere in considerazione per alcune entità. Ad esempio, l'amministratore di repository Create-on-push di Artifact Registry consente a un'entità di creare repository gcr.io in Artifact Registry ma non consente di creare altri repository Artifact Registry.

  4. Aggiungi associazioni di ruoli per tutte le entità mancanti nel file del criterio.

    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 a una cartella o un'organizzazione padre se non disponi delle autorizzazioni per visualizzare una cartella o un'organizzazione padre.
  5. 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 dei criteri che applichi 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 file gcr-io-policy.yaml al repository denominato gcr.io nella zona multiregionale us:

    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 tabella seguente mostra quali ruoli predefiniti di Artifact Registry devono 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 Artifact Registry