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