Home » Qué es Hashicorp Vault
Banner de Hashicorp Vault en la gestión de secretos

Qué es Hashicorp Vault

Un cliente con el cual trabajo hace algún tiempo viene usando una solución de secretos algo limitada y que no cumplía las expectativas de gestión centralizada. Esta fue una buena oportunidad para darle a conocer qué es Hashicorp Vault.

Quizá hayas escuchado ya sobre este herramienta y ahora quieras saber mejor qué es Hashicorp Vault. Si es así, estás en el lugar correcto.

Hace pocos días tuve la oportunidad de presentar y proponer el uso de esta herramienta ante un cliente con el que vengo trabajando hace varios meses. Es así que me pareció buen momento para compartir información básica al repecto con este artículo.

Introducción

HashiCorp Vault es una solución de bóveda digital que se especializa en el cifrado y gestión de secretos basado en identidades.

Vault proporciona servicios de cifrado controlados por métodos de autenticación y autorización que son usados para garantizar un acceso seguro, restringido y auditable a los secretos. Para esto, Vault cuenta con interfaces unificadas de línea de comandos (CLI), HTTP API y Web UI.

Un secreto es cualquier cosa a la que desee controlar estrictamente el acceso, como llaves API, tokens, contraseñas y certificados.

Beneficios: ¿Por qué usar Vault?

1. Almacenamiento seguro de secretos: Vault protege tus contraseñas, tokens, claves API y otros secretos en una ubicación segura.

2. Control de acceso granular: Controla quién puede acceder a los secretos y qué acciones pueden realizar.

3. Auditoría y cumplimiento: Realiza auditorías detalladas y cumple con las normativas de seguridad.

4. Integración con herramientas DevOps: Automatiza la gestión de secretos en tus flujos de trabajo de DevOps.

5. Protección contra amenazas: Protege tu información contra amenazas internas y externas.

Es así que, en entornos Zero Trust, donde la confianza se verifica constantemente, Vault se vuelve una pieza clave.

Problemas reales que resuelve

Quizá las siguientes preguntas y escenarios comunes puedan terminar de darte una mejor comprensión sobre qué es Hashicorp Vault.

1. Dispersión de secretos

¿Tienes idea de cuántos secretos se gestionan en tu organización? ¿En cuántos lugares diferentes pueden estar dispersos?

Seguramente muchas personas gestionan algún tipo de secretos de diferente manera. Por ejemplo, hay quienes almacenan secretos en un bloc de notas en sus equipos personales; otros lo almacenan en un archivo Excel, Wikis o servicios de documentación similares; hay quienes envían secretos en texto plano por correo o chat; los programadores suelen insertar secretos directo en el código de aplicaciones, lo cual empeora cuando dicho código se almacena en Git. La lista de posibilidades puede ser grande.

Ejemplo de dispersión de secretos

Fuente de imagen: https://hashnode.com/post/what-is-secret-sprawl-why-its-dangerous-and-how-developers-can-prevent-it-ckb0uw052031fl6s145lxo6jd

¿Te imaginas que la mayoría de tus repositorios de código estén llenos de secretos en texto plano? Es muy común la exposición de secretos en Internet porque algún repositorio Git fue hecho público por accidente u omisión. Si esto ya le pasó a empresas enormes en Internet, ¿por qué no le pasaría a tu organización?

Ahora, imagina que uno o más secretos ya fueron expuestos o salieron de tu organización. ¿Sabes cómo remediarlo sin saber quién, desde dónde y cómo fue que el secreto quedó expuesto? El cambio de contraseña como acción inmediata parece ser un paliativo. Pero, si el problema raíz sigue presente, entonnces el secreto podría volver a ser expuesto de la misma forma que la vez anterior.

Hashicorp Vault puede resolver gran parte de estos problemas a través de una gestión segura de secretos estáticos, controlar y auditar su acceso.

2. Automatización

Si estás ya en un proceso de maduración del ciclo de vida de desarrollo de software, quizá estés ya en camino a adoptar la automatización a través de pipelines CI/CD (Ejm: Jenkins, GitHub Actions, GitLab).

