Crear una atestación de autorización binaria en una canalización de Cloud Build

En este tutorial se muestra cómo crear una certificación de autorización binaria en una canalización de Cloud Build. Esta configuración ayuda a asegurarse de que solo las imágenes de contenedor compiladas y firmadas como parte del proceso de compilación de Cloud Build se autoricen automáticamente para ejecutarse en tu entorno de implementación.

Información general de Cloud Build

Cloud Build (descripción general) toma el código fuente almacenado en un repositorio alojado, ejecuta tus compilaciones y pruebas, y almacena los resultados de software en Container Registry u otro servicio de almacenamiento de Google Cloud Platform.

Información general sobre la autorización binaria

La autorización binaria (información general) es un Google Cloud producto que aplica restricciones en el momento de la implementación de las aplicaciones. Su integración con Google Kubernetes Engine (GKE) permite a los usuarios asegurarse de que los contenedores desplegados en un clúster de Kubernetes estén firmados criptográficamente por una autoridad de confianza y verificados por un attestor de autorización binaria.

Puedes configurar la autorización binaria para que requiera atestaciones basadas en la ubicación del código fuente para evitar que se desplieguen imágenes de contenedor creadas a partir de una fuente no autorizada.

Para obtener más información al respecto:

Arquitectura

En el siguiente diagrama se muestran los componentes de una configuración de Binary Authorization y Cloud Build:

Pipeline de atestación de autorización binaria de Cloud Build.
Figura 1. Pipeline de Cloud Build que crea una atestación de Binary Authorization.

En este flujo de trabajo:

  1. El código para crear la imagen de contenedor se envía a un repositorio de origen.

  2. Una herramienta de integración continua (CI), Cloud Build, compila y prueba el contenedor.

  3. La compilación envía la imagen de contenedor a Container Registry u otro registro que almacene las imágenes compiladas.

  4. Cloud Key Management Service, que proporciona gestión de claves para el par de claves criptográficas, firma la imagen de contenedor. La firma resultante se almacena en una atestación recién creada.

  5. En el momento de la implementación, el attestor verifica la certificación mediante la clave pública del par de claves. La autorización binaria aplica la política. Para ello, requiere atestaciones firmadas para desplegar la imagen de contenedor.

Crear una atestación con Cloud Build y Cloud Key Management Service

En esta sección se explica cómo implementar la arquitectura anterior. Utiliza un paso de compilación personalizado de código abierto de la comunidad de Cloud Build. El paso de compilación personalizada firma una imagen de contenedor, crea la certificación y la sube a la autorización binaria.

Configurar la gestión de identidades y accesos

Para usar este paso de compilación, la cuenta de servicio de Cloud Build necesita los siguientes roles de gestión de identidades y accesos:

  • Lector del encargado de la atestación de autorización binaria
    • roles/binaryauthorization.attestorsViewer
  • Firmante o verificador de CryptoKey de Cloud KMS (si se usa una clave de KMS para firmar una atestación)
    • roles/cloudkms.signerVerifier
  • Vinculador de notas de Artifact Analysis
    • roles/containeranalysis.notes.attacher

Puedes usar los siguientes comandos para añadir los roles a la cuenta de servicio de Cloud Build de tu proyecto:

  1. Habilita Cloud Build:

    Habilita la API de Cloud Build en el proyecto de destino Google Cloud .

  2. Guarda el ID de tu proyecto en una variable de entorno:

    PROJECT_ID=PROJECT_ID
    

    donde PROJECT_ID es el Google Cloud ID del proyecto.

  3. Configura el proyecto de Google Cloud CLI:

    gcloud config set project