Como configurar uma política usando a CLI

Nesta página, você verá instruções para configurar uma política de autorização binária na linha de comando usando comandos gcloud. Como alternativa, você também pode executar essas tarefas usando o Console do Google Cloud ou a API REST. Esta etapa faz parte da configuração da autorização binária.

Visão geral

Uma política é um conjunto de regras que regem a implantação de uma ou mais imagens de contêiner.

Ao configurar uma política na linha de comando, você a edita manualmente no formato YAML em um editor de texto. O formato YAML reflete a estrutura interna de uma política, conforme armazenado pela autorização binária. Para mais informações sobre esse formato, consulte a Referência do YAML de políticas.

Para configurar uma política, você precisa:

  • Exportar o arquivo YAML da política
  • Adicione outras imagens isentas (opcional)
  • Definir a regra padrão
  • Adicionar regras específicas do cluster (opcional)
  • Importar o arquivo YAML da política

A maioria das políticas do mundo real verifica se todos os atestadores necessários verificaram se uma imagem de contêiner está pronta para ser implantada. Nesse caso, você também precisa criar atestadores ao configurar a política.

Defina o projeto padrão.

Defina o projeto padrão do Google Cloud, caso ainda não tenha feito isso:

PROJECT_ID=PROJECT_ID
gcloud config set project ${PROJECT_ID}

Exportar o arquivo YAML da política

Exporte o arquivo YAML da política para o sistema local:

gcloud container binauthz policy export  > /tmp/policy.yaml

Por padrão, o arquivo tem o seguinte conteúdo:

admissionWhitelistPatterns:
- namePattern: gcr.io/google_containers/*
- namePattern: gcr.io/google-containers/*
- namePattern: k8s.gcr.io/*
- namePattern: gke.gcr.io/*
- namePattern: gcr.io/stackdriver-agents/*
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: ALWAYS_ALLOW
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
name: projects/PROJECT_ID/policy

Gerenciar imagens isentas

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 política pode ter uma lista de permissões de imagens isentas especificadas pelo caminho do registro. Esse caminho pode ser um local no Container Registry ou em outro registro de imagem de contêiner. Essa lista de permissões é adicionada às imagens isentas pelo modo de avaliação de política global, se ativado.

Para adicionar uma imagem isenta, adicione um nó namePattern em uma lista admissionWhitelistPatterns no arquivo policy.yaml:

admissionWhitelistPatterns:
- namePattern: MATCHING_PATTERN

em que MATCHING_PATTERN é o caminho para uma única imagem em seu registro por correspondência exata ou para qualquer imagem que corresponda a um padrão usando o símbolo de caractere curinga (*).

Modo de avaliação da política global

O modo de avaliação de política global é uma configuração de política que faz com que a autorização binária avalie uma política global antes de avaliar a política configurada como usuário. A política global é fornecida pelo Google e isenta uma lista de imagens de sistema mantidas pelo Google de avaliação adicional de política. Quando essa configuração está ativada, as imagens exigidas pelo Google Kubernetes Engine (GKE) não são bloqueadas pela aplicação da política. A política global é avaliada antes e depois da política do usuário.

É possível visualizar o conteúdo da política global usando o seguinte comando:

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

O modo de avaliação global de política torna desnecessário a especificação explícita de caminhos para imagens do sistema mantidas pelo Google em uma lista admissionWhitelistPatterns:

admissionWhitelistPatterns:
- namePattern: gcr.io/google_containers/*
- namePattern: gcr.io/google-containers/*
- namePattern: k8s.gcr.io/*
- namePattern: gke.gcr.io/*
- namePattern: gcr.io/stackdriver-agents/*

Para ativar o modo de avaliação de política global, adicione a seguinte linha ao arquivo policy.yaml:

globalPolicyEvaluationMode: ENABLE

Para desativar o modo de avaliação da política global, adicione o seguinte:

globalPolicyEvaluationMode: DISABLE

Definir a regra padrão

Uma regra é a parte de uma política que define as restrições que as imagens de contêiner precisam passar antes de serem implantadas. A regra padrão define restrições que se aplicam a todas as imagens de contêiner não isentas, com exceção das que têm a própria regra específica do cluster. Todas as políticas precisam ter uma regra padrão.

A regra padrão é definida no nó defaultAdmissionRule no arquivo YAML da política. Para mais informações sobre as partes desta regra, consulte ADMISSION_RULE na Referência da política de YAML. Para exemplos de regras padrão, consulte Políticas de exemplo.

Para definir a regra padrão, edite o nó defaultAdmissionRule no arquivo policy.yaml conforme necessário:

defaultAdmissionRule:
  evaluationMode: EVAL_MODE
  enforcementMode: ENFORCEMENT_MODE
  requireAttestationsBy:
  - ATTESTOR
  - ...

em que:

  • EVAL_MODE especifica o tipo de restrição que a autorização binária avalia antes de permitir que uma imagem de contêiner seja implantada.
  • ENFORCEMENT_MODE especifica a ação realizada se uma imagem de contêiner não estiver em conformidade com as restrições definidas na regra.
  • ATTESTOR especifica os atestadores (se necessário) que precisam assinar uma imagem de contêiner antes de implantá-la. Use o caminho totalmente qualificado para o atestador no formato projects/PROJECT_ID/attestors/ATTESTOR_NAME.

Se a regra verificar se todos os atestadores necessários assinaram uma imagem de contêiner, você precisará criar atestadores antes de concluir esta etapa.

Definir regras específicas do cluster (opcional)

Um cluster também pode ter uma ou mais regras específicas de cluster. Esse tipo de regra se aplica a imagens de contêiner que serão implantadas apenas em clusters específicos do GKE. As regras específicas do cluster são uma parte opcional de uma política.

As regras específicas do cluster são definidas nos nós clusterAdmissionRules no arquivo YAML da política. Para mais informações sobre as partes desta regra, consulte ADMISSION_RULE na Referência da política de YAML. Por exemplo, consulte Usar uma regra específica do cluster em Políticas de exemplo.

Para adicionar uma regra específica do cluster:

No arquivo policy.yaml, adicione um nó clusterAdmissionRules:

clusterAdmissionRules:
  CLUSTER_SPECIFIER:
    evaluationMode: EVAL_MODE
    enforcementMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - ATTESTOR
    - ...

em que: CLUSTER_SPECIFIER é o ID de recurso do cluster ao qual a regra se aplica no formato; location.name e as outras propriedades estão conforme descrito Definir a regra padrão acima. Consulte Políticas de exemplo para ver um exemplo de uma regra específica do cluster.

Se a regra verificar se todos os atestadores necessários assinaram uma imagem de contêiner, você precisará criar atestadores antes de concluir esta etapa.

Importar o arquivo YAML da política

A etapa final é importar o arquivo YAML da política de volta para a autorização binária.

Para importar o arquivo, digite o seguinte:

gcloud container binauthz policy import /tmp/policy.yaml

A seguir