Configure uma política através da CLI gcloud

Esta página fornece instruções para configurar uma política de autorização binária através da CLI Google Cloud. Em alternativa, também pode realizar estas tarefas através da Google Cloud consola ou da API REST. Este passo faz parte da configuração da autorização binária.

Para configurar uma política através da ferramenta de linha de comandos, exporte a política existente como um ficheiro YAML. Depois de modificar o ficheiro, pode importá-lo para atualizar a política, conforme descrito mais adiante neste guia. Para mais informações sobre o formato YAML da política, consulte a referência YAML da política.

Antes de começar

  1. Ative a autorização binária.
  2. Crie um cluster.
  3. Se pretender usar atestações, recomendamos que crie atestadores antes de configurar a política. Pode criar atestadores através de uma ferramenta de linha de comandos ou da Google Cloud consola.
  4. Defina o ID do projeto para o projeto no qual ativou a autorização binária:

    PROJECT_ID=PROJECT_ID
    gcloud config set project ${PROJECT_ID}
    

Exporte o ficheiro YAML da política

Esta secção aplica-se ao GKE, à Distributed Cloud, ao Cloud Run e ao Cloud Service Mesh.

Para atualizar a política, primeiro exporte-a para um ficheiro YAML local, da seguinte forma:

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

Por predefinição, o conteúdo do ficheiro tem um aspeto 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 ficheiro e adicione ou atualize secções, conforme descrito mais adiante neste guia. Depois de guardar o ficheiro, pode importar a política.

Para adicionar uma imagem isenta à lista de autorizações, adicione o seguinte ao ficheiro de política:

admissionWhitelistPatterns:
  - namePattern: EXEMPT_IMAGE_PATH

Substitua EXEMPT_IMAGE_PATH pelo caminho para uma imagem a isentar. Para isentar imagens adicionais, adicione mais entradas - namePattern. Saiba mais sobre admissionWhitelistPatterns.

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. A regra predefinida define restrições que se aplicam a todas as imagens não isentas que não tenham a sua própria regra específica do cluster. Todas as políticas têm de ter uma regra predefinida.

A regra predefinida está definida no nó defaultAdmissionRule no ficheiro YAML da 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 policy.yaml conforme necessário:

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

Substitua o seguinte:

  • EVALUATION_MODE: O modo de avaliação especifica o tipo de restrição que o agente de aplicação da autorização binária aplica no momento da implementação. Substitua EVALUATION_MODE por uma das seguintes opções:

    • ALWAYS_ALLOW: permite a implementação de todas as imagens.
    • ALWAYS_DENY: não permite a implementação de nenhuma imagem.
    • REQUIRE_ATTESTATION: permite a implementação de uma imagem se esta tiver uma ou mais atestações que podem ser validadas por todos os atestadores que adicionar a esta regra. No momento da implementação, o aplicador valida a atestação através dos atestadores que adiciona à lista ATTESTOR nesta regra. Para saber como criar atestadores, consulte o artigo Criar atestadores. Se especificar REQUIRE_ATTESTATION, também tem de adicionar um bloco requireAttestationsBy que contenha, pelo menos, um atestador. Para saber como criar atestadores, consulte o artigo Criar atestadores.
  • ENFORCEMENT_MODE: o modo de aplicação especifica como o aplicador responde quando uma imagem viola uma regra. Substitua ENFORCEMENT_MODE por uma das seguintes opções:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: bloquear imagens que violem a regra e registar informações sobre a violação nos registos de auditoria do Cloud (predefinição).
    • DRYRUN_AUDIT_LOG_ONLY: permitir a implementação de todas as imagens, mas registar informações de aplicação, incluindo informações sobre violações, nos registos de auditoria do Cloud.
  • ATTESTOR: se definir EVALUATION_MODE como REQUIRE_ATTESTATION, também tem de adicionar um bloco requireAttesationsBy. No bloco, lista um ou mais atestadores, por ID do recurso. O ID do recurso tem o formato:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Para saber como criar atestadores, consulte o artigo Criar atestadores.

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 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 refere-se ao Container Registry ou a outro registo de imagens. No momento da implementação, a autorização binária isenta a lista de imagens especificada por admissionWhitelistPatterns após as imagens especificadas pela política do sistema.

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

admissionWhitelistPatterns:
- namePattern: MATCHING_PATTERN

Substitua MATCHING_PATTERN pelo 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 da política do sistema, adicione a seguinte linha ao ficheiro policy.yaml:

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 sistemas 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 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 a imagens que vão ser implementadas apenas em clusters do GKE específicos. 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 ficheiro YAML 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 policy.yaml, adicione um nó clusterAdmissionRules:

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

