Como configurar o controle de acesso

Nesta página, descrevemos as opções de controle de acesso disponíveis no Container Registry e como usar uma chave de criptografia com esse produto.

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 do gsutil iam para mais informações.

Permissões e papéis

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

Se você estiver atribuindo um papel para um intervalo de armazenamento individual e não para todo o projeto do GCP, verifique se você enviou uma imagem por push para o Container Registry no local do host pretendido, para garantir que o intervalo de armazenamento subjacente existe.

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

Se você ativar Somente política do intervalo para qualquer intervalo de armazenamento, verifique se todos os usuários e contas de serviço do Container Registry têm as funções acima definidas explicitamente. Nesse caso, os papéis Proprietário e Editor por si só podem não ser suficientes para conceder as permissões necessárias.

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 outros 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. Você precisa ter enviado uma imagem ao Container Registry para que o intervalo de armazenamento subjacente exista.
  2. Visite a página do Cloud Storage no Console do GCP.
  3. Clique em artifacts.[PROJECT-ID].appspot.com e/ou no link do intervalo [REGION].artifacts.[PROJECT-ID].appspot.com. Neste caso, [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.

  4. Selecione a guia Permissões.

  5. Clique em Adicionar membros.

  6. 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 Google 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.
  7. Na categoria Storage do menu suspenso Selecionar um papel, selecione Visualizador de objetos do Storage.

  8. Clique em Adicionar.

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

gsutil

  1. Você precisa ter enviado uma imagem ao Container Registry para que o intervalo de armazenamento subjacente exista.
  2. 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 Google 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 veicular imagens de contêiner publicamente, disponibilize o intervalo de armazenamento subjacente do repositório ao público seguindo estas etapas:

Console

  1. Você precisa ter enviado uma imagem ao Container Registry para que o intervalo de armazenamento subjacente exista.

  2. Abra a página Container Registry no Console do GCP.

    Abrir a página do Container Registry

  3. No painel esquerdo, clique em Configurações.

  4. Na página Configurações, em Acesso público, alterne a visibilidade para Público ou Particular. Essa configuração controla o acesso ao intervalo de armazenamento subjacente.

    Quando a visibilidade do host é pública, todas as imagens do projeto do Google Cloud Platform que estão nesse local do host podem ser acessadas publicamente.

gsutil

  1. Você precisa ter enviado uma imagem ao Container Registry para que o intervalo de armazenamento subjacente exista.

  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 com 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, que disponibiliza ao público todas as imagens no intervalo.

    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 as imagens dele. Para instruções, consulte Como extrair imagens de um registro.

Como usar chaves de criptografia gerenciadas pelo cliente

É possível usar uma chave de criptografia do Cloud Key Management Service com o Container Registry. Para isso, use a chave de criptografia com o intervalo de armazenamento subjacente desta maneira:

  1. Você precisa ter enviado por push uma imagem ao Container Registry para que o intervalo de armazenamento subjacente exista.

  2. Siga as instruções do Cloud Storage em Como usar chaves de criptografia gerenciadas pelo cliente com o intervalo de armazenamento.

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. Neste caso, [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 desejado.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…