Principais conceitos

Nesta página, você verá informações sobre conceitos principais relacionados à autorização binária.

Políticas

Uma política na autorização binária é um conjunto de regras que regem a implantação de imagens de contêiner no Google Kubernetes Engine (GKE). Uma política tem as seguintes partes:

Você pode configurar uma política usando uma das seguintes opções:

  • Console do Google Cloud
  • gcloud commands

Ao usar os comandos gcloud, exporte e modifique uma definição da política no formato YAML antes de importá-la de volta para o projeto. O formato YAML reflete a estrutura interna de uma política no armazenamento de autorização binária. Para mais informações sobre esse formato, consulte a Referência do YAML de políticas.

Cada projeto do Google Cloud Platform (GCP) pode ter exatamente uma política. Em uma configuração de projeto único, essa política rege a implantação no GKE, em que todos os recursos no pipeline de implantação fazem parte do mesmo projeto. Para uma configuração de vários projetos, é possível que uma única política controle a implantação de imagens do Container Registry em um projeto para um cluster do GKE em execução em outro projeto.

Para mais informações, consulte Como configurar uma política usando a CLI e Como configurar uma política usando o Console.

Regras

Uma regra é a parte de uma política que define restrições que as imagens de contêiner precisam passar antes de serem implantadas. Na maioria das vezes, uma regra exigirá um ou mais atestados assinados digitalmente. Quando a assinatura em cada atestado obrigatório é verificada, indicando que todos os processos internos necessários foram concluídos, o contêiner pode ser implantado. Uma regra também pode permitir ou negar todas as implantações de caminhos específicos do Container Registry e/ou para clusters específicos do GKE.

Você define regras ao configurar uma política. Uma política tem uma regra padrão e qualquer número de regras específicas de cluster.

Regras padrão

Cada política tem uma regra padrão. Essa regra se aplica a qualquer solicitação de implantação que não corresponda a uma regra específica do cluster. Se a política não tiver uma regra específica do cluster, a regra padrão sempre será aplicada. Em um arquivo YAML de política, a regra padrão é especificada no nó defaultAdmissionRule.

Regras específicas do cluster

Uma política também pode ter uma ou mais regras específicas do cluster. Esse tipo de regra se aplica a imagens de contêiner que serão implantadas apenas em clusters específicos do GKE. Em um arquivo YAML de política, cada regra específica do cluster é especificada em um nó clusterAdmissionRule.

Modos de avaliação

Cada regra tem um modo de avaliação que especifica o tipo de restrição que a autorização binária aplica para a regra. O modo de avaliação de uma regra é especificado usando a propriedade evaluationMode no arquivo YAML da política.

Há três modos de avaliação:

  • Permitir todas as imagens
  • Negar todas as imagens
  • Exigir atestados

Uma regra Exigir atestados requer um signatário para assinar digitalmente o resumo da imagem do contêiner e criar um atestado antes da implantação. No momento da implantação, o aplicador de autorização binária usa um atestador para verificar a assinatura no atestado antes de implantar a imagem de contêiner associada.

Modos de aplicação

Cada regra também tem um modo de aplicação, que especifica a ação executada pelo GKE quando uma imagem não está em conformidade com a regra. Uma regra pode ter os seguintes modos de aplicação:

  • Bloquear e registrar registros: bloqueia a implantação de imagens que não estão em conformidade com a regra e grava uma mensagem no registro de auditoria para indicar por que a imagem não foi implantada.

  • Teste de simulação: somente registro de auditoria: permite a implantação de imagens não compatíveis, mas grava detalhes sobre qualquer violação no registro de auditoria.

A maioria das regras de produção usa o modo de aplicação Bloquear o registro de auditoria. Simulação: somente registro de auditoria é usado principalmente para testar uma política no ambiente antes de entrar em vigor.

O modo de aplicação de uma regra é especificado usando a propriedade enforcementMode no arquivo YAML da política.

Consulte Como visualizar registros de auditoria para mais informações sobre mensagens gravadas no Cloud Logging.

Isentar imagens

