Ir al contenido

Próximamente estarán disponibles los certificados de 47 días. ¿Todo listo?

Actúa ahora →

Estrategias modernas para firmar y verificar imágenes de contenedores con CodeSign Secure 

Estrategias modernas para firmar y verificar imágenes de contenedores con CodeSign Secure

Introducción 

Ataques a la cadena de suministro de software ya no son solo un riesgo teórico; están ocurriendo y están golpeando con fuerza. Incidentes como el Violación de SolarWinds y la vulnerabilidad de Log4Shell dejó dolorosamente claro que los atacantes ya no solo apuntan a su código, sino a todo lo que lo toca, incluidas las herramientas, bibliotecas y contenedores de los que depende. 

En esta realidad, firmar y verificar imágenes de contenedores no es algo opcional; es imprescindible. Si envía imágenes sin firmar u omite las comprobaciones de firma durante la implementación, deja la puerta abierta para que los atacantes introduzcan código malicioso sin que usted se dé cuenta. 

Ahí es donde entra en juego nuestro CodeSign Secure. 

CodeSign Secure facilita la adición de firmas digitales a las imágenes de sus contenedores y su verificación antes de que entren en producción. Tanto si ejecuta un flujo de trabajo de CI/CD dinámico como si gestiona cientos de microservicios, le ayuda a asegurar su cadena de suministro de contenedores sin ralentizar nada. 

En las siguientes secciones, veremos cómo nuestro CodeSign Secure se adapta a su flujo de trabajo y cómo protege sus imágenes con HSMclaves respaldadas y cómo puedes aplicar verificaciones de firma antes de implementar cualquier cosa. 

El papel de la firma de código en DevSecOps 

DevOps se centra en la velocidad: impulsar actualizaciones rápidamente, automatizar todo y mantener el ritmo. Pero esa velocidad conlleva riesgos. Cuanto más rápido se entrega el código, más probabilidades hay de que se filtre algo poco confiable. Ahí es donde... DevSecOps entra, integrando la seguridad en el proceso en lugar de agregarla al final. 

Una de las mejores maneras de generar esa confianza es mediante la firma de código. Al firmar imágenes de contenedores, básicamente les imprimes un sello que dice: "Esto proviene de nosotros y no ha sido manipulado". Es una comprobación sencilla que contribuye enormemente a garantizar que lo que se ejecuta en producción sea exactamente lo que se pretendía crear. 

Nuestra plataforma, CodeSign Secure, se conecta a su Canalización de CI / CD Así que firmar no es una tarea aparte; es simplemente parte de la compilación. Cada imagen que se compila y se envía se firma automáticamente. Y antes de implementarla, se puede verificar la firma para garantizar que no se haya manipulado nada durante el proceso. 

Se trata de automatizar la seguridad. Con nuestra plataforma, no debería tener que elegir entre rapidez y seguridad; obtiene ambas. 

Firma de imágenes de contenedores con CodeSign Secure

Antes de continuar con la firma de imágenes, es necesario instalar Docker y CoSign (nuestra herramienta CLI de CodeSign Secure) en esa máquina. 

Siga los pasos que se indican a continuación para instalar Cosign. 

Instalación de CoSign 

# binario 

wget “https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign-linux-amd64” 

mv cosign-linux-amd64 /usr/local/bin/cosign 

chmod +x /usr/local/bin/cosign

# rpm 

wget “https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign-2.0.0.x86_64.rpm”

rpm -ivh cosign-2.0.0.x86_64.rpm

#dkpg 

wget “https://github.com/sigstore/cosign/releases/download/v2.0.0/cosign_2.0.0_amd64.deb”

dpkg -i cosign_2.0.0_amd64.deb

Instalación y configuración de Python y Docker 

sudo apt-get install docker.io

sudo apt-get install python-is-python3

sudo apt instalar python3-pip

sudo apt-get install python3-docker

sudo apt-get -y install python3-openssl

sudo apt-get install -y dbus-user-session