De este modo, sabes que los pipelines requieren comúnmente requieren el uso de secretos para ser insertados en jobs para las fases de pruebas, compilación, empaquetamiento y/o despliegue de aplicaciones. Pero, ¿de donde se obtienen los secretos? Generalmente, desde el mismo software de Integración Continua que ofrece alguna funcionalidad para almacenar secretos pero sin ser estrictamente una solución robusta de gestión de secretos.

Ejemplo de integración de Vault con soluciones CI/CD

Fuente de imagen: https://medium.com/hashicorp-engineering/secure-infrastructure-provisioning-with-terraform-cloud-vault-gitlab-ci-eaeabf7e31a1

Vault se integra perfectamente con los sistemas CI/CD a través de APIs para la obtención no solo de secretos secretos, sino también dinámicos que tan necesarios son en las prácticas DevSecOps.

Y no solo en sistemas CI/CD Vault se hace importante, sino también en la integración directa con aplicaciones para insertar secretos estáticos y dinámicos renovables. Por ejemplo, si se usa Vault para crear secretos dinámicos de base de datos y/o certificados digitales de corta duración, a través del uso del Agente de Vault se puede lograr que las aplicaciones consuman dichos secretos de forma transparente y 100% automatizada.

3. Secretos dinámicos

¿Cuántas veces has requerido crear credenciales con ciertos privilegios que se supone son de uso temporal, pero en la práctica se vuelven eternos?

Es muy común la necesidad de crear un usuario de Active Directory, o un usuario de base de datos (MySQL, Oracle, Postgres, etc), o incluso de nube pública (AWS, Azure, GCP, etc.) con privilegios administrativos o con más permisos de los que realmente se requiere. Luego, lo usual es entregar las credenciales de forma insegura al usuario que lo requiere. Por último, difícilmente se hace una revocación de tales credenciales luego que su uso culmina, o en el mejor de los casos se hace una revocación manual que depende de nuestra buena memoria.

Ejemplo de gestión dinámica de secretos en AWS

Fuente de imagen: https://delinea.com/blog/devops-secrets-vault-and-dynamic-secrets-in-the-cloud

Esta situación representa un riesgo muy alto de exposición de secretos innecesarios a personas no adecuadas por un tiempo mayor al requerido. Con el pasar de los meses, puede haber un gran número de usuarios privilegiados dispersos en diferentes plataformas de las cuales no se sabe con certeza si aún siguen siendo utilizados o no. ¿Quién se anima a darles de baja con total seguridad que no habrá impacto alguno?

Esta problemática es algo en lo que Hashicorp Vault se desempeña mejor a través de una gestión dinámica de secretos. Esto permite, por ejemplo:

  • Crear usuarios aleatorios con permisos acotados en diferentes plataformas como LDAP (Ejm: Active Directory), nube pública (Ejm: usuarios IAM en AWS), base de datos (Ejm: MySQL), SSH (Ejm: passwords de un único uso), entre otros.
  • Dichos usuarios son de corta duración, pues Vault los eliminará automáticamente luego de un tiempo de vida determinado.
  • También, es posible programar la rotación periódica y automática de contraseñas de usuarios privilegiados.

Con esta característica, será mucho más fácil y seguro invocar a Vault para crear un usuario privilegiado que automáticamente será eliminado al cabo de un tiempo definido.

Conclusión

Esta guía se ha centrado en explicar de forma práctica qué es Hashicorp Vault, para qué sirve y cuáles son los problemas reales que resuelve en escenarios comunes en muchas organizaciones.

Si bien esta herramienta cuenta con muchas funcionalidades que no se mencionaron en este artículo, definitivamente vale la pena que te animes a explorarlo un poco más.

Para ello, en próximos artículos estaré mostrando cómo hacer una implementación rápida de Vault y cómo poner en práctica varias de sus principales funcionalidades de seguridad.

Si el artículo ha sido de valor para ti, te invito a que lo compartas en tus redes sociales o con algún conocido que sabes está preocupado por la seguridad.

Post navigation

Deja un comentario

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *