ICM / seguridad / HashiCorp Vault. Introducción y casos de uso.

HashiCorp Vault. Introducción y casos de uso.

28 octubre 2022 | Vlad Erokhin

Introducción

HashiCorp Vault es una herramienta de gestión de secretos y protección de datos confidenciales en entornos propios. A medida que las empresas crecen y se desarrollan, tarde o temprano surge la pregunta sobre el almacenamiento de sus secretos, principalmente logins y contraseñas, claves API/SSH, OTP (contraseña de un solo uso), etc. Aquí es donde más nos ayudan los distintos gestores de contraseñas, por ejemplo, 1Password, LastPass, BitWarden y Keeper. La mayoría de estas aplicaciones están protegidas por contraseñas maestras, tienen autenticación de dos factores (MFA por App o por SMS), son multiplataforma, tienen cómodas extensiones para el navegador y permiten compartir secretos entre los empleados. ¿Pero podemos confiarles nuestros secretos?

Podemos decir con cierta seguridad que sí, porque todavía no se ha oído hablar de ningún robo de secretos a gran escala de las empresas mencionadas. Al mismo tiempo, constantemente aparece información en línea de que los servidores de una empresa han sido atacados, las direcciones de correo electrónico de los clientes han sido robadas o se han encontrado vulnerabilidades en una o más aplicaciones que podrían ser explotadas por los hackers. Las noticias recientes sobre este tema incluyen LastPass: Aviso de un reciente incidente de seguridad. Además, las soluciones de estas empresas para uso empresarial suelen ser de pago y estar alojadas en servidores sobre los que no se tiene control, lo que significa que no se puede garantizar que sean 100% seguras.

Entonces, ¿qué hacer? ¿aceptar ciertos riesgos asociados al uso de gestores de contraseñas de terceros, esperando que siempre estén disponibles y no sean hackeados? ¿o tomar la iniciativa?

Hoy nos centraremos en la segunda opción y repasaremos brevemente la solución HashiCorp Vault, que nos permite controlar nuestros secretos en nuestros propios términos, utilizando nuestros propios servidores, y de forma totalmente gratuita (este producto también tiene una versión de pago, pero para la mayoría de las tareas no es necesaria).

¿Qué es?

HashiCorp Vault es una solución de HashiCorp cuya historia comienza en 2008, cuando los futuros fundadores Mitchell Hashimoto y Armon Dadgar se conocieron en la Universidad de Washington. Tras su graduación, ambos se trasladaron a San Francisco. Impresionado por el rápido crecimiento de la tecnología en la nube y su impacto en el mundo, Mitchell fundó HashiCorp y Armon se unió a él como cofundador al año siguiente. La empresa es conocida por soluciones como Vagrant, Terraform, Nomad y, por supuesto, Vault, cuya primera versión se lanzó en 2015.

HashiCorp Vault es una herramienta de gestión de secretos diseñada específicamente para gestionar el acceso a credenciales sensibles en entornos de baja confianza. Los secretos se definen como cualquier forma de credencial sensible que debe ser estrictamente controlada y supervisada y que puede ser utilizada para desbloquear información sensible. En pocas palabras, los secretos son cualquier cosa a la que quieras controlar de forma estricta el acceso, como contraseñas, claves de encriptación de la API, etc. Vault le permite tanto almacenar secretos como generar dinámicamente el acceso a servicios y aplicaciones específicas a través de su API. Además de la API, se puede acceder a los secretos a través de una interfaz web o de línea de comandos. Por último, Vault puede crear registros de auditoría detallados para hacer un seguimiento de quién ha accedido a qué.

¿Cómo funciona?

Cuando instalamos por primera vez Vault, es necesario crear el propio almacenamiento secreto (storage), es decir, inicializarla. Cuando se inicializa el Vault, se genera una clave de cifrado que se utiliza para proteger todos los datos. Esta llave está protegida por una llave maestra. Por defecto, Vault utiliza una técnica conocida como el sistema de compartición de secretos de Shamir para dividir la clave maestra en 5 (key-shares) recursos compartidos, de los cuales 3 (key-threshold) son necesarios para recuperar la clave maestra. La configuración del almacenamiento secreto en realidad nos permite elegir en cuántas partes dividir la llave maestra y cuántas partes son suficientes para desbloquearla, pero los valores predeterminados son 5 y 3.

Además de los 5 recursos compartidos (key-shares), Vault genera un token raíz al iniciarse para que pueda autenticarse y configurar Vault según sus necesidades. De este modo, en caso de reinicio del servidor o del servicio de Vault, primero tendrá que deshacer el sellado (Useal) el Vault y luego podrá autorizarlo, es decir, iniciar sesión en él.