sudo apt-get install -y docker-ce-rootless-extras

Si docker-ce-rootless-extras arroja un error, siga los pasos a continuación: 

apt-get update sudo

sudo apt-get install certificados-ca curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg echo “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt-get update sudo

sudo apt-get install docker-ce-rootless-extras

Ahora deberá iniciar sesión en su cuenta de Docker Hub ejecutando el siguiente comando.

inicio de sesión de sudo docker 

Configuración de la firma de contenedores 

  • Descargue las herramientas de firma de contenedores del portal CodeSign Secure.
  • Vaya a la carpeta SignImage.
  • Abra el archivo “ec-signer.conf” y actualice la URL de diseño de código, la ruta de su certificado de autenticación SSL y la contraseña del certificado.
    firma de contenedores

    NOTA: El certificado de autenticación SSL y la contraseña se pueden generar desde el portal CodeSignSecure.

    firma de contenedores
  • Terminal abierta
  • Implementación

    ./ec-signer –nombre_del_proyecto= –nombre_de_imagen= –docker_nombredeusuario=

  • Se le solicitará que proporcione la contraseña de Docker Hub y los privilegios de root al usuario actual
    firma de contenedores
  • Podrás ver una nueva imagen de firma en tu cuenta de Docker Hub.
    firma de contenedores

Verificación de la imagen del contenedor 

La verificación de imágenes de contenedor le permitirá implementar solo imágenes Docker firmadas y rechazar las no firmadas. Es necesario implementar Kubernetes para verificar la firma de las imágenes de contenedor. 

Instalación de Kubernetes 

Siga el siguiente comando para instalar Kubernetes. 

curl -sfL https://get.k3s.io | sh – 

Creación de servicios de Kubernetes 

Antes de que podamos verificar una imagen en un entorno de Kubernetes, es necesario implementar los siguientes servicios en el clúster de Kubernetes 

  • Verificar servicio de imágenes 
  • Servicio de webhook de validación de imágenes 

Para crear el servicio de verificación de imágenes, siga los pasos a continuación: 

  • Vaya al directorio ../VerifyImage/image-verifier.
  • Cree una imagen de Docker con el nombre “verifyImage” utilizando el Dockerfile presente en la carpeta

    Por ejemplo:

    sudo docker build -t aryan34/demo:verifyImage

    donde “aryan34” es el nombre de usuario de Docker y “demo” es el nombre del repositorio de Docker Hub.

  • Ahora envíe esta imagen a su cuenta de Docker Hub

    Por ejemplo:

    sudo docker image push aryan34/demo:verifyImage

    donde “aryan34” es el nombre de usuario de Docker y “demo” es el nombre del repositorio de Docker Hub.

  • Ahora abra el archivo validator-deploy.yaml y actualice la siguiente configuración
    1. nombre_certificado
    2. servidor_url
    3. ruta_del_archivo_pfx
    4. contraseña del archivo pfx
    5. NOMBRE_USUARIO_DOCKER
    6. CONTRASEÑA DE DOCKER
    7. imagen (NOTA: Mantenga el nombre de la imagen como “verifyImage”. Solo cambie el nombre de usuario de Docker y el nombre del repositorio).
    firma de contenedores
  • Implementar el servicio de verificación de imágenes

    sudo kubectl apply -f validator-deploy.yaml

