Mappare i ruoli IAM da Container Registry ad Artifact Registry

Questo documento illustra come mappare i ruoli di Container Registry ai ruoli di Artifact Registry e applicarli a un repository Artifact Registry. Puoi svolgere gli stessi passaggi utilizzando 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 Cloud Storage Storage che archivia 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

  1. 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 repository standard.

  2. Enable the Cloud Asset API.

    Enable the API

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

  3. Installa e inizializza l'interfaccia a riga di comando gcloud. Per un 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 nel progetto, nella cartella o nell'organizzazione a cui analizza le autorizzazioni:

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 i criteri 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 Container Registry specificato nome host, ad esempio gcr.io.

Lo strumento verifica la presenza di insiemi di autorizzazioni predefinite i ruoli di Cloud Storage e li mappa ai ruoli di Artifact Registry. Per un confronto delle autorizzazioni Cloud Storage ai 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 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 registro 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 in nel progetto my-project per i criteri di autorizzazione applicati direttamente o che vengono ereditati dall'ID organizzazione padre 101231231231 e dei suoi 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 ruolo Artifact Registry associazioni, 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 criterio include le entità che hanno l'accesso concesso nella cartella o a livello di organizzazione.

    Ad esempio, il seguente esempio include associazioni di ruoli di Artifact Registry per:

    • Cloud Build, Compute Engine e Container Registry agenti di servizio. Gli agenti di servizio agiscono per conto dei servizi Google Cloud.
    • L'account utente user@example.com
    • L'account di servizio gestito dall'utentedeploy@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 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 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 dispone di altri ruoli predefiniti che potresti considerare per alcuni principali. Ad esempio Artifact Registry L'amministratore di repository Create-on-push consente a un'entità di creare gcr.io in Artifact Registry, ma non ne consente la creazione in altri repository Artifact Registry.

  4. Aggiungi associazioni di ruolo per eventuali entità mancanti nel file dei criteri.

    Nel file delle norme restituito potrebbero mancare i seguenti principali:

    • Entità con ruoli personalizzati che non dispongono degli insieme 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.
  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 delle norme che stai applicando al repository.
    • PROJECT_ID è l'ID progetto.
    • LOCATION indica una o più regioni località del repository.

    Nell'esempio seguente per il progetto my-project il criterio viene applicato in il file gcr-io-policy.yaml nel repository denominato gcr.io in us più regioni:

    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 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 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
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
Artifact Registry Administrator