Conceptos clave

En esta página, se incluye información sobre conceptos fundamentales relacionados con la autorización binaria.

Políticas

En la autorización binaria, una política es un conjunto de reglas que rigen la implementación de imágenes de contenedor en Google Kubernetes Engine (GKE). Una política está compuesta por las siguientes partes:

Puedes configurar una política mediante una de las siguientes opciones:

  • Google Cloud Console
  • Comandos de gcloud

Cuando usas comandos de gcloud, exportas y modificas una definición de la política en formato YAML antes de volver a importarla a tu proyecto. El formato YAML refleja la estructura interna de una política en el almacenamiento de la autorización binaria. Para obtener más información sobre este formato, consulta la Referencia sobre las políticas en formato YAML.

Cada proyecto de Google Cloud Platform (GCP) puede tener una política. En una configuración de proyecto único, esta política rige la implementación a GKE en la que todos los recursos de la canalización de la implementación forman parte del mismo proyecto. Para una configuración de varios proyectos, es posible que una sola política rija la implementación de imágenes desde Container Registry en un proyecto hasta un clúster de GKE que se ejecuta en otro proyecto.

Para obtener más información, consulta Configura una política mediante la CLI y Configura una política mediante Console.

Reglas

Una regla es la parte de una política que define las restricciones que las imágenes de contenedor deben pasar antes de que puedan implementarse. Por lo general, una regla solicitará una o más certificaciones con firma digital. El contenedor puede implementarse cuando se verifica la firma de cada certificación necesaria, que indica que se completaron todos los procesos internos necesarios. Una regla también puede permitir o denegar todas las implementaciones desde rutas específicas de Container Registry o hacia clústeres de GKE específicos.

Las reglas se definen cuando configuras una política. Una política tiene una regla predeterminada y muchas reglas específicas del clúster.

Reglas predeterminadas

Cada política tiene una regla predeterminada. Esta regla se aplica a cualquier solicitud de implementación que no coincida con una regla específica del clúster. Si la política no tiene una regla específica del clúster, siempre se aplica la regla predeterminada. En un archivo YAML de política, la regla predeterminada se especifica en el nodo defaultAdmissionRule.

Reglas específicas del clúster

Una política también puede tener una o más reglas específicas del clúster. Este tipo de regla se aplica solo a las imágenes de contenedor que se deben implementar solo en clústeres de GKE específicos. En un archivo YAML de política, cada regla específica del clúster se especifica en un nodo clusterAdmissionRule.

Modos de evaluación

Cada regla tiene un modo de evaluación que especifica el tipo de restricción que la autorización binaria aplica a la regla. El modo de evaluación de una regla se especifica mediante la propiedad evaluationMode en el archivo YAML de política.

Existen tres modos de evaluación:

  • Permitir todas las imágenes
  • Inhabilitar todas las imágenes
  • Solicitar certificaciones

Una regla para Solicitar certificaciones requiere que un firmante firme de forma digital el resumen de la imagen del contenedor y cree una certificación antes de la implementación. En el momento de la implementación, el ejecutor de la autorización binaria usa un certificador para verificar la firma en la certificación antes de implementar la imagen de contenedor asociada.

Modos de aplicación

Cada regla también tiene un modo de aplicación, que especifica la acción que realiza GKE cuando una imagen no cumple con la regla. Una regla puede tener los siguientes modos de aplicación:

  • Bloqueo y registro de auditoría: Se bloquea la implementación de imágenes que no cumplen con la regla y se escribe un mensaje en el registro de auditoría para indicar por qué no se implementó la imagen.

  • Ejecución de prueba: Solo para el registro de auditoría: Permite la implementación de imágenes que no cumplen con las especificaciones, pero escribe detalles sobre cualquier incumplimiento en el registro de auditoría.

La mayoría de las reglas de producción usan el modo de aplicación Bloqueo y registro de auditoría. Por lo general, la Ejecución de prueba: Solo para el registro de auditoría se usa a fin de probar una política en tu entorno antes de que entre en vigor.

El modo de aplicación de una regla se especifica mediante la propiedad enforcementMode en el archivo YAML de la política.

Consulta Visualiza los registros de auditoría para obtener más información sobre los mensajes escritos en Cloud Logging.

Imágenes exentas

