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:
- Introducción general a la autorización binaria
- Codelab: Protege tus implementaciones de GKE con la autorización binaria
Arquitectura
En el siguiente diagrama se muestran los componentes de una configuración de Binary Authorization y Cloud Build:
En este flujo de trabajo:
El código para crear la imagen de contenedor se envía a un repositorio de origen.
Una herramienta de integración continua (CI), Cloud Build, compila y prueba el contenedor.
La compilación envía la imagen de contenedor a Container Registry u otro registro que almacene las imágenes compiladas.
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.
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:
Habilita Cloud Build:
Habilita la API de Cloud Build en el proyecto de destino Google Cloud .
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.
Configura el proyecto de Google Cloud CLI:
gcloud config set project