Mapeie funções de IAM do Container Registry para o Artifact Registry

Este documento mostra como mapear funções do Container Registry para funções do Artifact Registry e aplicá-las a um repositório do Artifact Registry. Pode seguir os mesmos passos com a ferramenta de migração automática.

O Container Registry e o Artifact Registry usam funções de gestão de identidade e de acesso (IAM) diferentes para controlar o acesso a imagens de contentores armazenadas no registo.

Para ajudar na transição do Container Registry para o Artifact Registry, pode executar um comando da CLI gcloud que:

  • Identifica as políticas de autorização que se aplicam a um contentor de armazenamento do Cloud Storage que armazena imagens para o Container Registry
  • Devolve uma política com funções semelhantes do Artifact Registry para que possa conceder aos utilizadores existentes do Container Registry acesso aos repositórios do Artifact Registry.

O comando usa o IAM Policy Analyzer para analisar as políticas de autorização do IAM.

Antes de começar

  1. Crie um repositório do Artifact Registry. Se escolheu o método manual para fazer a transição, siga os passos para migrar manualmente para repositórios gcr.io no Artifact Registry ou migrar manualmente para repositórios pkg.dev.

  2. Enable the Cloud Asset API.

    Enable the API

    Tem de ativar a API no projeto onde quer analisar as políticas de autorização existentes.

  3. Instale e inicialize a CLI gcloud. Para uma instalação existente, atualize para a versão mais recente com o comando:

    gcloud components update
    

Funções necessárias

Para receber as autorizações de que precisa para analisar as políticas de autorização e conceder acesso aos repositórios do Artifact Registry, peça ao seu administrador que lhe conceda as seguintes funções do IAM no projeto, na pasta ou na organização que quer analisar para autorizações:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para analisar as políticas de autorização e conceder acesso aos repositórios do Artifact Registry. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para analisar políticas de permissão e conceder acesso a repositórios do Artifact Registry:

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • Para analisar políticas com funções de IAM personalizadas: iam.roles.get
  • Para usar a CLI do Google Cloud para analisar políticas: serviceusage.services.use
  • Para conceder funções num repositório do Artifact Registry: artifactregistry.repositories.setIamPolicy

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Use a ferramenta de mapeamento

A ferramenta de mapeamento verifica as políticas de autorização para um nome de anfitrião do Container Registry especificado, como gcr.io.

A ferramenta verifica conjuntos de autorizações que estão em funções do Cloud Storage predefinidas e mapeia-as para funções do Artifact Registry. Para uma comparação das autorizações do Cloud Storage com as funções do Artifact Registry, consulte Mapeamentos de funções.

Para usar a ferramenta de mapeamento de funções:

  1. Execute a ferramenta de mapeamento:

    gcloud beta artifacts docker upgrade print-iam-policy HOSTNAME \
        --project=PROJECT_ID > POLICY_FILENAME
    

    Substitua os seguintes valores:

    • HOSTNAME é o nome do anfitrião do Container Registry que quer que a ferramenta analise:

      • gcr.io
      • asia.gcr.io
      • eu.gcr.io
      • us.gcr.io
    • PROJECT_ID é o ID do projeto Google Cloud com o anfitrião do registo que está a analisar.

    • POLICY_FILE é o nome do ficheiro da política, no formato YAML, que a ferramenta devolve.

    O comando de exemplo seguinte analisa o contentor de armazenamento para gcr.io no projeto my-project para políticas de autorização que são aplicadas diretamente ao contentor ou são herdadas do ID da organização principal 101231231231 e dos respetivos descendentes.

    gcloud beta artifacts docker upgrade print-iam-policy gcr.io \
        --project=my-project > gcr-io-policy.yaml
    

    O comando devolve um ficheiro de política no formato YAML com associações de funções do Artifact Registry, com base nas políticas de autorização existentes para o contentor de armazenamento. Se o projeto principal do contentor de armazenamento estiver numa organização, o ficheiro de política inclui responsáveis que têm acesso concedido ao nível da pasta ou da organização.

    Por exemplo, o exemplo seguinte inclui associações de funções do Artifact Registry para:

    • Agentes de serviço do Cloud Build, Compute Engine e Container Registry. Os agentes de serviços atuam em nome dos serviços de Google Cloud .
    • A conta de utilizador user@example.com
    • A conta de serviço gerida pelo utilizador 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. Remova a linha do agente do serviço do Container Registry do ficheiro de política, uma vez que essa conta de serviço não requer acesso aos seus repositórios do Artifact Registry. O sufixo do endereço de email do agente do serviço é containerregistry.iam.gserviceaccount.com.

    Na política de exemplo do passo anterior, a linha com o agente de serviço do Container Registry é:

    - serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
    
  3. Reveja as outras associações de funções para confirmar que são adequadas.

    O Artifact Registry tem funções predefinidas adicionais que pode querer considerar para alguns responsáveis. Por exemplo, o administrador do repositório de criação no envio do Artifact Registry permite que um principal crie repositórios gcr.io no Artifact Registry, mas não lhe permite criar outros repositórios do Artifact Registry.

  4. Adicione associações de funções para todos os responsáveis que estejam em falta no ficheiro de política.

    Os seguintes principais podem estar em falta no ficheiro de política devolvido:

    • Principais com funções personalizadas e essas funções personalizadas não têm os conjuntos de autorizações que a ferramenta usava para mapear funções.
    • Diretores que receberam acesso numa pasta principal ou numa organização se não tiver autorizações para ver uma pasta principal ou uma organização.
  5. Aplique as associações de políticas aos seus repositórios do Artifact Registry.

    gcloud artifacts repositories set-iam-policy REPOSITORY FILENAME \
        --project=PROJECT_ID \
        --location=LOCATION
    

    Substitua os seguintes valores:

    • REPOSITORY é o nome do repositório.
    • POLICY_FILENAME é o nome do ficheiro de política que está a aplicar ao repositório.
    • PROJECT_ID é o ID do projeto.
    • LOCATION é a localização regional ou multirregional do repositório.

    O exemplo seguinte para o projeto my-project aplica a política no ficheiro gcr-io-policy.yaml ao repositório denominado gcr.io na us multirregião:

    gcloud artifacts repositories set-iam-policy gcr.io gcr-io-policy.yaml \
        --project=my-project \
        --location=us
    

    Se quiser aplicar associações de funções a um recurso de nível superior, edite a política de organização, pasta ou projeto existente com as associações que quer adicionar.

Mapeamentos de funções

A tabela seguinte mostra as funções predefinidas do Artifact Registry que devem ser concedidas aos utilizadores existentes do Container Registry, consoante as autorizações do Cloud Storage que têm.

Autorizações necessárias na função Função do Artifact Registry
storage.objects.get
storage.objects.list
Leitor do Artifact Registry
storage.buckets.get
storage.objects.get
storage.objects.list
storage.objects.create
Escritor do Artifact Registry
storage.buckets.get
storage.objects.get
storage.objects.list
storage.objects.create
storage.objects.delete
Administrador do repositório do Artifact Registry
storage.buckets.get
storage.objects.get
storage.objects.list
storage.objects.create
storage.buckets.create
Administrador do Artifact Registry