Configure uma política através da CLI gcloud (original) (raw)

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 daGoogle Cloud consola ou daAPI REST. Este passo faz parte daconfiguraçã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, Cloud Run e 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, podeimportar a política.

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

admissionWhitelistPatterns:

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, Cloud Run e 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 asPolí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:

Substitua o seguinte:

Faça a gestão de imagens isentas

Esta secção aplica-se ao GKE, Distributed Cloud, Cloud Run e 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 emadmissionWhitelistPatterns. O caminho refere-se aoContainer 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:

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 especificarIMAGE_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:

Pode usar nomes de caminhos para especificar um resumo no formatoIMAGE_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 comogerir 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çãoUse uma regra específica do clusterem 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:

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:

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:

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:

Importe o ficheiro YAML da política

Esta secção aplica-se ao GKE, Distributed Cloud, Cloud Run e 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?