Esta página contém informações de referência para políticas de autorização binária, conforme especificado no formato YAML. Ao configurar uma política usando a interface de linha de comando, você edita um arquivo no formato YAML que está em conformidade com essa especificação. Para exemplos de políticas no formato YAML, consulte Políticas de exemplo.
Os arquivos YAML da política têm o seguinte formato:
name: projects/<PROJECT_ID>/policy
admissionWhitelistPatterns:
- namePattern: <MATCHING_PATTERN>
- ...
globalPolicyEvaluationMode: <GLOBAL_EVAL_MODE>
defaultAdmissionRule:
<ADMISSION_RULE>
clusterAdmissionRules:
<CLUSTER_SPECIFIER>:
<ADMISSION_RULE>
...
Nós
O formato YAML tem os seguintes nós de nível superior:
Nó | Descrição | Obrigatório |
---|---|---|
name |
Nome da política. | Sim |
admissionWhitelistPatterns |
Especifica imagens de contêiner que sempre podem ser implantadas. | Não |
globalPolicyEvaluationMode |
Especifica se é necessário aplicar uma política do sistema que isenta as imagens do sistema do Google. | Não |
defaultAdmissionRule |
A regra a ser usada quando nenhuma regra específica se aplicar. | Sim |
clusterAdmissionRules |
Especifica regras que se aplicam a clusters específicos. | Não |
name
O nó name
contém o nome da política no seguinte formato:
name: projects/PROJECT_ID/policy
em que PROJECT_ID é o nome do projeto do Google Cloud em que a política está definida.
Por exemplo:
name: projects/example-project/policy
admissionWhitelistPatterns
admissionWhitelistPatterns
especifica uma lista de permissões de imagens de contêiner isentas da aplicação da política. Especifique o
caminho para as imagens no Container Registry e no Artifact Registry, em outro registro ou
em uma referência local no subnó namePattern
:
admissionWhitelistPatterns: - namePattern: MATCHING_PATTERN - ...
Substitua MATCHING_PATTERN por um caminho para uma única imagem ou
por um padrão correspondente que contenha um dos símbolos curinga (*
, **
).
Os caracteres curinga são válidos somente no final do padrão. Por exemplo,
gcr.io/my-project/nginx*
é um padrão válido, mas gcr.io/my-project/n*x
não é. O caractere curinga *
corresponde somente a imagens no diretório especificado. Por
exemplo, gcr.io/my-project/nginx*
corresponde a gcr.io/my-project/nginx:latest
,
mas não a gcr.io/my-project/nginx-images/nginx
. O caractere curinga **
corresponde a imagens
em subdiretórios. Por exemplo, o caminho gcr.io/my-project/nginx**
corresponde a
gcr.io/my-project/nginx-1.14.2/image:latest
.
O exemplo a seguir adiciona registros contendo imagens comumente usadas
do Google Kubernetes Engine (GKE), uma imagem localizada em
gcr.io/example-project/helloworld
e uma referência local a uma imagem à
lista de imagens isentas para a política:
admissionWhitelistPatterns: - namePattern: gcr.io/google-containers/* - namePattern: k8s.gcr.io/** - namePattern: gke.gcr.io/** - namePattern: gcr.io/gke-release/asm/* - namePattern: gcr.io/stackdriver-agents/* - namePattern: gcr.io/example-project/helloworld - namePattern: loc-ref
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:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/*
Para colocar uma imagem específica na lista de permissões:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld
Para colocar uma versão marcada na lista de permissões:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld:latest - namePattern: gcr.io/example-project/helloworld:my-tag - namePattern: gcr.io/example-project/helloworld:v1.*
Para autorizar uma versão específica de uma imagem pelo resumo:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c
Para colocar imagens na lista de permissões em subdiretórios de um caminho específico:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/**
globalPolicyEvaluationMode
O modo de avaliação de política do sistema
é uma configuraçã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 configurada. A política do sistema é 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 GKE não são bloqueadas pela aplicação da política. A política
do sistema é avaliada antes e além da avaliação da política do usuário,
incluindo admissionWhitelistPatterns
.
Para permitir todas as imagens do sistema mantidas pelo Google, defina a propriedade globalPolicyEvaluationMode
como ENABLE
:
globalPolicyEvaluationMode: ENABLE
Para desativar o modo de avaliação da política do sistema:
globalPolicyEvaluationMode: DISABLE
defaultAdmissionRule
defaultAdmissionRule
especifica a regra padrão da política. A regra padrão define as restrições que se aplicam a todas as imagens de contêiner não isentas, exceto aquelas que têm a própria regra específica do cluster. Você especifica a regra padrão usando a coleção ADMISSION_RULE:
defaultAdmissionRule: ADMISSION_RULE
O exemplo a seguir mostra uma regra padrão que permite a implantação apenas dessas imagens de contêiner que foram autorizadas pelo attestor especificado. Caso todos os atestadores necessários não tenham autorizado a imagem, a autorização binária bloqueia a implantação e grava no registro de auditoria.
defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/example-project/attestors/secure-build
clusterAdmissionRules
clusterAdmissionRules
declare regras específicas do cluster para a política.
As restrições nessas regras se aplicam apenas ao cluster especificado. Se a autorização binária aplicar uma regra específica do cluster a uma implantação, a regra padrão não será considerada. Assim como nas regras padrão, você especifica regras específicas do cluster usando a coleção ADMISSION_RULE:
clusterAdmissionRules: CLUSTER_SPECIFIER: ADMISSION_RULE
em que CLUSTER_SPECIFIER é o código do recurso do cluster ao qual a regra se aplica no formato location.name
(por exemplo, us-east1-a.prod-cluster
).
Os exemplos a seguir mostram uma regra específica do cluster que só permite a implantação dessas imagens de contêiner que foram autorizadas pelos atestadores especificados:
clusterAdmissionRules: us-east1-a.prod-cluster: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/example-project/attestors/secure-build - projects/example-project/attestors/prod-qualified
Coleções de nós
ADMISSION_RULE
ADMISSION_RULE
é uma coleção de nós que especificam as restrições da regra no seguinte formato:
evaluationMode: EVAL_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
defaultAdmissionRule
e clusterAdmissionRule
fazem referência a essa coleção.
evaluationMode
evaluationMode
especifica a operação que a autorização binária executa para avaliar se implantar uma imagem de contêiner. Os valores possíveis são:
ALWAYS_ALLOW
: sempre permitir a implantação de imagens avaliadas por esta regraALWAYS_DENY
: sempre negar a implantação de imagens avaliadas por essa regraREQUIRE_ATTESTATION
: exigir um ou mais atestadores para autorizar a versão antes da implantação
Se evaluationMode
for REQUIRE_ATTESTATION
, forneça uma referência aos atestadores necessários em requireAttestationsBy
.
enforcementMode
enforcementMode
especifica a ação que a autorização binária realiza se uma imagem de contêiner não estiver em conformidade com as restrições definidas na regra. Os valores possíveis são:
ENFORCED_BLOCK_AND_AUDIT_LOG
: bloqueia a implantação e grava no registro de auditoria.DRYRUN_AUDIT_LOG_ONLY
: permite a implantação de imagens não compatíveis e grava detalhes sobre a violação no registro de auditoria.
A maioria das regras de produção usa o modo de aplicação ENFORCED_BLOCK_AND_AUDIT_LOG
.
O DRYRUN_AUDIT_LOG_ONLY
é usado principalmente para testar uma política no seu ambiente antes que ela entre em vigor.
requireAttestationsBy
requireAttestationsBy
especifica um ou mais atestadores que precisam autorizar a versão antes que uma imagem de contêiner possa ser implantada. Isso é necessário apenas para regras REQUIRE_ATTESTATION
. O formato desse nó é:
requireAttestationsBy: - projects/PROJECT_ID/attestors/ATTESTOR_NAME - ...
em que PROJECT_ID é o nome do projeto em que os atestadores são definidos e ATTESTOR_NAME é o nome de um atestador que é necessário para assinar a versão.
O exemplo a seguir mostra como especificar atestadores:
requireAttestationsBy: - projects/example-project/attestors/secure-build - projects/example-project/attestors/prod-qualified