Proteger las imágenes de los contenedores con la herramienta gratis de Google (Rules_oci con Bazel)

Google ha puesto a disposición general Rules_oci, un complemento de Bazel de código abierto (“conjunto de reglas”) que hace que sea más fácil y seguro crear imágenes de contenedores con Bazel. Brinda soporte tanto para la comunidad de contenedores como para la seguridad de imágenes de contenedores. Bazel mantiene las dependencias y las almacena en caché de acuerdo con su hash de integridad, lo que lo hace ideal para brindar garantías de cadena de suministro basadas en el concepto Trust-on-First-Use. La creación de imágenes base Distroless ampliamente utilizadas para Docker es una forma en que Google utiliza Bazel.

Distroless es un conjunto de imágenes básicas con lo mínimo que aumenta la seguridad de la cadena de suministro. Se adhieren a las mejores prácticas seguidas por Google y otras grandes organizaciones que han estado usando contenedores en producción durante muchos años. Limitan el contenido de su contenedor de tiempo de ejecución a solo lo que se requiere para su aplicación. El uso de imágenes base básicas alivia el costo de manejar los riesgos relacionados con las preocupaciones de la cadena de suministro, como las vulnerabilidades de licencias, gobernanza y seguridad.

En el pasado, rules_docker permitía crear imágenes de contenedores; sin embargo, ahora está en modo de mantenimiento. Por varias razones, el nuevo conjunto de reglas, denominado rules_oci, es más apropiado para Distroless y la mayoría de las compilaciones de contenedores de Bazel.

Actualmente existen varios tiempos de ejecución de contenedores y formatos de imagen como resultado del estándar Open Container Initiative. Rules_oci no depende del demonio Docker que se esté ejecutando actualmente en una máquina.

Antes de que existieran grandes herramientas de manipulación de contenedores como Crane, Skopeo y Zot, se desarrolló rules_docker. Rules_oci puede evitar desarrollar o mantener cualquier herramienta específica de Bazel simplemente confiando en cadenas de herramientas de terceros confiables.

Rules_oci es significativamente más fácil de mantener que Rules_docker, ya que no incluye ninguna regla específica del idioma. Además, se mantiene alejado de los inconvenientes de la dependencia obsoleta de otros conjuntos de reglas de idioma. Rules_oci también tiene varias características fantásticas más que vale la pena mencionar. Por ejemplo, mejora el almacenamiento en caché y hace que el uso de un registro privado sea transparente mediante el uso del descargador de Bazel para recopilar capas de un registro distante. Los sistemas de orientación como los servidores basados en ARM se facilitan con las imágenes de múltiples arquitecturas, que también habilitan los contenedores de Windows. Los usuarios pueden usar la firma de código para asegurarse de que las imágenes de contenedor que usan hayan sido desarrolladas por el desarrollador que las firmó y no se modificaron en el camino (por ejemplo, por un ataque de persona en el medio). Este es un excelente momento para probar rules_oci si ya usas rules_docker o estás pensando en utilizar Bazel para construir tus contenedores.