Para crear el servicio de validación de imágenes, siga los pasos a continuación: 

  • Vaya al directorio ../VerifyImage/validating-webhook.
  • Cree una imagen de Docker con el nombre “image-validation-webhook” utilizando el Dockerfile presente en la carpeta.

    Por ejemplo:

    sudo docker build -t aryan34/demo:webhook de validación de imagen

    Donde “aryan34” es el nombre de usuario de Docker y “demo” es el nombre del repositorio de Docker Hub.

  • Ahora envíe esta imagen a su cuenta de Docker Hub

    Por ejemplo:

    sudo docker image push aryan34/demo:webhook de validación de imagen

    donde “aryan34” es el nombre de usuario de Docker y “demo” es el nombre del repositorio de Docker Hub.

  • Ahora implemente los secretos del webhook y los archivos yaml de configuración.

    sudo kubectl apply -f webhook-secret.yaml

    sudo kubectl apply -f webhook-config.yaml

  • Ahora abra el archivo webhook-deploy.yaml y actualice la siguiente configuración
    1. imagen (NOTA: Mantenga el nombre de la imagen como “image-validation-webhook”. Solo cambie el nombre de usuario de Docker y el nombre del repositorio).
    firma de contenedores
  • Implementar el webhook de validación de imágenes

    sudo kubectl apply -f webhook-deploy.

  • Si los servicios se implementan correctamente, cuando ejecutamos el siguiente comando:

    sudo kubectl get pods -all-namespaces

Deberíamos obtener el siguiente resultado: 

firma de contenedores

Pruebas 

Si intentamos implementar una imagen de contenedor sin firmar, la implementación fallará. Solo podremos implementar una imagen firmada gracias a nuestros servicios de verificación y validación de Kubernetes. 

Implementación de una imagen sin firmar 

Necesitamos crear un archivo yaml para la imagen sin firmar 

Hemos creado un archivo demo-deployment-unsigned.yaml para implementar la imagen aryan34/demo:notSigned sin firmar. 

Aquí tienes un archivo YAML de ejemplo. Recuerda cambiar el nombre del servicio implementado (demo-deployment-unsigned), el nombre de la imagen y el número de puerto. 

apiVersion: apps/v1 kind: Deployment metadata: name: demo-deployment-unsigned labels: app: demo spec: replicas: 1 # Número de réplicas deseadas selector: matchLabels: app: demo template: metadata: labels: app: demo spec: containers: - name: demo image: aryan34/demo:notSigned # imagen de demostración sin firmar ports: - containerPort: 8997 # Puerto para exponer

Para implementar la imagen sin firmar usando Kubernetes, ejecute el siguiente comando. 

  sudo kubectl apply -f demo-deployment-unsigned.yaml 

firma de contenedores

Implementación de una imagen firmada 

Aquí tienes un archivo YAML de ejemplo. Recuerda cambiar el nombre del servicio implementado (deployed-demo), el nombre de la imagen y el número de puerto. 

apiVersion: apps/v1 kind: Deployment metadata: name: demo-deployment labels: app: demo spec: replicas: 1 # Número de réplicas deseadas selector: matchLabels: app: demo template: metadata: labels: app: demo spec: containers: - name: demo image: aryan34/demo:new3 # imagen de demostración firmada ports: - containerPort: 8999 # Puerto para exponer

Para implementar la imagen firmada usando Kubernetes, ejecute el siguiente comando. 

    sudo kubectl apply -f demo-deployment.yaml 

Ahora, si verifica todos los pods, verá un servicio de implementación de demostración ejecutándose correctamente. 

firma de contenedores

CodeSign Secure + SBOM: Garantizando la transparencia de la cadena de suministro 

Saber qué hay dentro de tus contenedores es tan importante como saber quién los construyó. Ahí es donde entran en juego las SBOM (Lista de Materiales de Software). Estas enumeran todos los componentes en la imagen de tu contenedor, como una especie de etiqueta nutricional para tu software. 

Con CodeSign Secure, puede firmar sus SBOM y adjuntarlos directamente a las imágenes de su contenedor. Esto significa que cualquier persona que extraiga su imagen podrá verificar tanto la imagen como el SBOM para confirmar que son legítimos y están intactos. 

Nuestra plataforma es compatible con formatos SBOM populares como SPDX, por lo que está cubierto independientemente de las herramientas que utilice. ¿Y lo mejor? Puede aplicar estas comprobaciones. Si una imagen aparece sin un SBOM firmado o si este no coincide con lo esperado, puede bloquear la implementación inmediatamente. 

¿Sin SBOM? Sin despliegue. Fácil. 

