Esta página fornece instruções sobre como pode proteger as implementações de imagens no Cloud Run e no Google Kubernetes Engine através do Cloud Build.
Saiba como configurar a autorização binária para verificar as atestações de compilação e bloquear implementações de imagens que não são geradas pelo Cloud Build. Este processo pode reduzir o risco de implementação de software não autorizado.
Antes de começar
Enable the Cloud Build, Binary Authorization, and Artifact Registry APIs.
Para usar os exemplos de linha de comandos neste guia, instale e configure o SDK do Google Cloud.
Controle implementações com a Autorização binária
Uma política na autorização binária é um conjunto de regras que regem a implementação de imagens. Pode configurar uma regra para exigir atestados com assinatura digital.
O Cloud Build gera e assina atestações no momento da compilação. Com a autorização binária, pode usar o built-by-cloud-build
atestador para
validar as atestações e implementar apenas imagens criadas pelo Cloud Build.
Para criar o atestador built-by-cloud-build
no seu projeto, execute uma compilação nesse projeto.
Para permitir a implementação apenas de imagens criadas pelo Cloud Build, siga os passos seguintes:
Consola
Aceda à página Autorização binária na Google Cloud consola:
No separador Política, clique em Editar política.
Na caixa de diálogo Editar política, selecione Permitir apenas imagens que tenham sido aprovadas por todos os seguintes atestadores.
Clique em Adicionar atestantes.
Na caixa de diálogo Adicionar atestadores, faça o seguinte:
- Selecione Adicionar por projeto e nome do atestador e siga os seguintes
passos:
- No campo Nome do projeto, introduza o projeto onde executa o Cloud Build.
- Clique no campo Nome do atestador e repare que o atestador
built-by-cloud-build
está disponível. - Clique em
built-by-cloud-build
.
Em alternativa, selecione Adicionar por ID do recurso do atestador. Em ID do recurso do atestador, introduza
projects/PROJECT_ID/attestors/built-by-cloud-build
Substitua
PROJECT_ID
pelo projeto onde executa o Cloud Build.
- Selecione Adicionar por projeto e nome do atestador e siga os seguintes
passos:
Clique em Adicionar 1 atestante.
Clique em Guardar política.
gcloud
Exporte a política existente para um ficheiro através do seguinte comando:
gcloud container binauthz policy export > /tmp/policy.yaml
Edite o ficheiro de políticas.
Edite uma das seguintes regras:
defaultAdmissionRule
clusterAdmissionRules
istioServiceIdentityAdmissionRules
kubernetesServiceAccountAdmissionRules
Adicione um bloco
requireAttestationsBy
à regra se ainda não existir.No bloco
requireAttestationsBy
, adicioneprojects/PROJECT_ID/attestors/built-by-cloud-build
Substituir
PROJECT_ID
pelo projeto onde executa o Cloud Build.Guarde o ficheiro de política.
Importe o ficheiro de políticas.
gcloud container binauthz policy import /tmp/policy.yaml
Segue-se um exemplo de um ficheiro de política que contém a referência a
built-by-cloud-build-attestor
:defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/PROJECT_ID/attestors/built-by-cloud-build name: projects/PROJECT_ID/policy
Substitua
PROJECT_ID
pelo ID do projeto onde executa o Cloud Build.
Pode ver erros de políticas nas mensagens de registo da Autorização binária para o GKE ou o Cloud Run
Usar o modo de execução de ensaio
No modo de execução de ensaio, a autorização binária verifica a conformidade com as políticas sem bloquear efetivamente a implementação. Em alternativa, as mensagens de estado de conformidade com as políticas são registadas no Cloud Logging. Pode usar estes registos para determinar se a sua política de bloqueio está a funcionar corretamente e para identificar falsos positivos.
Para ativar o teste de execução, faça o seguinte:
Consola
Aceda à página Binary Authorization na Google Cloud consola.
Clique em Editar política.
Na Regra predefinida ou numa regra específica, selecione Modo de teste.
Clique em Guardar política.
gcloud
Exporte a política de autorização binária para um ficheiro YAML:
gcloud container binauthz policy export > /tmp/policy.yaml
Num editor de texto, defina
enforcementMode
comoDRYRUN_AUDIT_LOG_ONLY
e guarde o ficheiro.Para atualizar a política, importe o ficheiro executando o seguinte comando:
gcloud container binauthz policy import /tmp/policy.yaml
Pode ver erros de políticas nas mensagens de registo da autorização binária para o GKE ou o Cloud Run
Limitações
O Cloud Build e a Binary Authorization têm de estar no mesmo projeto. Se executar a sua plataforma de implementação noutro projeto, configure as funções do IAM para uma configuração com vários projetos e consulte o projeto do Cloud Build quando adicionar o atestador
built-by-cloud-build
na autorização binária.O Cloud Build não gera atestações quando envia imagens para o Artifact Registry através de um passo de compilação
docker push
explícito. Certifique-se de que envia para o Artifact Registry através do campoimages
no passo de compilaçãodocker build
. Para mais informações sobre oimages
, consulte o artigo Diferentes formas de armazenar imagens no Artifact Registry.Tem de usar ficheiros de configuração de compilação separados para o pipeline de compilação e o pipeline de implementação. Isto deve-se ao facto de o Cloud Build produzir atestações apenas após a conclusão bem-sucedida do pipeline de compilação. Em seguida, a autorização binária verifica a atestação antes de implementar a imagem.
Ative as atestações em pools privados
Por predefinição, o Cloud Build não gera atestações da autorização binária para compilações em pools privados. Para gerar atestações, adicione a opção requestedVerifyOption: VERIFIED
ao ficheiro de configuração de compilação:
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'us-central1-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1', '.' ]
images:
- 'us-central1-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'
options:
requestedVerifyOption: VERIFIED
Depois de adicionar o requestedVerifyOption
, o Cloud Build ativa a geração de atestação e os metadados de proveniência para a sua imagem.
Veja os metadados do atestador
Um atestador é criado na primeira vez que executa uma compilação num projeto. O ID do atestador tem o formato projects/PROJECT_ID/attestors/built-by-cloud-build
, em que PROJECT_ID
é o ID do seu projeto.
Pode verificar os metadados do atestador de compilação através do seguinte comando:
curl -X GET -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://binaryauthorization.googleapis.com/v1beta1/projects/PROJECT_ID/attestors/built-by-cloud-build
Substitua PROJECT_ID
pelo projeto onde executa o Cloud Build.
A saída contém informações sobre o atestador e as chaves públicas correspondentes. Por exemplo:
name": "projects/PROJECT_ID/attestors/built-by-cloud-build", "userOwnedDrydockNote": { "noteReference": "projects/PROJECT_ID/notes/built-by-cloud-build", "publicKeys": [ { "id": "//cloudkms.googleapis.com/v1/projects/verified-builder/locations/asia/keyRings/attestor/cryptoKeys/builtByGCB/cryptoKeyVersions/1", "pkixPublicKey": { "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEMMvFxZLgIiWOLIXsaTkjTmOKcaK7\neIZrgpWHpHziTFGg8qyEI4S8O2/2wh1Eru7+sj0Sh1QxytN/KE5j3mTvYA==\n-----END PUBLIC KEY-----\n", "signatureAlgorithm": "ECDSA_P256_SHA256" } }, ... } ], "delegationServiceAccountEmail": "service-942118413832@gcp-binaryauthorization.iam.gserviceaccount.com" }, "updateTime": "2021-09-24T15:26:44.808914Z", "description": "Attestor autogenerated by build ID fab07092-30f4-4f70-caf7-4545cbc404d6"
O que se segue?
- Saiba mais sobre a autorização binária.