Substitua o seguinte:

  • CLUSTER_SPECIFIER: o ID do recurso do cluster ao qual a regra se aplica. Formata a regra da seguinte forma:

    • 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 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.

      As outras propriedades são as descritas em Defina a regra predefinida anteriormente neste guia. Para ver um exemplo de uma regra específica do cluster, consulte as Políticas de exemplo.

  • EVALUATION_MODE: O modo de avaliação especifica o tipo de restrição que o agente de aplicação da autorização binária aplica no momento da implementação. Substitua EVALUATION_MODE por uma das seguintes opções:

    • ALWAYS_ALLOW: permite a implementação de todas as imagens.
    • ALWAYS_DENY: não permite a implementação de nenhuma imagem.
    • REQUIRE_ATTESTATION: permite a implementação de uma imagem se esta tiver uma ou mais atestações que podem ser validadas por todos os atestadores que adicionar a esta regra. No momento da implementação, o aplicador valida a atestação através dos atestadores que adiciona à lista ATTESTOR nesta regra. Para saber como criar atestadores, consulte o artigo Criar atestadores. Se especificar REQUIRE_ATTESTATION, também tem de adicionar um bloco requireAttestationsBy que contenha, pelo menos, um atestador. Para saber como criar atestadores, consulte o artigo Criar atestadores.
  • ENFORCEMENT_MODE: o modo de aplicação especifica como o aplicador responde quando uma imagem viola uma regra. Substitua ENFORCEMENT_MODE por uma das seguintes opções:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: bloquear imagens que violem a regra e registar informações sobre a violação nos registos de auditoria do Cloud (predefinição).
    • DRYRUN_AUDIT_LOG_ONLY: permitir a implementação de todas as imagens, mas registar informações de aplicação, incluindo informações sobre violações, nos registos de auditoria do Cloud.
  • ATTESTOR: se definir EVALUATION_MODE como REQUIRE_ATTESTATION, também tem de adicionar um bloco requireAttesationsBy. No bloco, lista um ou mais atestadores, por ID do recurso. O ID do recurso tem o formato:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Para saber como criar atestadores, consulte o artigo Criar atestadores.

Defina regras específicas (opcional)

Pode criar regras com âmbito definido para uma identidade de serviço de malha, uma conta de serviço do Kubernetes ou um espaço de nomes do Kubernetes.

Defina uma regra para uma identidade de serviço da Cloud Service Mesh

Para definir uma regra para uma identidade de serviço do Cloud Service Mesh, edite o ficheiro 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 o seguinte:

  • SERVICE_IDENTITY_ID: a identidade do serviço Cloud Service Mesh para restringir esta regra. A identidade do serviço tem o seguinte formato: PROJECT_ID.svc.id.goog/ns/NAMESPACE/sa/SERVICE_ACCOUNT. No ID da identidade do serviço, substitua o seguinte:

    • PROJECT_ID: o ID do projeto no qual define os seus 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 agente de aplicação da autorização binária aplica no momento da implementação. Substitua EVALUATION_MODE por uma das seguintes opções:

    • ALWAYS_ALLOW: permite a implementação de todas as imagens.
    • ALWAYS_DENY: não permite a implementação de nenhuma imagem.
    • REQUIRE_ATTESTATION: permite a implementação de uma imagem se esta tiver uma ou mais atestações que podem ser validadas por todos os atestadores que adicionar a esta regra. No momento da implementação, o aplicador valida a atestação através dos atestadores que adiciona à lista ATTESTOR nesta regra. Para saber como criar atestadores, consulte o artigo Criar atestadores. Se especificar REQUIRE_ATTESTATION, também tem de adicionar um bloco requireAttestationsBy que contenha, pelo menos, um atestador. Para saber como criar atestadores, consulte o artigo Criar atestadores.
  • ENFORCEMENT_MODE: o modo de aplicação especifica como o aplicador responde quando uma imagem viola uma regra. Substitua ENFORCEMENT_MODE por uma das seguintes opções:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: bloquear imagens que violem a regra e registar informações sobre a violação nos registos de auditoria do Cloud (predefinição).
    • DRYRUN_AUDIT_LOG_ONLY: permitir a implementação de todas as imagens, mas registar informações de aplicação, incluindo informações sobre violações, nos registos de auditoria do Cloud.
  • ATTESTOR: se definir EVALUATION_MODE como REQUIRE_ATTESTATION, também tem de adicionar um bloco requireAttesationsBy. No bloco, lista um ou mais atestadores, por ID do recurso. O ID do recurso tem o formato:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Para saber como criar atestadores, consulte o artigo Criar atestadores.

