Como configurar controle de acesso

Esta página descreve as opções de controle de acesso disponíveis no Container Registry.

O Container Registry usa um intervalo do Cloud Storage como back-end para fornecer imagens de contêiner. É possível controlar quem tem acesso às imagens do Container Registry ajustando as permissões do intervalo do Cloud Storage.

Para gerenciar o controle de acesso no Cloud Storage, use o console do GCP ou a ferramenta de linha de comando gsutil. Consulte a documentação de gsutil iam para mais informações.

Permissões e papéis

A tabela a seguir explica as permissões e os papéis necessários para realizar as ações do Container Registry.

Ação Permissões Papel Título do papel
Enviar (leitura e gravação)

storage.buckets.create

storage.buckets.delete

storage.buckets.get

storage.buckets.list

storage.buckets.update

storage.objects.create

storage.objects.delete

storage.objects.get

storage.objects.list

storage.objects.update

roles/storage.admin Administrador do Storage
Extrair (somente leitura)

storage.objects.get

storage.objects.list

roles/storage.objectViewer Leitor de objetos do Storage

Como conceder acesso a um registro aos usuários e a outros projetos.

Para permitir que usuários ou clusters de contêiner específicos em execução em outras permissões de projetos extraiam as imagens de um registro, você precisa conceder permissão de leitura no intervalo subjacente do Cloud Storage. O intervalo que mantém as imagens terá um [BUCKET_NAME] com o formato:

  • artifacts.[PROJECT-ID].appspot.com para imagens enviadas a um registro no host gcr.io ou
  • [REGION].artifacts.[PROJECT-ID].appspot.com, em que:

    • [PROJECT-ID] é o código do projeto do console do Google Cloud Platform;
    • [REGION] é:
      • us para registros no host us.gcr.io
      • eu para registros no host eu.gcr.io
      • asia para registros no host asia.gcr.io

Você pode conceder permissão de leitura no intervalo subjacente do Cloud Storage usando o Console do Google Cloud Platform ou a linha de comando.

Console

  1. Visite a página do Cloud Storage no console do GCP.
  2. Clique em artifacts.[PROJECT-ID].appspot.com e/ou no link do intervalo [REGION].artifacts.[PROJECT-ID].appspot.com. Aqui, [PROJECT-ID] é o código do projeto do GCP que hospeda o Container Registry e [REGION] corresponde ao registro [REGION].gcr.io que hospeda a imagem.

  3. Selecione a guia Permissões.

  4. Clique em Adicionar membros.

  5. No menu exibido, preencha o campo Membros com os endereços de e-mail dos usuários que precisam da permissão de leitura, separados por vírgulas. O endereço de e-mail pode ser:

    • uma conta do Google (por exemplo, someone@example.com);
    • uma conta de serviço do Cloud IAM;
    • a conta de serviço padrão do Compute Engine de outro projeto. Essa conta é usada pelo Kubernetes Engine para extrair clusters de imagens de contêiner por padrão. Ela está no formato [PROJECT_NUMBER]-compute@developer.gserviceaccount.com, em que [PROJECT-NUMBER] é o número do projeto do GCP que está executando o cluster do Kubernetes Engine.
  6. Na categoria Armazenamento do menu suspenso Selecionar um papel, selecione Leitor de objetos do Storage.

  7. Clique em Adicionar.

Esse procedimento concede ao usuário permissão de leitura para o intervalo inteiro.

gsutil

Execute o seguinte comando no shell ou janela de terminal:

gsutil iam ch [TYPE]:[EMAIL-ADDRESS]:objectViewer gs://[BUCKET_NAME]

