Nesta página, fornecemos instruções para configurar uma política de autorização binária usando a Google Cloud CLI. 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.
Para configurar uma política usando a ferramenta de linha de comando, exporte a política atual como um arquivo YAML. Depois de modificar o arquivo, você pode importá-lo para atualizar a política, conforme descrito posteriormente neste guia. Para mais informações sobre o formato YAML da política, consulte Referência do YAML de políticas.
Antes de começar
- Ative a autorização binária.
- Crie um cluster.
- Se você pretende usar atestados, recomendamos criar atestadores antes de configurar a política. É possível criar atestadores usando uma ferramenta de linha de comando ou pelo Console do Google Cloud.
Defina o ID do projeto em que você ativou a autorização binária:
PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID}
Exportar o arquivo YAML da política
Esta seção se aplica ao GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Para atualizar a política, primeiro exporte-a para um arquivo YAML local da seguinte maneira:
gcloud container binauthz policy export > /tmp/policy.yaml
Por padrão, o conteúdo do arquivo é semelhante ao seguinte:
defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_ALLOW globalPolicyEvaluationMode: ENABLE name: projects/PROJECT_ID/policy
Para modificar a política, edite o arquivo e adicione ou atualize seções, conforme descrito mais adiante neste guia. Depois de salvar o arquivo, importe a política.
Para adicionar uma imagem isenta à lista de permissões, inclua o seguinte no arquivo de política:
admissionWhitelistPatterns: - namePattern: EXEMPT_IMAGE_PATH
Substitua EXEMPT_IMAGE_PATH
pelo caminho para a imagem a ser isentada. Para isentar outras imagens, adicione outras entradas - namePattern
. Saiba mais sobre admissionWhitelistPatterns
.
Definir a regra padrão
Esta seção se aplica ao GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Uma regra é a parte de uma política que define restrições que as imagens de contêiner precisam atender antes de serem implantadas. A regra padrão define restrições que se aplicam a todas as imagens não isentas que não 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: EVALUATION_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
Substitua:
EVALUATION_MODE: o modo de avaliação especifica o tipo de restrição que o aplicador de autorização binária aplica no momento da implantação. Substitua EVALUATION_MODE por um dos seguintes:
ALWAYS_ALLOW
: permite que todas as imagens sejam implantadas.ALWAYS_DENY
: impede a implantação de todas as imagens.REQUIRE_ATTESTATION
: permite que uma imagem seja implantada se ela tiver um ou mais atestados que possam ser verificados por todos os atestadores adicionados a essa regra. No momento da implantação, o aplicador verifica o atestado usando os atestadores que você adiciona à lista ATTESTOR nesta regra. Para saber como criar atestadores, consulte Como criar atestadores. Se você especificarREQUIRE_ATTESTATION
, também precisará adicionar um blocorequireAttestationsBy
contendo pelo menos um atestador. Para saber como criar atestadores, consulte Como criar atestadores.
ENFORCEMENT_MODE: o modo de aplicação especifica como o implementador responde quando uma imagem viola uma regra. Substitua ENFORCEMENT_MODE por um dos seguintes:
ENFORCED_BLOCK_AND_AUDIT_LOG
: bloqueia imagens que violam a regra e informações de registro sobre a violação dos registros de auditoria do Cloud (padrão).DRYRUN_AUDIT_LOG_ONLY
: permite que todas as imagens sejam implantadas, com exceção das informações de aplicação do registro, incluindo informações sobre violações, nos registros de auditoria do Cloud.
ATTESTOR: se você definir
EVALUATION_MODE
comoREQUIRE_ATTESTATION
, também precisará adicionar um bloco requireAttesationsBy. No bloco, você lista um ou mais atestadores por ID do recurso. O código do recurso tem este formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Para saber mais sobre como criar atestadores, consulte Como criar atestadores.
Gerenciar imagens isentas
Esta seção se aplica ao GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Uma imagem isenta é uma imagem isenta de regras da política. A autorização binária sempre permite a implantação de imagens isentas.
Para especificar imagens isentas, liste os caminhos de registro em
admissionWhitelistPatterns
. O caminho se refere ao
Container Registry ou outro registro de imagem. No
momento da implantação, a autorização binária isenta a lista de imagens especificadas por
admissionWhitelistPatterns
após as imagens especificadas pela
política do sistema.
Para adicionar uma imagem isenta, adicione um nó namePattern
em uma lista
admissionWhitelistPatterns
no arquivo policy.yaml
:
admissionWhitelistPatterns: - namePattern: MATCHING_PATTERN
Substitua MATCHING_PATTERN pelo 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
curinga (*
, **
).
Cloud Run
Esta seção se aplica ao Cloud Run.
Não é possível especificar diretamente nomes de imagens que contenham uma tag. Por exemplo, não é possível especificar
IMAGE_PATH
:latest.
Se você quiser especificar nomes de imagens que contenham tags, especifique o nome da imagem usando um padrão de caracteres curinga conforme mostrado a seguir:
*
para todas as versões de uma única imagem; por exemplo,us-docker.pkg.dev/myproject/container/hello@*
**
para todas as imagens em um projeto; por exemplo,us-docker.pkg.dev/myproject/**
É possível usar nomes de caminho para especificar um resumo no formato
IMAGE_PATH
@DIGEST
.
Modo de avaliação da política do sistema
Esta seção se aplica às APIs GKE e Distributed Cloud.
O modo de avaliação da política do sistema é uma configuração que faz com que a autorização binária avalie uma política do sistema antes de avaliar a política configurada. O Google gerencia a política do sistema, que isenta uma lista de imagens de sistema mantidas pelo Google que o GKE usa. As imagens listadas na política do sistema não são bloqueadas pela aplicação da política. Se você não ativar a configuração, precisará gerenciar a lista de imagens isentas por conta própria. Saiba como Gerenciar imagens isentas.
Visualize o conteúdo da política do sistema usando o seguinte comando:
gcloud alpha container binauthz policy export-system-policy
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 de política do sistema, adicione o seguinte:
globalPolicyEvaluationMode: DISABLE
É possível exportar a política do sistema associada a uma região específica da seguinte maneira:
gcloud alpha container binauthz policy export-system-policy \
--location=REGION > /tmp/policy.yaml
Substitua REGION pela região associada à política
do sistema que você quer exportar (ou "global"). Por exemplo: asia-east1
,
europe-west1
, us-central1
.
Se você omitir --location
ou especificar --location=global
, o comando gerará uma
política do sistema de uma região no último grupo de regiões para receber
atualizações. Como a maioria das alterações na política do sistema são adições, a saída
mostra o conjunto de imagens do sistema que são permitidas atualmente em todas as regiões.
Definir regras específicas do cluster (opcional)
Esta seção se aplica às APIs GKE e Distributed Cloud.
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: EVALUATION_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
Substitua:
CLUSTER_SPECIFIER: o ID do recurso do cluster ao qual a regra se aplica. Formate a regra da seguinte maneira:
Para GKE, clusters anexados do GKE e GKE na AWS, o formato é
CLUSTER_LOCATION.CLUSTER_NAME
. Por exemplo,us-central1-a.test-cluster
.Para o software Google Distributed Cloud (clusters do GKE em bare metal) ou VMware), o formato é:
FLEET_MEMBERSHIP_LOCATION.FLEET_MEMBERSHIP_ID
. Por exemplo:global.test-membership
.Outras propriedades estão descritas em Definir a regra padrão anteriormente neste guia. Para conferir um exemplo de regra específica do cluster, consulte Exemplos de políticas.
EVALUATION_MODE: o modo de avaliação especifica o tipo de restrição que o aplicador de autorização binária aplica no momento da implantação. Substitua EVALUATION_MODE por um dos seguintes:
ALWAYS_ALLOW
: permite que todas as imagens sejam implantadas.ALWAYS_DENY
: impede a implantação de todas as imagens.REQUIRE_ATTESTATION
: permite que uma imagem seja implantada se ela tiver um ou mais atestados que possam ser verificados por todos os atestadores adicionados a essa regra. No momento da implantação, o aplicador verifica o atestado usando os atestadores que você adiciona à lista ATTESTOR nesta regra. Para saber como criar atestadores, consulte Como criar atestadores. Se você especificarREQUIRE_ATTESTATION
, também precisará adicionar um blocorequireAttestationsBy
contendo pelo menos um atestador. Para saber como criar atestadores, consulte Como criar atestadores.
ENFORCEMENT_MODE: o modo de aplicação especifica como o implementador responde quando uma imagem viola uma regra. Substitua ENFORCEMENT_MODE por um dos seguintes:
ENFORCED_BLOCK_AND_AUDIT_LOG
: bloqueia imagens que violam a regra e informações de registro sobre a violação dos registros de auditoria do Cloud (padrão).DRYRUN_AUDIT_LOG_ONLY
: permite que todas as imagens sejam implantadas, com exceção das informações de aplicação do registro, incluindo informações sobre violações, nos registros de auditoria do Cloud.
ATTESTOR: se você definir
EVALUATION_MODE
comoREQUIRE_ATTESTATION
, também precisará adicionar um bloco requireAttesationsBy. No bloco, você lista um ou mais atestadores por ID do recurso. O código do recurso tem este formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Para saber mais sobre como criar atestadores, consulte Como criar atestadores.
Definir regras específicas (opcional)
É possível criar regras com escopo para uma identidade de serviço de malha, uma conta de serviço do Kubernetes ou um namespace do Kubernetes.
Definir uma regra para uma identidade de serviço do Cloud Service Mesh
Para definir uma regra para uma identidade de serviço do
Cloud Service Mesh,
edite o arquivo policy.yaml
e adicione um
bloco istioServiceIdentityAdmissionRules
, por exemplo:
defaultAdmissionRule:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
istioServiceIdentityAdmissionRules:
SERVICE_IDENTITY_ID:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ENFORCEMENT_MODE
requireAttestationsBy:
- <var>ATTESTOR</var>
- ...
name: projects/PROJECT_ID/policy
Substitua:
SERVICE_IDENTITY_ID: a identidade de serviço do Cloud Service Mesh para definir o escopo dessa regra. A identidade do serviço tem o seguinte formato: PROJECT_ID.svc.id.goog/ns/NAMESPACE/sa/SERVICE_ACCOUNT. No ID da identidade de serviço, substitua:
- PROJECT_ID, o ID do projeto em que você define os recursos do Kubernetes.
- NAMESPACE: o namespace do Kubernetes.
- SERVICE_ACCOUNT: a conta de serviço.
EVALUATION_MODE: o modo de avaliação especifica o tipo de restrição que o aplicador de autorização binária aplica no momento da implantação. Substitua EVALUATION_MODE por um dos seguintes:
ALWAYS_ALLOW
: permite que todas as imagens sejam implantadas.ALWAYS_DENY
: impede a implantação de todas as imagens.REQUIRE_ATTESTATION
: permite que uma imagem seja implantada se ela tiver um ou mais atestados que possam ser verificados por todos os atestadores adicionados a essa regra. No momento da implantação, o aplicador verifica o atestado usando os atestadores que você adiciona à lista ATTESTOR nesta regra. Para saber como criar atestadores, consulte Como criar atestadores. Se você especificarREQUIRE_ATTESTATION
, também precisará adicionar um blocorequireAttestationsBy
contendo pelo menos um atestador. Para saber como criar atestadores, consulte Como criar atestadores.
ENFORCEMENT_MODE: o modo de aplicação especifica como o implementador responde quando uma imagem viola uma regra. Substitua ENFORCEMENT_MODE por um dos seguintes:
ENFORCED_BLOCK_AND_AUDIT_LOG
: bloqueia imagens que violam a regra e informações de registro sobre a violação dos registros de auditoria do Cloud (padrão).DRYRUN_AUDIT_LOG_ONLY
: permite que todas as imagens sejam implantadas, com exceção das informações de aplicação do registro, incluindo informações sobre violações, nos registros de auditoria do Cloud.
ATTESTOR: se você definir
EVALUATION_MODE
comoREQUIRE_ATTESTATION
, também precisará adicionar um bloco requireAttesationsBy. No bloco, você lista um ou mais atestadores por ID do recurso. O código do recurso tem este formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Para saber mais sobre como criar atestadores, consulte Como criar atestadores.
Definir uma regra para uma conta de serviço do Kubernetes
Para definir uma regra para uma conta de serviço do Kubernetes, edite o arquivo policy.yaml
e
adicione um bloco kubernetesServiceAccountAdmissionRules
, por exemplo:
defaultAdmissionRule:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesServiceAccountAdmissionRules:
KUBERNETES_SERVICE_ACCOUNT_ID:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ENFORCEMENT_MODE
requireAttestationsBy:
- <var>ATTESTOR</var>
- ...
name: projects/PROJECT_ID/policy
Substitua:
KUBERNETES_SERVICE_ACCOUNT_ID: a conta de serviço do Kubernetes de escopo da regra. Esse ID de conta de serviço tem o formato: NAMESPACE:SERVICE_ACCOUNT. No ID da conta de serviço, substitua o seguinte:
- NAMESPACE: o namespace do Kubernetes.
- SERVICE_ACCOUNT: o nome da conta de serviço.
EVALUATION_MODE: o modo de avaliação especifica o tipo de restrição que o aplicador de autorização binária aplica no momento da implantação. Substitua EVALUATION_MODE por um dos seguintes:
ALWAYS_ALLOW
: permite que todas as imagens sejam implantadas.ALWAYS_DENY
: impede a implantação de todas as imagens.REQUIRE_ATTESTATION
: permite que uma imagem seja implantada se ela tiver um ou mais atestados que possam ser verificados por todos os atestadores adicionados a essa regra. No momento da implantação, o aplicador verifica o atestado usando os atestadores que você adiciona à lista ATTESTOR nesta regra. Para saber como criar atestadores, consulte Como criar atestadores. Se você especificarREQUIRE_ATTESTATION
, também precisará adicionar um blocorequireAttestationsBy
contendo pelo menos um atestador. Para saber como criar atestadores, consulte Como criar atestadores.
ENFORCEMENT_MODE: o modo de aplicação especifica como o implementador responde quando uma imagem viola uma regra. Substitua ENFORCEMENT_MODE por um dos seguintes:
ENFORCED_BLOCK_AND_AUDIT_LOG
: bloqueia imagens que violam a regra e informações de registro sobre a violação dos registros de auditoria do Cloud (padrão).DRYRUN_AUDIT_LOG_ONLY
: permite que todas as imagens sejam implantadas, com exceção das informações de aplicação do registro, incluindo informações sobre violações, nos registros de auditoria do Cloud.
ATTESTOR: se você definir
EVALUATION_MODE
comoREQUIRE_ATTESTATION
, também precisará adicionar um bloco requireAttesationsBy. No bloco, você lista um ou mais atestadores por ID do recurso. O código do recurso tem este formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Para saber mais sobre como criar atestadores, consulte Como criar atestadores.
Definir uma regra para um namespace do Kubernetes
Para definir uma regra para um namespace do Kubernetes, edite o arquivo policy.yaml
e adicione um
bloco kubernetesNamespaceAdmissionRules
, por exemplo:
defaultAdmissionRule:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesNamespaceAdmissionRules:
KUBERNETES_NAMESPACE:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: EVALUATION_MODE
requireAttestationsBy:
- <var>ATTESTOR</var>
- ...
name: projects/PROJECT_ID/policy
Substitua:
KUBERNETES_NAMESPACE: o namespace do Kubernetes para definir o escopo dessa regra.
EVALUATION_MODE: o modo de avaliação especifica o tipo de restrição que o aplicador de autorização binária aplica no momento da implantação. Substitua EVALUATION_MODE por um dos seguintes:
ALWAYS_ALLOW
: permite que todas as imagens sejam implantadas.ALWAYS_DENY
: impede a implantação de todas as imagens.REQUIRE_ATTESTATION
: permite que uma imagem seja implantada se ela tiver um ou mais atestados que possam ser verificados por todos os atestadores adicionados a essa regra. No momento da implantação, o aplicador verifica o atestado usando os atestadores que você adiciona à lista ATTESTOR nesta regra. Para saber como criar atestadores, consulte Como criar atestadores. Se você especificarREQUIRE_ATTESTATION
, também precisará adicionar um blocorequireAttestationsBy
contendo pelo menos um atestador. Para saber como criar atestadores, consulte Como criar atestadores.
ENFORCEMENT_MODE: o modo de aplicação especifica como o implementador responde quando uma imagem viola uma regra. Substitua ENFORCEMENT_MODE por um dos seguintes:
ENFORCED_BLOCK_AND_AUDIT_LOG
: bloqueia imagens que violam a regra e informações de registro sobre a violação dos registros de auditoria do Cloud (padrão).DRYRUN_AUDIT_LOG_ONLY
: permite que todas as imagens sejam implantadas, com exceção das informações de aplicação do registro, incluindo informações sobre violações, nos registros de auditoria do Cloud.
ATTESTOR: se você definir
EVALUATION_MODE
comoREQUIRE_ATTESTATION
, também precisará adicionar um bloco requireAttesationsBy. No bloco, você lista um ou mais atestadores por ID do recurso. O código do recurso tem este formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Para saber mais sobre como criar atestadores, consulte Como criar atestadores.
Importar o arquivo YAML da política
Esta seção se aplica ao GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Importe o arquivo YAML da política de volta para a autorização binária digitando:
gcloud container binauthz policy import /tmp/policy.yaml
A seguir
- Use o atestador
built-by-cloud-build
para implantar somente imagens criadas pelo Cloud Build). - Usar atestados.
- Implantar uma imagem do GKE.