En esta página se explica cómo puedes proteger los despliegues de imágenes en Cloud Run y Google Kubernetes Engine con Cloud Build.
Consulta cómo configurar Autorización binaria para comprobar las atestaciones de compilación y bloquear los despliegues de imágenes que no haya generado Cloud Build. Este proceso puede reducir el riesgo de implementar software no autorizado.
Antes de empezar
Enable the Cloud Build, Binary Authorization, and Artifact Registry APIs.
Para usar los ejemplos de línea de comandos de esta guía, instala y configura el SDK de Google Cloud.
Controlar los despliegues con la autorización binaria
Una política de la autorización binaria es un conjunto de reglas que rigen el despliegue de imágenes. Puedes configurar una regla para requerir atestaciones con firma digital.
Cloud Build genera y firma atestaciones en tiempo de compilación. Con la autorización binaria, puedes usar el built-by-cloud-build
atestador para verificar las atestaciones y desplegar solo las imágenes creadas por Cloud Build.
Para crear el attestor built-by-cloud-build
en tu proyecto, ejecuta una compilación en ese proyecto.
Para permitir que solo se desplieguen imágenes creadas por Cloud Build, sigue estos pasos:
Consola
Ve a la página Autorización binaria de la Google Cloud consola:
En la pestaña Política, haga clic en Editar política.
En el cuadro de diálogo Editar política, seleccione Permitir solo las imágenes que hayan sido aprobadas por todos los siguientes certificadores.
Haz clic en Añadir verificadores.
En el cuadro de diálogo Añadir certificadores, haz lo siguiente:
- Selecciona Añadir por proyecto y nombre de encargado de la atestación y sigue estos pasos:
- En el campo Nombre del proyecto, introduce el proyecto en el que ejecutas Cloud Build.
- Haz clic en el campo Nombre del attestor y observa que el attestor
built-by-cloud-build
está disponible. - Haz clic en
built-by-cloud-build
.
También puede seleccionar Añadir por ID de recurso de encargado de la atestación. En ID de recurso de encargado de la atestación, introduce
projects/PROJECT_ID/attestors/built-by-cloud-build
Sustituye
PROJECT_ID
por el proyecto en el que ejecutas Cloud Build.
- Selecciona Añadir por proyecto y nombre de encargado de la atestación y sigue estos pasos:
Haz clic en Añadir 1 attestor (Añadir 1 attestor).
Haz clic en Save Policy.
gcloud
Exporta tu política actual a un archivo con el siguiente comando:
gcloud container binauthz policy export > /tmp/policy.yaml
Edita el archivo de política.
Edita una de las siguientes reglas:
defaultAdmissionRule
clusterAdmissionRules
istioServiceIdentityAdmissionRules
kubernetesServiceAccountAdmissionRules
Añade un bloque
requireAttestationsBy
a la regla si aún no lo has hecho.En el bloque
requireAttestationsBy
, añadeprojects/PROJECT_ID/attestors/built-by-cloud-build
Sustituye
PROJECT_ID
por el proyecto en el que ejecutas Cloud Build.Guarda el archivo de política.
Importa el archivo de políticas.
gcloud container binauthz policy import /tmp/policy.yaml
A continuación, se muestra un ejemplo de archivo de política que contiene la referencia al
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
Sustituye
PROJECT_ID
por el ID del proyecto en el que ejecutas Cloud Build.
Puedes ver los errores de las políticas en los mensajes de registro de la autorización binaria de GKE o Cloud Run.
Usar el modo de prueba
En el modo de ejecución de prueba, la autorización binaria comprueba el cumplimiento de las políticas sin bloquear el despliegue. En su lugar, los mensajes de estado de cumplimiento de las políticas se registran en Cloud Logging. Puede usar estos registros para determinar si su política de bloqueo funciona correctamente e identificar falsos positivos.
Para habilitar la prueba de funcionamiento, sigue estos pasos:
Consola
Ve a la página Autorización binaria de la Google Cloud consola.
Haz clic en Editar política.
En Regla predeterminada o en una regla específica, selecciona Modo de prueba.
Haz clic en Save Policy.
gcloud
Exporta la política de autorización binaria a un archivo YAML:
gcloud container binauthz policy export > /tmp/policy.yaml
En un editor de texto, asigna el valor
DRYRUN_AUDIT_LOG_ONLY
aenforcementMode
y guarda el archivo.Para actualizar la política, importa el archivo ejecutando el siguiente comando:
gcloud container binauthz policy import /tmp/policy.yaml
Puedes ver los errores de las políticas en los mensajes de registro de autorización binaria de GKE o Cloud Run.
Limitaciones
Cloud Build y Binary Authorization deben estar en el mismo proyecto. Si ejecutas tu plataforma de implementación en otro proyecto, configura los roles de gestión de identidades y accesos para una configuración de varios proyectos y consulta el proyecto de Cloud Build al añadir el attestor
built-by-cloud-build
en Autorización binaria.Cloud Build no genera atestaciones cuando insertas imágenes en Artifact Registry mediante un paso de compilación
docker push
explícito. Asegúrate de enviar el contenido a Artifact Registry mediante el campoimages
en el paso de compilacióndocker build
. Para obtener más información sobreimages
, consulta Diferentes formas de almacenar imágenes en Artifact Registry.Debes usar archivos de configuración de compilación independientes para tu canalización de compilación y tu canalización de implementación. Esto se debe a que Cloud Build genera certificaciones solo después de que la canalización de compilación se complete correctamente. A continuación, Autorización binaria comprobará la certificación antes de implementar la imagen.
Habilitar las certificaciones en grupos privados
De forma predeterminada, Cloud Build no genera certificaciones de autorización binaria para las compilaciones en grupos privados. Para generar
atestaciones, añade la opción requestedVerifyOption: VERIFIED
a tu
archivo de configuración de compilación:
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
Después de añadir la requestedVerifyOption
, Cloud Build habilita la generación de atestaciones y los metadatos de procedencia de tu imagen.
Ver metadatos del attestor
Un certificador se crea la primera vez que ejecutas una compilación en un proyecto. El ID del verificador tiene el formato projects/PROJECT_ID/attestors/built-by-cloud-build
, donde PROJECT_ID
es el ID de tu proyecto.
Puedes consultar los metadatos del attestor de compilación con el siguiente 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
Sustituye PROJECT_ID
por el proyecto en el que ejecutas Cloud Build.
La salida contiene información sobre el attestor y las claves públicas correspondientes. Por ejemplo:
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"
Siguientes pasos
- Consulta información sobre la autorización binaria.