Sin embargo, si está interesado en los detalles de cómo está estructurada la arquitectura de Vault, puede leerlo en la página correspondiente de la documentación oficial. Como esta información no es necesaria para empezar a utilizar Vault, seguiremos con esto.

Casos de uso

Obviamente, Vault puede utilizarse para almacenar contraseñas, pero ¿es eso todo lo que sirve? Vamos a enumerar algunos usos básicos de HashiCorp Vault, aunque vale la pena señalar de inmediato que los usos potenciales del software son mucho más amplios.

  • General Secret Storage (Almacenamiento secreto general). El primer uso, y el más obvio, es el de almacenar credenciales (logins y contraseñas), variables de entorno sensibles, credenciales de bases de datos, claves de API, etc. Y lo que es más importante, con Vault, puede crear credenciales de corta duración justo a tiempo que se revocan automáticamente cuando caducan. Esto significa que los usuarios y los equipos de seguridad no tienen que preocuparse de revocar o cambiar manualmente estas credenciales en caso de que puedan haber sido comprometidas de alguna manera.
  • Data Encryption (Codificación de datos). Además de poder almacenar secretos, Vault puede utilizarse para cifrar y descifrar datos almacenados en otros lugares. El uso principal de esto es permitir que las aplicaciones cifren sus datos almacenándolos en el almacén de datos principal. La ventaja de esto es que los desarrolladores no tienen que preocuparse de cómo encriptar correctamente los datos. La responsabilidad del cifrado recae en Vault, y los desarrolladores simplemente cifran/descifran los datos según sea necesario.
  • Key Management (Gestión de claves). Trabajar con proveedores de la nube requiere el uso de sus elementos de seguridad, que incluyen claves de cifrado emitidas y almacenadas por el proveedor en su propio sistema de gestión de claves (KMS). Así, Vault Key Management proporciona un flujo de trabajo coherente para la distribución y la gestión del ciclo de vida de las claves de los proveedores de servicios en la nube, lo que permite a las organizaciones mantener un control centralizado sobre sus claves en Vault utilizando las capacidades criptográficas inherentes a los proveedores de KMS.

Pruebas

Como ya sabes, después de instalar Vault, debes iniciarlo, después de lo cual estará en estado Sellado, lo que significa que deberá deshacerlo el sellado y personalizarlo según tus necesidades. Va a ser muy largo para un artículo introductorio, por lo que veremos cómo usar Vault en el modo de desarrollo. En este modo, Vault se inicializa en modo no sellado, manteniendo todo en la memoria sin necesidad de autenticación, sin el uso de TLS y con una sola clave de sellado. Así, tenemos la oportunidad de probar y explorar Vault de una forma rápida y sencilla.

  1. Instala Vault desde el sitio web oficial. Las instrucciones de instalación se proporcionan inmediatamente para cada sistema operativo.
  2. Inicie Vault en modo de desarrollo.

¡Atención! Este modo no debe utilizarse nunca en un entorno de producción.

vault server -dev
  • En otro terminal, exporte las siguientes variables para poder probar Vault:
export VAULT_ADDR="http://127.0.0.1:8200"
export VAULT_DEV_ROOT_TOKEN_ID="ХХХ"

Сopie el token de la línea correspondiente (Unseal Key) después de iniciar el servidor.

  • En el mismo terminal donde se exportaron las variables, cree un secreto de prueba:
vault kv put secret/test secreto=123456
  • Ahora intenta leer este secreto:
vault kv get secret/test

Estos pasos son pasos de prueba, Hello World! en el mundo de HashiCorp Vault, para probar su funcionamiento. En el futuro entraremos en más detalles sobre la instalación de Vault, la configuración de los certificados TLS, la activación de los registros de auditoría, etc.

Сonclusiones

Esperamos que este material le resulte útil y que piense más conscientemente en cómo almacenar y gestionar los secretos de la empresa. HashiCorp Vault tiene competidores en CyberArk Privileged Access Management, ARCON Privileged Access Management, ManageEngine Password Manager Pro y muchos otros, pero las características clave de HashiCorp Vault lo hacen muy atractivo y competitivo:

  • Interfaz de gestión secreta basada en la web, API e interfaz de línea de comandos sencillas y directas
  • Código abierto
  • Se trata de un autoalojamiento (self-hosted)
  • Secretos dinámicos y encriptación
  • Coste (la mayoría de las soluciones no requieren una edición para empresas)
  • Escalabilidad de Vault para clusters tolerantes a fallos y una amplia variedad de opciones de almacenamiento secreto
  • Una amplia gama de opciones de almacenamiento
  • Integración con Red Hat Ansible Automation Platform (anteriormente Ansible Tower)