Defina uma regra para uma conta de serviço do Kubernetes

Para definir uma regra para uma conta de serviço do Kubernetes, edite o ficheiro 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 o seguinte:

  • KUBERNETES_SERVICE_ACCOUNT_ID: a conta de serviço do Kubernetes à qual o âmbito da regra se aplica. Este ID da conta de serviço tem o seguinte 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 agente de aplicação da autorização binária aplica no momento da implementação. Substitua EVALUATION_MODE por uma das seguintes opções:

    • ALWAYS_ALLOW: permite a implementação de todas as imagens.
    • ALWAYS_DENY: não permite a implementação de nenhuma imagem.
    • REQUIRE_ATTESTATION: permite a implementação de uma imagem se esta tiver uma ou mais atestações que podem ser validadas por todos os atestadores que adicionar a esta regra. No momento da implementação, o aplicador valida a atestação através dos atestadores que adiciona à lista ATTESTOR nesta regra. Para saber como criar atestadores, consulte o artigo Criar atestadores. Se especificar REQUIRE_ATTESTATION, também tem de adicionar um bloco requireAttestationsBy que contenha, pelo menos, um atestador. Para saber como criar atestadores, consulte o artigo Criar atestadores.
  • ENFORCEMENT_MODE: o modo de aplicação especifica como o aplicador responde quando uma imagem viola uma regra. Substitua ENFORCEMENT_MODE por uma das seguintes opções:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: bloquear imagens que violem a regra e registar informações sobre a violação nos registos de auditoria do Cloud (predefinição).
    • DRYRUN_AUDIT_LOG_ONLY: permitir a implementação de todas as imagens, mas registar informações de aplicação, incluindo informações sobre violações, nos registos de auditoria do Cloud.
  • ATTESTOR: se definir EVALUATION_MODE como REQUIRE_ATTESTATION, também tem de adicionar um bloco requireAttesationsBy. No bloco, lista um ou mais atestadores, por ID do recurso. O ID do recurso tem o formato:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Para saber como criar atestadores, consulte o artigo Criar atestadores.

Defina uma regra para um espaço de nomes do Kubernetes

Para definir uma regra para um espaço de nomes do Kubernetes, edite o ficheiro 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 o seguinte:

  • KUBERNETES_NAMESPACE: o namespace do Kubernetes ao qual esta regra se aplica.

  • EVALUATION_MODE: O modo de avaliação especifica o tipo de restrição que o agente de aplicação da autorização binária aplica no momento da implementação. Substitua EVALUATION_MODE por uma das seguintes opções:

    • ALWAYS_ALLOW: permite a implementação de todas as imagens.
    • ALWAYS_DENY: não permite a implementação de nenhuma imagem.
    • REQUIRE_ATTESTATION: permite a implementação de uma imagem se esta tiver uma ou mais atestações que podem ser validadas por todos os atestadores que adicionar a esta regra. No momento da implementação, o aplicador valida a atestação através dos atestadores que adiciona à lista ATTESTOR nesta regra. Para saber como criar atestadores, consulte o artigo Criar atestadores. Se especificar REQUIRE_ATTESTATION, também tem de adicionar um bloco requireAttestationsBy que contenha, pelo menos, um atestador. Para saber como criar atestadores, consulte o artigo Criar atestadores.
  • ENFORCEMENT_MODE: o modo de aplicação especifica como o aplicador responde quando uma imagem viola uma regra. Substitua ENFORCEMENT_MODE por uma das seguintes opções:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: bloquear imagens que violem a regra e registar informações sobre a violação nos registos de auditoria do Cloud (predefinição).
    • DRYRUN_AUDIT_LOG_ONLY: permitir a implementação de todas as imagens, mas registar informações de aplicação, incluindo informações sobre violações, nos registos de auditoria do Cloud.
  • ATTESTOR: se definir EVALUATION_MODE como REQUIRE_ATTESTATION, também tem de adicionar um bloco requireAttesationsBy. No bloco, lista um ou mais atestadores, por ID do recurso. O ID do recurso tem o formato:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Para saber como criar atestadores, consulte o artigo Criar atestadores.

Importe o ficheiro YAML da política

Esta secção aplica-se ao GKE, à Distributed Cloud, ao Cloud Run e ao Cloud Service Mesh.

Importe novamente o ficheiro YAML da política para a autorização binária introduzindo o seguinte:

gcloud container binauthz policy import /tmp/policy.yaml

O que se segue?