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 conseguir 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