em que:

  • [TYPE] pode ser:
    • serviceAccount, se [EMAIL-ADDRESS] especificar uma conta de serviço;
    • user, se o [EMAIL-ADDRESS] for uma conta do Google.
  • [EMAIL-ADDRESS] pode ser:
    • uma conta do Google (por exemplo, someone@example.com);
    • uma conta de serviço do Cloud IAM;
    • a conta de serviço padrão do Compute Engine de outro projeto. Essa conta é usada pelo Kubernetes Engine para extrair clusters de imagens de contêiner por padrão. Ela está no formato [PROJECT_NUMBER]-compute@developer.gserviceaccount.com, em que [PROJECT-NUMBER] é o número do projeto do GCP que está executando o cluster do Kubernetes Engine.
  • [BUCKET_NAME] é o nome do intervalo do Cloud Storage que hospeda as imagens, conforme descrito acima.

O comando gsutil iam ch altera as permissões do IAM do intervalo de armazenamento em que o registro está hospedado. Você pode executar pull de imagens do registro com uma conta que tenha permissões de objectViewer.

Como veicular imagens publicamente

O Container Registry é acessível publicamente se o intervalo de armazenamento subjacente do local do host for acessível publicamente. Em um projeto, todas as imagens em cada local do host são públicas ou não. No host de um projeto, não é possível veicular publicamente apenas imagens específicas. Se você tiver imagens específicas que quer tornar públicas:

  • tenha o cuidado de mantê-las em um local de host separado que você torna público ou
  • crie um novo projeto para manter as imagens acessíveis publicamente.

Para disponibilizar imagens de contêiner publicamente, torne o intervalo de armazenamento subjacente do repositório acessível ao público. Basta seguir estas etapas:

  1. Primeiro, envie para o registro a imagem que você quer disponibilizar publicamente se ela não estiver no Container Registry. É necessário que haja pelo menos uma imagem no registro para que o intervalo de armazenamento subjacente exista. Para instruções, consulte Como enviar uma imagem para um registro.

  2. Encontre o nome do intervalo do Cloud Storage para esse registro. Para fazer isso, liste os intervalos:

    gsutil ls
    

    O URL do intervalo do Container Registry será listado como gs://artifacts.[PROJECT-ID].appspot.com ou gs://[REGION].artifacts.[PROJECT-ID].appspot.com, em que:

    • [PROJECT-ID] é o código do projeto do console do Google Cloud Platform (consulte Projetos de escopo de domínio para saber como trabalhar com códigos de projeto que incluem um domínio)
    • [REGION] é:
      • us para registros no host us.gcr.io
      • eu para registros no host eu.gcr.io
      • asia para registros no host asia.gcr.io
  3. Torne o intervalo de armazenamento do Container Registry acessível ao público. Basta executar o comando a seguir. Ele disponibiliza ao público todas as imagens no registro.

    gsutil iam ch allUsers:objectViewer gs://[BUCKET_NAME]
    

    em que:

    • gs://[BUCKET_NAME] é o URL do intervalo do Container Registry.

Como extrair imagens acessíveis ao público

Quando o Container Registry é acessível publicamente, qualquer pessoa pode extrair suas imagens. Para ver instruções, consulte Como extrair imagens de um registro.

Como revogar permissões

Console

  1. Visite a página do Cloud Storage no console do GCP.
  2. Clique em artifacts.[PROJECT-ID].appspot.com e/ou no link do intervalo [REGION].artifacts.[PROJECT-ID].appspot.com. Aqui, [PROJECT-ID] é o código do projeto do GCP que hospeda o Container Registry e [REGION] corresponde ao registro [REGION].gcr.io que hospeda a imagem.

  3. Selecione a guia Permissões.

  4. Clique no ícone da lixeira ao lado de qualquer membro que você quer remover.

gsutil

Execute o seguinte comando no shell ou janela de terminal:

gsutil iam ch -d [MEMBER] gs://[BUCKET_NAME]

em que:

  • [MEMBER] pode ser:
    • user:[EMAIL_ADDRESS] para uma conta do Google;
    • serviceAccount:[EMAIL_ADDRESS] para uma conta de serviço do Cloud IAM;
    • allUsers para revogar o acesso público.
  • [BUCKET_NAME] é o nome do intervalo pretendido
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…