Uma imagem isenta é uma imagem de contêiner isenta de regras de política. A autorização binária sempre permite a implantação de imagens isentas. Cada projeto tem uma lista de permissões de imagens isentas especificadas pelo caminho do registro. As imagens no caminho gcr.io/google_containers/*, k8s.gcr.io/* e outros caminhos são isentas por padrão, porque contêm recursos necessários para que o GKE possa iniciar um cluster com a política padrão ativa.

A lista de permissões de imagens isentas é especificada usando a propriedade admissionWhitelistPatterns no arquivo YAML da política.

Padrões da lista de permissões

Para colocar todas as imagens de contêiner com local de registro que corresponda ao caminho especificado na lista de permissões:

gcr.io/example-project/*

Para colocar uma imagem específica na lista de permissões:

gcr.io/example-project/helloworld

Para colocar uma versão específica de uma imagem na lista de permissões por tag:

gcr.io/example-project/helloworld:latest
gcr.io/example-project/helloworld:my-tag

Para autorizar uma versão específica de uma imagem pelo resumo:

gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c

Imagens do sistema mantidas pelo Google

Confiar em todas as imagens do sistema mantidas pelo Google faz com que a autorização binária isenta uma lista de imagens do sistema mantidas pelo Google para avaliação adicional de política. Quando essa configuração está ativada, as imagens exigidas pelo GKE não são bloqueadas pela aplicação da política. A política global é avaliada antes e depois da avaliação da política do usuário.

Você pode ativar ou desativar essa configuração usando a propriedade globalPolicyEvaluationMode no arquivo YAML da política. Visualize o conteúdo da política global usando o seguinte comando:

gcloud container binauthz policy export --project=binauthz-global-policy

Atestados

Um atestado é um documento digital que certifica que o GKE tem permissão para implantar a imagem do contêiner.

O processo de criação de um atestado às vezes é chamado de "assinatura de imagem". Um atestado é criado após a criação de uma imagem de contêiner. Cada contêiner tem um resumo globalmente exclusivo. Um signer gera a assinatura do resumo da imagem do contêiner usando uma chave privada de um par de chaves e usa a assinatura para criar o atestado. No momento da implantação, o aplicador de autorização binária usa a chave pública do atestador para verificar a assinatura no atestado. Normalmente, um atestador corresponde exatamente a um signatário.

Um atestado significa que a imagem de contêiner associada foi criada por uma execução bem-sucedida de um processo específico. Por exemplo, se o signatário representar sua função de controle de qualidade, o atestado poderá indicar que a imagem do contêiner foi aprovada em todos os testes funcionais de ponta a ponta em um ambiente de teste.

Para ativar atestados na autorização binária, o enforcementMode da política está definido como REQUIRE_ATTESTATION.

Consulte a visão geral da autorização binária para casos de uso típicos.

Para saber como criar um atestado, consulte Como criar atestados.

Signatários

Um signatário é uma pessoa ou um processo automatizado que cria um atestado assinando um descritor de imagem de contêiner exclusivo com uma chave privada. O atestado é verificado no momento da implantação pela chave pública correspondente armazenada em um attestor antes de o contêiner associado ser implantado.

Atestadores

Um atestador é um recurso do GCP que a autorização binária usa para verificar o atestado no momento da implantação da imagem do contêiner. Os atestadores contêm a chave pública que corresponde à chave privada usada por um signatário para assinar o resumo da imagem do contêiner e criar o atestado. O aplicador de autorização binária usa o atestador no momento da implantação para limitar quais imagens de contêiner podem ser implantadas para aquelas com um atestado verificável criado antes da implantação.

Assim, os atestadores podem ser gerenciados pela equipe de operações de segurança que também gerencia os pares de chaves públicas e privadas. Já os signatários geralmente são engenheiros de software ou controle de qualidade de DevOps ou de conformidade responsável pela produção de imagens de contêiner implantáveis, assinar com a chave privada e criando os atestados antes de tentar implantá-los.

Os atestadores têm:

Ao configurar uma política que contenha uma regra Exigir atestados, você precisa adicionar um atestador para cada pessoa ou processo necessário para verificar se a imagem do contêiner está pronta para implantação. Você pode adicionar atestadores usando o Google Cloud Console, a interface gcloud ou a API REST de autorização binária.

Para mais informações, consulte Como criar atestadores usando a CLI ou Como criar atestadores usando o Console.

Chaves de criptografia

A autorização binária usa assinaturas digitais para verificar imagens no momento da implantação quando a política contém uma regra Exigir atestados.

Um par de chaves é gerado. A chave privada é usada pelo assinante para assinar um descritor de imagem de contêiner. Isso cria um atestado.

Em seguida, um atestador é criado e armazenado na política. A chave pública que corresponde à chave privada usada para assinatura é enviada e anexada ao atestador.

No momento da implantação, o GKE chama o aplicador de autorização binária, que usa atestadores na política para verificar a validade dos atestados associados, garantindo que cada imagem de contêiner assinada digitalmente possa ser implantada.

A autorização binária é compatível com dois tipos de chaves:

As chaves PKIX podem ser armazenadas localmente, externamente ou no Cloud Key Management Service.

Observações do Container Analysis

A autorização binária usa o Container Analysis para armazenar metadados confiáveis usados no processo de autorização. Para cada atestador criado, você precisa criar uma nota do Container Analysis. Cada atestado é armazenado como uma ocorrência desta nota.

Quando a autorização binária avalia uma regra que exige que os atestadores verifiquem uma imagem, ela verifica o armazenamento do Container Analysis para ver se os atestados necessários estão presentes.