Una imagen exenta es una imagen de contenedor que está exenta de las reglas de política. La autorización binaria siempre permite que se implementen imágenes exentas Cada proyecto tiene una lista blanca de imágenes exentas que la ruta de registro específica. De forma predeterminada, las imágenes en la ruta gcr.io/google_containers/*, k8s.gcr.io/* y las rutas adicionales están exentas, ya que contienen los recursos necesarios para que GKE pueda iniciar un clúster de manera correcta con la política predeterminada activa.

La lista blanca de imágenes exentas se especifica mediante la propiedad admissionWhitelistPatterns en el archivo YAML de la política.

Patrones de la lista blanca

Para incluir en la lista blanca a todas las imágenes de contenedor cuya ubicación de registro coincida con la ruta especificada, sigue estos pasos:

gcr.io/example-project/*

Para incluir una imagen específica en la lista blanca, sigue estos pasos:

gcr.io/example-project/helloworld

Para incluir en la lista blanca una versión específica de una imagen por etiqueta, sigue estos pasos:

gcr.io/example-project/helloworld:latest
gcr.io/example-project/helloworld:my-tag

Para incluir en una lista blanca una versión específica de una imagen según su resumen, sigue estos pasos:

gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c

Imágenes del sistema mantenidas por Google

Confiar en todas las imágenes del sistema mantenidas por Google provoca que la autorización binaria exima una lista de imágenes del sistema mantenidas por Google de una evaluación de políticas más detallada. Cuando tienes esta configuración habilitada, la aplicación de las políticas no bloquea las imágenes que requiere GKE. La política global se evalúa antes de la evaluación de la política del usuario y además de ella.

Puedes habilitar o inhabilitar esta configuración mediante la propiedad globalPolicyEvaluationMode en el archivo YAML de la política. Puedes ver el contenido de la política global mediante el siguiente comando:

gcloud container binauthz policy export --project=binauthz-global-policy

Certificaciones

Una certificación es un documento digital que certifica que GKE puede implementar la imagen de contenedor.

A veces, el proceso para crear una certificación se denomina “firmar una imagen”. Una certificación se crea después de que se compila una imagen de contenedor. Cada contenedor tiene un resumen único a nivel global. Un firmante firma el resumen de la imagen de contenedor mediante una clave privada a partir de un par de claves y usa la firma para crear la certificación. En el momento de la implementación, el ejecutor de la autorización binaria usa la clave pública del certificador para verificar la firma de la certificación. Por lo general, un certificador corresponde a un solo firmante.

Una certificación indica que la imagen de contenedor asociada se compiló mediante la ejecución correcta de un proceso específico necesario. Por ejemplo, si el firmante es un representante de la función de garantía de calidad (QA), la certificación puede indicar que la imagen de contenedor aprobó todas las pruebas funcionales de extremo a extremo en un entorno de etapa de pruebas.

Para habilitar las certificaciones en la autorización binaria, el enforcementMode de tu política se establece como REQUIRE_ATTESTATION.

Consulta la descripción general de la autorización binaria para los casos de uso típicos.

Para obtener información sobre cómo crear una certificación, consulta Crea certificaciones.

Firmantes

Un firmante es una persona o un proceso automatizado que crea una certificación mediante la firma de un descriptor de imagen de contenedor único con una clave privada. La certificación se verifica en el momento de la implementación mediante la clave pública correspondiente almacenada un certificador antes de que se implemente el contenedor asociado.

Certificadores

Un certificador es un recurso de GCP que la autorización binaria usa para verificar la certificación en el momento de la implementación de la imagen de contenedor. Los certificadores incluyen la clave pública que corresponde a la clave privada que usa un firmante para firmar el resumen de la imagen de contenedor y crear la certificación. El ejecutor de la autorización binaria usa el certificador en el momento de la implementación a fin de limitar las imágenes de contenedor que se pueden implementar a aquellas con una certificación comprobable adjunta creada antes de la implementación.

Como tal, el personal de operaciones de seguridad puede administrar los certificadores y también administrar los pares de claves públicas y privadas, mientras que los firmantes suelen ser ingenieros de software, QA de DevOps o personal de cumplimiento responsable de producir imágenes de contenedor implementables, firmarlas con la clave privada y crear las certificaciones antes de intentar implementarlas.

Los certificadores tienen los siguientes recursos:

Cuando configuras una política que contiene una regla a fin de Solicitar certificaciones, debes agregar un certificador en cada persona o proceso que deba verificar que la imagen de contenedor esté lista para la implementación. Puedes agregar certificadores mediante Google Cloud Console, la interfaz de gcloud o la API de REST de la autorización binaria.

Para obtener más información, consulta Crea certificadores mediante la CLI o Crea certificadores mediante Console.

Claves criptográficas

La autorización binaria usa firmas digitales a fin de verificar imágenes en el momento de la implementación cuando la política contiene una regla para Solicitar certificaciones.

Se genera un par de claves. El firmante usa la clave privada para firmar un descriptor de imagen de contenedor. Esto crea una certificación.

Luego, se crea un certificador y se almacena en la política. La clave pública que corresponde a la clave privada que se usó para firmar se sube y se adjunta al certificador.

En el momento de la implementación, GKE llama a la aplicación de la autorización binaria, que usa certificadores en la política para verificar la validez de las certificaciones asociadas y garantizar que se pueda implementar cada imagen de contenedor con firma digital.

La autorización binaria admite dos tipos de claves:

Las claves de PKIX pueden almacenarse de forma local, externa o en Cloud Key Management Service.

Notas de Container Analysis

La autorización binaria usa Container Analysis para almacenar los metadatos de confianza que se usan en el proceso de autorización. En cada certificador que creas, se debe crear una nota de Container Analysis. Cada certificación se almacena como un caso de esta nota.

Cuando la autorización binaria evalúa una regla que requiere que los certificadores tengan una imagen verificada, comprueba el almacenamiento de Container Analysis para ver si las certificaciones necesarias están presentes.