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
- Ative a autorização binária.
- Crie um cluster.
- 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.
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 especificarREQUIRE_ATTESTATION
, também tem de adicionar um blocorequireAttestationsBy
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
comoREQUIRE_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 especificarREQUIRE_ATTESTATION
, também tem de adicionar um blocorequireAttestationsBy
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
comoREQUIRE_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 especificarREQUIRE_ATTESTATION
, também tem de adicionar um blocorequireAttestationsBy
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
comoREQUIRE_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 especificarREQUIRE_ATTESTATION
, também tem de adicionar um blocorequireAttestationsBy
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
comoREQUIRE_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 especificarREQUIRE_ATTESTATION
, também tem de adicionar um blocorequireAttestationsBy
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
comoREQUIRE_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?
- Use o
built-by-cloud-build
atestador para implementar apenas imagens criadas pelo Cloud Build. - Use atestações.
- Implemente uma imagem do GKE.