En esta página se explica cómo crear un certificador personalizado en la autorización binaria mediante la consola Google Cloud . También puede seguir estos pasos mediante la CLI de Google Cloud o la API REST. Esta tarea forma parte de la configuración de la autorización binaria.
Usuarios de Cloud Build: pueden usar el built-by-cloud-build
attestor
para desplegar solo imágenes creadas por Cloud Build.
Antes de empezar
Antes de crear verificadores, haz lo siguiente:
Información general
Un encargado de la atestación es un recurso que utiliza la autorización binaria para verificar una atestación. Google Cloud Para obtener más información sobre la autorización binaria, consulta la descripción general de la autorización binaria.
Para crear un attestor, sigue estos pasos:
- Configura un par de claves que se pueda usar para firmar una imagen, crear una atestación y, más adelante, verificar la imagen cuando se implemente. Los pares de claves PKIX son pares de claves generados por Cloud Key Management Service (Cloud KMS) en formato compatible con PKIX.
- Crea el attestor en Binary Authorization y asocia la clave pública que has creado.
En una configuración de un solo proyecto, creas tu encargado de la atestación en el mismo proyecto en el que configuras tu política de autorización binaria. En una configuración de varios proyectos, lo más probable es que tengas un proyecto de implementación en el que se configure tu política y un proyecto de verificador independiente en el que se almacenen tus verificadores.
Configurar claves criptográficas
La autorización binaria te permite usar claves PKIX para firmar una imagen de forma segura y, después, verificarla. De esta forma, solo las partes verificadas pueden autorizar una imagen de contenedor. Para usar la certificación, debes configurar claves asimétricas, como las claves de infraestructura de clave pública (X.509) (PKIX), para verificar de forma segura la identidad de los certificadores. Cuando se implementa una imagen, la autorización binaria comprueba la atestación de la imagen, que se firmó con la clave privada, mediante la clave pública del attestor.
En esta guía, se usa el algoritmo de firma digital de curva elíptica (ECDSA) recomendado para generar un par de claves PKIX. También puedes usar claves RSA o PGP para firmar. Consulta Propósitos y algoritmos de claves para obtener más información sobre los algoritmos de firma.
Crear un par de claves PKIX
La autorización binaria te permite usar pares de claves PKIX asimétricas para firmar y verificar una imagen.
Un par de claves PKIX consta de una clave privada, que el firmante usa para firmar digitalmente las certificaciones, y una clave pública, que añades al certificador. En el momento de la implementación, la autorización binaria usa esta clave pública para verificar la certificación firmada por la clave privada.
Los pares de claves asimétricas generados y almacenados en Cloud KMS cumplen el formato PKIX. Para crear una clave de Cloud KMS que se pueda usar con Autorización binaria, consulta Crear claves asimétricas. Asegúrate de elegir Firma asimétrica como finalidad de la clave al crearla.
PKIX (Cloud KMS)
Para crear el par de claves en Cloud KMS, sigue estos pasos:
Configura las variables de entorno necesarias para crear el par de claves.
KMS_KEY_PROJECT_ID=${PROJECT_ID} KMS_KEYRING_NAME=my-binauthz-keyring KMS_KEY_NAME=my-binauthz-kms-key-name KMS_KEY_LOCATION=global KMS_KEY_PURPOSE=asymmetric-signing KMS_KEY_ALGORITHM=ec-sign-p256-sha256 KMS_PROTECTION_LEVEL=software KMS_KEY_VERSION=1
Crea el conjunto de claves.
gcloud kms keyrings create ${KMS_KEYRING_NAME} \ --location ${KMS_KEY_LOCATION}
Crea la clave:
gcloud kms keys create ${KMS_KEY_NAME} \ --location ${KMS_KEY_LOCATION} \ --keyring ${KMS_KEYRING_NAME} \ --purpose ${KMS_KEY_PURPOSE} \ --default-algorithm ${KMS_KEY_ALGORITHM} \ --protection-level ${KMS_PROTECTION_LEVEL}
PKIX (clave local)
Para generar un nuevo par de claves asimétricas PKIX locales y almacenarlo en un archivo, haz lo siguiente:
Genera la clave:
PRIVATE_KEY_FILE="/tmp/ec_private.pem" openssl ecparam -genkey -name prime256v1 -noout -out ${PRIVATE_KEY_FILE}
Como este archivo contiene una clave pública y una privada, debes extraer la clave pública en un archivo independiente para poder añadirla al verificador:
PUBLIC_KEY_FILE="/tmp/ec_public.pem" openssl ec -in ${PRIVATE_KEY_FILE} -pubout -out ${PUBLIC_KEY_FILE}
Crear el encargado de la atestación
El siguiente paso es crear el attestor y asociar una nota de análisis de artefactos y una clave pública.
La autorización binaria utiliza Artifact Analysis para almacenar metadatos de confianza que se usan en el proceso de autorización. Por cada attestor que cree, debe crear una nota de Artifact Analysis. Cada atestación se almacena como una instancia de esta nota.
Para crear el encargado de la atestación, sigue estos pasos:
Ve a la página Autorización binaria del proyecto de atestación.
En la pestaña Encargados de la atestación, haz clic en Crear.
Haz clic en Create New Attestor (Crear nuevo certificador).
En Nombre del attestor, escribe un nombre para el attestor (por ejemplo, build-secure o prod-qa).
Para añadir la clave pública al attestor, haz lo siguiente:
PKIX (clave local)
- Haz clic en Añadir clave PKIX.
- Haz clic en Importar desde un archivo.
- Busca y selecciona el archivo de clave PKIX que has guardado anteriormente. Nota: También puedes pegar una clave pública en formato PEM.
- Selecciona el Algoritmo de firma. La clave de ejemplo de esta guía se genera con el algoritmo Curva elíptica P256 - Digest SHA.
PKIX (Cloud KMS)
- Haz clic en Añadir clave PKIX.
- Haz clic en Importar desde Cloud KMS.
Introduce el ID de recurso de la versión de la clave en la ventana que se abre. El formato del ID de recurso es el siguiente:
projects/KMS_KEY_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/KMS_KEYRING_NAME/cryptoKeys/KMS_KEY_NAME/cryptoKeyVersions/KMS_KEY_VERSION
donde:
- KMS_KEY_PROJECT_ID es el ID del proyecto en el que se almacenan las claves.
- KMS_KEY_LOCATION es la ubicación de la clave (
global
es el valor predeterminado). - KMS_KEYRING_NAME es el nombre del conjunto de claves
- KMS_KEY_NAME es el nombre de la clave
- KMS_KEY_VERSION es la versión de clave
Si has creado un par de claves de Cloud KMS con las variables de entorno de ejemplo de esta página, puedes ver el ID de recurso con el siguiente comando:
echo projects/${KMS_KEY_PROJECT_ID}/locations/${KMS_KEY_LOCATION}/keyRings/${KMS_KEYRING_NAME}/cryptoKeys/${KMS_KEY_NAME}/cryptoKeyVersions/${KMS_KEY_VERSION}
Haz clic en Enviar.
Si quieres usar una nota que hayas creado anteriormente, despliega la sección Configuración avanzada.
Desmarca la opción Generar automáticamente una nota de Artifact Analysis.
Introduce el nombre completo en el campo ID de nota de análisis de artefactos. El nombre tiene el formato
projects/PROJECT_ID/notes/NOTE_ID
.
Haz clic en Crear.
Verificar que se ha creado el encargado de la atestación
Para verificar que se ha creado el encargado de la atestación, sigue estos pasos:
Vuelve a la página Autorización binaria de la Google Cloud consola.
Abre la pestaña Attestors (Certificadores).
Configuración multiproyecto
Si utilizas una configuración de varios proyectos, en la que tienes proyectos de implementador y de verificador independientes, hay permisos adicionales que deben definirse en el recurso de verificador para que el proyecto de implementador pueda usar las verificaciones creadas por él durante la implementación.
Añadir una vinculación de roles de gestión de identidades y accesos al proyecto de implementación
Debes añadir un enlace de rol de gestión de identidades y accesos a la cuenta de servicio del proyecto de implementación del verificador. Autorización binaria usa esta cookie cuando evalúa una política para determinar si la cuenta tiene permisos para acceder al attestor.
Debes añadir el enlace de rol de gestión de identidades y accesos desde la línea de comandos, ya que este paso no se admite en la consola de Google Cloud .
Para añadir la vinculación de roles de gestión de identidades y accesos, siga estos pasos:
Configura variables de entorno para almacenar los nombres y números de tus proyectos.
DEPLOYER_PROJECT_ID=PROJECT_ID DEPLOYER_PROJECT_NUMBER="$( gcloud projects describe "${DEPLOYER_PROJECT_ID}" \ --format="value(projectNumber)" )"
Configura variables de entorno para almacenar los nombres de las cuentas de servicio de los proyectos:
DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
Añade la vinculación de roles de gestión de identidades y accesos:
gcloud --project ATTESTOR_PROJECT_ID \ beta container binauthz attestors add-iam-policy-binding \ "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \ --member="serviceAccount:${DEPLOYER_SERVICE_ACCOUNT}" \ --role=roles/binaryauthorization.attestorsVerifier
Añade una vinculación de rol de gestión de identidades y accesos para el usuario que configura la autorización binaria
Debes añadir un enlace de rol de gestión de identidades y accesos para el usuario que añade un attestor a la política de autorización binaria en el proyecto de implementación, ya que el usuario debe tener el permiso para ver el attestor que va a añadir. Si quieres, puedes revocar este permiso de forma segura una vez que se haya añadido el attestor.
También debes añadir el enlace de rol de gestión de identidades y accesos desde la línea de comandos, ya que este paso no se admite en la consola de Google Cloud .
Para añadir la vinculación de roles de gestión de identidades y accesos, siga estos pasos:
gcloud --project ATTESTOR_PROJECT_ID \ beta container binauthz attestors add-iam-policy-binding \ "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \ --member=ADMIN_EMAIL_ACCOUNT \ --role=roles/binaryauthorization.attestorsViewer
Para quitar la vinculación del rol de gestión de identidades y accesos después de añadir el attestor, sigue estos pasos:
gcloud --project ATTESTOR_PROJECT_ID \ beta container binauthz attestors remove-iam-policy-binding \ "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \ --member=ADMIN_EMAIL_ACCOUNT \ --role=roles/binaryauthorization.attestorsViewer
Siguientes pasos
- Consulta cómo crear certificaciones para tu certificador.
- Actualiza tu política de autorización binaria para requerir certificaciones mediante la Google Cloud consola, la CLI de Google Cloud y la API REST.