Artifact Registry is the recommended service for managing container images. Container Registry is still supported but will only receive critical security fixes. Learn about transitioning to Artifact Registry.

Conta do serviço do Container Registry

O agente de serviço do Container Registry é uma conta de serviço gerenciada pelo Google que age em nome do Container Registry ao interagir com os serviços do Google Cloud.

Para impor o princípio de segurança do menor privilégio, essa conta de serviço recebe o papel de Agente de serviço do Container Registry em projetos em que a API Container Registry foi ativada após 5 de outubro de 2020. Esse papel tem as seguintes permissões:

  • Publicar tópicos: pubsub.topics.publish
  • Ler ACLs de objeto de armazenamento: storage.objects.getIamPolicy
  • Ler dados e metadados do objeto de armazenamento: storage.objects.get
  • Listar objetos de armazenamento em um bucket e ler metadados de objeto: storage.objects.list

Anteriormente, a conta de serviço do Container Registry tinha o papel Editor. Como o papel de Editor concede permissões para criar e excluir a maioria dos recursos em um projeto, recomendamos restringir as permissões se sua conta de serviço do Container Registry tiver esse papel.

Como encontrar o ID da conta de serviço

A conta de serviço do Container Registry tem o seguinte ID:

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com

Para encontrar a conta de serviço, veja a lista de principais que têm acesso ao seu projeto.

Console

  1. Acessar a página do IAM.

  2. Para adicionar contas gerenciadas pelo Google à lista de principais, marque a caixa de seleção Incluir concessões do papel fornecidas pelo Google.

  3. Para filtrar a lista, insira containerregistry no campo Filtro.

gcloud

Execute o seguinte comando para listar os principais que contêm a string containerregistry:

gcloud projects get-iam-policy PROJECT-ID \
    --flatten="bindings[].members"
    --filter="containerregistry"

Substitua PROJECT-ID pelo ID do projeto do Google Cloud.

Como verificar as permissões atuais

Para verificar as permissões atuais da conta de serviço do Container Registry, execute o comando:

gcloud projects get-iam-policy PROJECT-ID  \
    --flatten="bindings[].members" \
    --format='table(bindings.role)' \
    --filter="bindings.members:service-PROJECT-NUMBER@containerregistry.iam.gserviceaccount.com"

Onde

  • PROJECT-ID é o ID do projeto do Google Cloud;
  • PROJECT-NUMBER é o número do projeto do Google Cloud;

É possível encontrar o ID e o número do projeto no Console do Google Cloud ou com os seguintes comandos:

PROJECT=$(gcloud config get-value project)
echo $PROJECT && gcloud projects list --filter="$PROJECT" --format="value(PROJECT_NUMBER)"

Como alterar as permissões

Para conceder o papel de Agente de serviço do Container Registry e revogar o papel de editor:

  1. Conceda o papel Agente de serviço do Container Registry com o seguinte comando:

    gcloud projects add-iam-policy-binding PROJECT-ID \
    --member=serviceAccount:service-PROJECT-NUMBER@containerregistry.iam.gserviceaccount.com --role=roles/containerregistry.ServiceAgent
    
  2. Revogue o papel de editor com o seguinte comando:

    gcloud projects remove-iam-policy-binding PROJECT-ID \
    --member=serviceAccount:service-PROJECT-NUMBER@containerregistry.iam.gserviceaccount.com --role=roles/editor