Esta página fornece instruções para configurar uma política de autorização binária através da API REST. Em alternativa, também pode realizar estas tarefas através da CLI do Google Cloud ou da Google Cloud consola. Este passo faz parte da configuração da autorização binária.
Vista geral
Uma política é um conjunto de regras que regem a implementação de uma ou mais imagens de contentores.
Quando configura uma política através da API REST, preenche valores num formato JSON cuja estrutura é idêntica à estrutura YAML usada nas interações com o serviço.gcloud
Para mais informações, consulte o artigo
Referência de YAML de políticas.
A configuração de uma política requer que:
- Exporte um ficheiro JSON de políticas
- Adicione imagens isentas adicionais (opcional)
- Defina a regra predefinida
- Adicione regras específicas do cluster (opcional)
- Importe o ficheiro JSON da política
A maioria das políticas do mundo real verifica se todos os atestadores necessários validaram que uma imagem de contentor está pronta para ser implementada. Neste caso, também tem de criar atestadores quando configura a política.
Defina o projeto predefinido
Defina o Google Cloud projeto predefinido, se ainda não o tiver feito:
PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID}
onde PROJECT_ID é o ID do seu projeto.
Exporte a política
Esta secção aplica-se ao GKE, à Distributed Cloud, ao Cloud Run e ao Cloud Service Mesh.
Exporte a política para um ficheiro JSON no seu sistema local:
curl \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy" \ -o "/tmp/policy.json"
Por predefinição, o ficheiro tem o seguinte conteúdo:
{ "name": "projects/PROJECT_ID/policy", "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
Faça a gestão de imagens isentas
Esta secção aplica-se ao GKE, à Distributed Cloud, ao Cloud Run e ao Cloud Service Mesh.
Uma imagem isenta é uma imagem de contentor que está isenta das regras de políticas. A autorização binária permite sempre a implementação de imagens isentas.
Especifica as imagens isentas ao indicar os respetivos caminhos de registo em
admissionWhitelistPatterns
. O caminho pode referir-se ao
Container Registry ou a outro registo de imagens. O aplicador processa imagens isentas em admissionWhitelistPatterns
depois de imagens isentas pelo modo de avaliação da política do sistema.
Para adicionar uma imagem isenta, adicione um nó namePattern
numa lista admissionWhitelistPatterns
no ficheiro JSON da política:
{ "name": "projects/PROJECT_ID/policy", "admissionWhitelistPatterns": [ { "namePattern": "MATCHING_PATTERN" } ], ... }
onde MATCHING_PATTERN é o caminho para uma única imagem no seu registo
por correspondência exata ou para quaisquer imagens que correspondam a um padrão através do símbolo de caráter universal
(*
, **
).
Cloud Run
Esta secção aplica-se ao Cloud Run.
Não pode especificar diretamente nomes de imagens que contenham uma etiqueta. Por exemplo, não pode especificar
IMAGE_PATH
:latest.
Se quiser especificar nomes de imagens que contenham etiquetas, tem de especificar o nome da imagem com um caráter universal da seguinte forma:
*
para todas as versões de uma única imagem; por exemplo,us-docker.pkg.dev/myproject/container/hello@*
**
para todas as imagens num projeto; por exemplo,us-docker.pkg.dev/myproject/**
Pode usar nomes de caminhos para especificar um resumo no formato
IMAGE_PATH
@DIGEST
.
Modo de avaliação da política de sistemas
Esta secção aplica-se ao GKE e ao Distributed Cloud.
O modo de avaliação da política do sistema é uma definição de política que faz com que a autorização binária avalie uma política do sistema antes de avaliar a política que configura. A Google gere a política do sistema, que isenta uma lista de imagens do sistema mantidas pela Google que o GKE usa. As imagens indicadas na política de sistemas não são bloqueadas pela aplicação de políticas. Se não ativar a definição, tem de gerir a lista de imagens isentas. Saiba como gerir imagens isentas.
Pode ver o conteúdo da política de sistema através do seguinte comando:
gcloud alpha container binauthz policy export-system-policy
Para ativar o modo de avaliação de políticas do sistema, adicione o seguinte nó de nível superior ao ficheiro JSON de políticas:
"globalPolicyEvaluationMode": "ENABLE"
Para desativar o modo de avaliação da política de sistemas, adicione o seguinte:
"globalPolicyEvaluationMode": "DISABLE"
Pode exportar a política de sistema associada a uma região específica da seguinte forma:
gcloud alpha container binauthz policy export-system-policy \
--location=REGION > /tmp/policy.yaml
Substitua REGION pela região associada à política de sistemas que quer exportar (ou "global"). Os exemplos incluem: asia-east1
,
europe-west1
, us-central1
.
Se omitir --location
ou especificar --location=global
, o comando produz uma política do sistema de uma região no último grupo de regiões a receber atualizações. Uma vez que a maioria das alterações à política do sistema são adições, o resultado mostra o conjunto de imagens do sistema atualmente permitidas em todas as regiões.
Defina a regra predefinida
Esta secção aplica-se ao GKE, à Distributed Cloud, ao Cloud Run e ao Cloud Service Mesh.
Uma regra é a parte de uma política que define restrições que as imagens de contentores têm de cumprir antes de poderem ser implementadas. Cada pedido de admissão tem um cluster do GKE associado. Se um pedido não corresponder a uma regra específica do cluster, é usada a regra predefinida.
A regra predefinida está definida no nó defaultAdmissionRule
na política. Para mais informações sobre as partes desta regra, consulte ADMISSION_RULE na referência YAML da política. Para ver exemplos de regras predefinidas, consulte as
Políticas de exemplo.
Para definir a regra predefinida, edite o nó defaultAdmissionRule
no ficheiro JSON da política conforme necessário:
"defaultAdmissionRule": { "evaluationMode": "EVAL_MODE", "enforcementMode": "ENFORCEMENT_MODE" requireAttestationsBy: [ ATTESTOR, ... ] }
where:
- EVAL_MODE especifica o tipo de restrição que a autorização binária avalia antes de permitir a implementação de uma imagem de contentor.
- ENFORCEMENT_MODE especifica a ação que é realizada se uma imagem de contentor não estiver em conformidade com as restrições definidas na regra.
- ATTESTOR especifica os atestadores (se necessário) que têm de assinar uma imagem de contentor antes de poder ser implementada. Use o caminho totalmente qualificado para o atestador no formato
projects/PROJECT_ID/attestors/ATTESTOR_NAME
.
Se a sua regra verificar se todos os atestadores necessários assinaram uma imagem de contentor, tem de criar atestadores antes de concluir este passo.
Defina regras específicas do cluster (opcional)
Esta secção aplica-se ao GKE e ao Distributed Cloud.
Um cluster também pode ter uma ou mais regras específicas do cluster. Este tipo de regra aplica-se apenas ao cluster do GKE especificado. Se um cluster não tiver uma regra própria, é usada a regra predefinida. As regras específicas do cluster são uma parte opcional de uma política.
As regras específicas do cluster são definidas em nós clusterAdmissionRules
no ficheiro JSON da política. Para mais informações sobre as partes desta regra, consulte ADMISSION_RULE na referência YAML da política. Para ver um exemplo, consulte a secção
Use uma regra específica do cluster
em Exemplos de políticas.
Para adicionar uma regra específica do cluster:
No ficheiro JSON da política, adicione um nó clusterAdmissionRules
:
"clusterAdmissionRules": { "us-central1-a.test-cluster": { "evaluationMode": "REQUIRE_ATTESTATION", "requireAttestationsBy": [ "ATTESTOR", ... ], "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } },
em que CLUSTER_SPECIFIER é o ID do recurso do cluster ao qual a regra se aplica.
- Para o GKE, os clusters anexados do GKE e o GKE on AWS, o formato é
CLUSTER_LOCATION.CLUSTER_NAME
, por exemplo,us-central1-a.test-cluster
. - Para o Google Distributed Cloud e o Google Distributed Cloud,
o formato é
FLEET_MEMBERSHIP_LOCATION.FLEET_MEMBERSHIP_ID
. Por exemplo,global.test-membership
.
As outras propriedades são as descritas em Defina a regra predefinida , anteriormente neste guia. Consulte as Políticas de exemplo para ver um exemplo de uma regra específica do cluster.
Se a sua regra verificar se todos os atestadores necessários assinaram uma imagem de contentor, tem de criar atestadores antes de concluir este passo.
Importe o ficheiro JSON da política
Esta secção aplica-se ao GKE, à Distributed Cloud, ao Cloud Run e ao Cloud Service Mesh.
Importe novamente o ficheiro JSON da política para a Autorização binária introduzindo o seguinte:
curl -X PUT \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ --data-binary @/tmp/policy.json \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"