Secretos para microservicios

En la vida de todo desarrollador, en un mundo de microservicios, es habitual toparse con el problema de la gestión de los secretos.

El escenario mas natural es un repositorio en Github, Gitlab, Bitbucket o similar, el cual debe consumir servicios de todo tipo que, casi siempre, requieren autenticación (cuentas de servicio, tokens, jwt’s, usuario/password, etc)

Por cuestiones de auditoria resulta imposible colocar los secretos en texto plano e incluirlas en el repositorio

Esquema pensado en equipos agiles

Tu equipo seguramente es del tipo agil, con backlogs en Jira, Trello o alguno similar, con lo cual podemos admitir que tu equipo tendrá una eventual identidad.

Digamos, si tu equipo tiene cinco integrantes y se llama “Los avengers”, tendrá una misión y un conunto de artefactos bajo su alcance

Con todo esto entendido de antemano, podemos pensar en un sistema muy sencillo, capaz de aglutinar estas premisas

El Secreteador

Una solución pensada para resolver el tema de la gestión de secretos. ¿Como?

  1. Un administrador, generalmente un SRE o Cloud, crea un equipo en la plataforma y tiene el poder de agregar/quitar integrantes
  2. A cada equipo se le asignan un determinado numero de repositorios (artefactos bajo su esfera de poder)
  3. Cada desarrollador de cada equipo puede crear/actualizar/eliminar secretos siempre en el ambiente de desarrollo, nunca en prod o similar
  4. Estos secretos se inyectan automaticamente mediante Jenkins/Cloudbees o similar al momento de desplegar el artefacto

Una imagen siempre puede mas

Nomenclatura

Para que todo esto funcione se deben establecer politicas claras en la generación de secretos, para ello podemos pensar en una muy simple

/{entorno}/{team}/{repo-name}

Ejemplo

/dev/avengers-team/customer-register

/int/avengers-team/payment-platform

Secretos en Prod

En entornos como prod o similar se debe solicitar la gestión de los secretos a un equipo especialista en Cloud Ops, SRE o Sys Admin.

Esto se debe hacer via Ticket en Jira o Trello para su posterior seguimiento como asi tambien para su correcta resolución

La condición es que el solicitante pertenezca al mismo equipo del cual tiene owner dicho secreto mas la justificación explicita de alguna persona del dominio de negocio.

Beneficios

  • Los equipos centralizan la gestión de secretos
  • No se dispersan secretos mediante Slack, Whatsapp, emails o similares
  • Se abre paso a la auditoria
  • La segmentación por equipos permite que se eviten problemas de escritura/lectura indebida por parte de otros equipos
  • La presencia del rol del usuario SRE/Cloud Ops permite una administración controlada de los secretos en prod

Software engineer dedicated to the creation, deployment and continuity of software solutions. With criticality and a broad analytical sense

Software engineer dedicated to the creation, deployment and continuity of software solutions. With criticality and a broad analytical sense