• Inicio
  • Blog
  • Cómo gestionar certificados de aplicaciones con Docker

Cómo gestionar certificados de aplicaciones con Docker

Los clientes suelen preguntarnos cómo utilizar nuestra plataforma de gestión de operaciones de PKI y certificados digitales, Keyfactor Commandpara gestionar certificados de aplicaciones en un entorno DevOps. Están "contenedorizando" sus aplicaciones con Docker y quieren gestionar los certificados dentro de los contenedores Docker.

Un poco de contexto sobre la cuestión...

Con DevOps (o la fusión deldesarrollo de software y las operaciones de TI), el concepto es tratar la infraestructura de forma similar a como se trata el código de la aplicación: mediante especificaciones formales y procesos de creación automatizados.

Antes del mundo DevOps, los desarrolladores de software solían crear aplicaciones sin tener en cuenta los detalles del entorno y la infraestructura reales en los que software tendría que ejecutarse. Incluso cuando se tenía en cuenta el entorno de destino, a menudo se hacían suposiciones incorrectas o se comunicaban mal a la gente de operaciones de TI. Cuando llegaba el momento de poner la aplicación en producción, el personal de operaciones de TI tenía dificultades para hacer que las aplicaciones funcionaran correctamente. Con DevOps, la creación de una definición formal de la infraestructura necesaria forma parte del proceso de desarrollo de software y se utilizan herramientas automatizadas para desplegar software dentro de esta infraestructura. La especificación formal de la infraestructura se denomina "infraestructura como código" o IaC.

La ventaja de IaC es que la definición de la infraestructura puede rastrearse en el control de código fuente junto con el código fuente de la aplicación, lo que ayuda a mantener el lado del desarrollo sincronizado con el de la infraestructura. Con IaC, la implantación de la infraestructura forma parte del proceso de creación de la aplicación. Esto permite la coherencia en el proceso de despliegue entre varios entornos de despliegue (prueba, control de calidad, puesta en escena, producción, etc.) y permite que la integración continua incluya la infraestructura.

Docker es una herramienta común como parte de un escenario DevOps. Docker permite tomar una parte de software y colocarla en un "contenedor" que abstrae la infraestructura y presenta un sistema operativo aislado a la aplicación. Los motores de orquestación, como Kubernetes o Docker Swarm, aprovechan IaC para realizar el despliegue automatizado y el escalado de contenedores. Los repositorios públicos como Docker Hub facilitan el intercambio de contenedores (y el correspondiente software) entre aplicaciones y organizaciones.

Todo esto está muy bien, pero añadir certificados a la mezcla crea retos adicionales:

  • La renovación de los certificados se produce con una cadencia distinta a la de las actualizaciones de las aplicaciones. Puede que publique versiones mensuales o trimestrales de software, pero los certificados deben renovarse anualmente. Cuando cesa el desarrollo de la aplicación, los certificados deben renovarse mientras se siga utilizando la aplicación.
  • Los certificados son gestionados por diferentes partes. Los certificados pueden adquirirse de autoridades de certificación públicas o emitirse desde una infraestructura de clave pública (PKI) privada interna; en ambos casos, los responsables de la adquisición o emisión no suelen ser los desarrolladores ni los responsables de operaciones de TI.

Mientras que desde el punto de vista del desarrollo puedes crear un contenedor que contenga tu contenido web o tu aplicación web, y tu proceso de prueba y construcción de integración continua puede actualizar y volver a desplegar estos contenedores con cada revisión de software , todavía necesitas considerar cómo actualizar y mantener los certificados que tu sistema presenta al mundo exterior. Este es el quid de la cuestión.

Entonces, ¿cuál es la respuesta...

Como con todo en nuestro campo, la respuesta suele ser "depende". Existen varios modelos para gestionar certificados de aplicaciones con Keyfactor Command y Docker. La buena noticia es que en la mayoría de los casos el modelo (y la respuesta) es sencillo.

Si no desea escribir ningún código, la forma más sencilla es desplegar nuestro contenedor de agente de orquestación de certificados junto con sus otros contenedores de aplicaciones. Nuestro agente gestiona los certificados utilizados por su aplicación a través del almacenamiento compartido disponible de forma nativa en Docker. Suponiendo que su aplicación puede obtener su certificado del sistema de archivos, esto no requiere ningún cambio en su aplicación o contenedores y no se requiere codificación o secuencias de comandos. Es una solución completamente lista para usar.

Keyfactor Docker 1

La ventaja de este modelo es que cada instancia del contenedor utiliza la misma ubicación de almacenamiento compartido, lo que hace que todos sus contenedores utilicen el mismo certificado. A medida que tu proceso de orquestación escala el número de nodos, no tienes que preocuparte de que cada servidor web detrás de tu balanceador de carga tenga el mismo certificado. Cuando llega el momento de renovar o cambiar el certificado, todos los contenedores tienen acceso al nuevo certificado automáticamente.

Tenga en cuenta que con este modelo, sus certificados se mantienen en el almacenamiento compartido, esto significa que los administradores de su almacenamiento compartido tienen acceso a la clave privada de su certificado. Normalmente, los administradores del almacenamiento compartido también serán administradores de Docker, que ya tienen acceso a los contenedores (que también contienen las claves privadas), por lo que esto no supone un riesgo adicional. Sin embargo, si su modelo administrativo separa las funciones entre los administradores de Docker y los administradores del almacenamiento compartido, esto puede ser un problema. En este caso, se pueden utilizar secretos Docker en lugar de almacenamiento compartido. Con los secretos de Docker, las claves privadas se cifran mientras están en reposo y en tránsito, y los administradores del almacenamiento no tendrían acceso a ellas.

El uso de secretos Docker implica el uso de una pequeña cantidad de secuencias de comandos dentro de su sistema de orquestación para recuperar el certificado de Keyfactor Command y almacenarlo como un secreto Docker.

Keyfactor Docker 2

Si su aplicación no puede recuperar sus certificados del sistema de archivos o utiliza algún formato de almacenamiento de certificados no estándar, se puede utilizar un script de inicio del contenedor para recuperar los certificados necesarios de Keyfactor Command e inyectarlos en su aplicación o almacenarlos en su formato propietario cada vez que se despliegue el contenedor.

Keyfactor Docker 3

Por último, si le parece bien acoplar los procesos de renovación de certificados y liberación de aplicaciones, o si necesita tener contenedores que se desplieguen en entornos que no tengan acceso a Keyfactor Command , puede utilizar Keyfactor Command para inyectar certificados durante el proceso de creación del contenedor.

Keyfactor Docker 4

Así que, en resumen, a la hora de gestionar certificados de aplicaciones en un entorno Docker con Keyfactor Command , hay varias formas de llevar a cabo la tarea, dependiendo de los requisitos de su aplicación y su entorno de ejecución. La mayoría de los clientes podrán utilizar un simple contenedor para gestionar sus certificados Docker.