Esto le brinda visibilidad de lo que se está ejecutando y ayuda a detectar problemas antes de que se conviertan en problemas de seguridad más adelante. 

CodeSign Secure y criptografía postcuántica 

La computación cuántica aún no ha llegado, pero cuando lo haga, muchos de los métodos de cifrado actuales podrían verse en apuros. Algoritmos como RSA y ECC, de los que dependemos hoy para firmar, no tendrán ninguna oportunidad contra una máquina cuántica lo suficientemente potente. 

Por eso nuestra plataforma, CodeSign seguroYa está listo para soportar LMS (Leighton-Micali Signature), uno de los algoritmos poscuánticos recomendados por el NIST. LMS está diseñado para mantenerse robusto incluso si las computadoras cuánticas se convierten en una amenaza real. 

Ya puedes empezar a probar nuestra plataforma con LMS para ver cómo la firma poscuántica se integra en tu flujo de trabajo. Funciona con HSM compatibles con LMS y se integra como cualquier otro algoritmo que CodeSign Secure maneja. No se necesitan trucos especiales. 

De cara al futuro, seguiremos añadiendo compatibilidad con más algoritmos poscuánticos a medida que se finalicen los estándares, incluyendo los del concurso PQC del NIST. Así, cuando sea necesario el cambio a la firma cuántica segura, no tendrá que preocuparse; lo tenemos cubierto.

Características de grado empresarial

Al ejecutar la firma de código a gran escala, se necesita más que una simple firma. Se necesita control, visibilidad y flexibilidad para adaptarse al funcionamiento de su equipo. 

  • Control de acceso y auditoría basados ​​en roles: No todos deberían poder firmar todas las imágenes. Con nuestro RBAC de CodeSign Secure, puede configurar permisos detallados para que solo sus ingenieros de lanzamiento puedan aprobar las compilaciones de producción, mientras que los desarrolladores tienen acceso a entornos de menor riesgo. Cada firma se registra automáticamente, lo que le proporciona un registro de auditoría completo de quién firmó qué, cuándo y con qué clave. 
  • Panel central para la visibilidad de la firma: Se acabaron los días de buscar registros en múltiples trabajos de CI. El panel de control de nuestra plataforma reúne todos tus eventos de firma en un solo lugar, mostrándote de un vistazo qué imágenes tienen firmas válidas, qué claves usaron y cualquier verificación fallida. Si algo parece extraño, lo detectarás de inmediato y podrás consultar los detalles. 
  • Arquitectura API-First para integraciones personalizadas: ¿Desea integrar nuestra plataforma con sus propias herramientas o automatizar un flujo de trabajo personalizado? Todas las funciones de CodeSign Secure se exponen mediante una API REST bien documentada, lo que le permite crear scripts prácticamente para activar un paso de firma y envío en su herramienta de CI personalizada, generar informes internos o integrarla con el sistema de tickets de seguridad que ya utiliza. 

Con estas funciones empresariales, CodeSign Secure no solo firma sus imágenes, sino que también lo ayuda a administrar y monitorear cada paso del proceso. 

Solución de firma de código empresarial

Obtenga una solución para todas sus necesidades criptográficas de firma de código de software con nuestra solución de firma de código.

Conclusión 

Las amenazas a la cadena de suministro no van a desaparecer, e ignorarlas no es una opción. Pero el confinamiento no tiene por qué frenarlo. Con nuestro CodeSign seguroObtendrá una herramienta que se adapta perfectamente a su flujo de trabajo existente, agrega seguridad sólida donde importa y le permite tener el control desde la compilación hasta la implementación. 

Desde la firma de imágenes de contenedores y SBOM hasta su verificación con claves respaldadas por HSM y la preparación para un futuro cuántico seguro, nuestra plataforma lo ayuda a cumplir con todos los requisitos, sin agregar fricción para su equipo. 

Si está listo para tomar en serio la seguridad de los contenedores sin complicar sus flujos de trabajo, pruebe CodeSign Secure.