Vault de HashiCorp es una herramienta muy popular que se utiliza para gestionar secretos de forma segura. Antes de comprender acerca de Vault, primero debemos comprender qué son los secretos y por qué deben almacenarse de forma segura. Secreto es todo lo que se utiliza en la autorización o autenticación. Por ejemplo, nombres de usuario, contraseñas, credenciales de base de datos, claves de API, etc. El problema con los secretos es administrarlos de forma segura.
Entendamos el problema con mucha más profundidad.
Considere una aplicación de comercio electrónico que necesita interactuar con la base de datos. Obviamente requiere credenciales de DB para lo mismo. Para proporcionar estas credenciales a la aplicación, el enfoque más simple es almacenarlas en un archivo de configuración y cargarlas en el momento del inicio. Pero el problema es que esta información confidencial se almacena en texto sin formato como parte de nuestro código y cualquier persona con acceso a nuestro código puede verla y usarla. En un mejor enfoque, podemos almacenar esta información en forma cifrada. Pero aun así necesitaremos una clave de descifrado para poder descifrarlo y usarlo. Ahora, el problema sigue siendo el mismo, ¿dónde debemos almacenar esta clave de descifrado?
Además, siempre existe el «problema secreto de la expansión» . Significa que estos secretos están realmente presentes y almacenados en múltiples lugares, como en nuestro código fuente, archivo de propiedades, sistema de control de versiones. También es difícil rotar los secretos si están codificados. Si estos secretos están presentes en el VCS, cualquier persona con acceso puede verlos y no podemos saber quién los ha usado o si los ha usado o no. Aquí es donde Vault viene al rescate y se ocupa de todos estos problemas y, por lo tanto, gestiona los secretos de manera eficiente y segura.
Características clave de Vault:
- Centralización:
Vault resuelve el problema de la expansión de secretos al centralizar los secretos, es decir, todos los secretos ahora se almacenan dentro de la bóveda en lugar del código fuente, el archivo de propiedades y el sistema de control de versiones. También le brinda seguridad al almacenarlos en forma encriptada y también encriptarlos en el tránsito entre Vault y la aplicación. Cada vez que almacenamos un secreto nuevo en Vault, primero lo cifra, lo almacena y luego genera la clave maestra para la clave de descifrado. Esta clave maestra no se almacena en ningún lugar de Vault y se devuelve al usuario por partes. Debe proporcionar las partes del umbral de esta clave maestra a la Bóveda para abrirla y, si no lo hace, sus secretos se perderán para siempre. De esta forma, ni siquiera Vault puede acceder a tus secretos. - Control de auditoría:
Vault mantiene sus secretos seguros, pero es posible que su aplicación no lo haga. Cada aplicación registra cada detalle de lo que sucede en los archivos de registro y en este proceso también puede registrar los secretos que pueden ser vulnerables a las amenazas. Cualquiera que tenga acceso a estos archivos de registro puede hacer un mal uso de los secretos. Vault proporciona control de auditoría para este propósito y audita cada uso de secreto por parte de cada aplicación e identifica de forma única qué aplicación ha usado qué secreto y cuándo. Entonces, si se compromete algún secreto, en lugar de cerrar todas las aplicaciones, puede identificar el punto de compromiso y solo cerrar esa aplicación. - Secretos dinámicos:
Vault proporciona secretos dinámicos. Por lo tanto, en lugar de secretos de larga duración, proporciona credenciales de corta duración a las aplicaciones que se crean dinámicamente. En el caso de compromiso, podemos reducir la duración de la vulnerabilidad. Cada credencial es única para el servicio y, por lo tanto, podemos saber qué servicio ha comprometido las credenciales. - Cifrado como Servicio:
Es muy difícil que las aplicaciones implementen correctamente los algoritmos criptográficos . Por lo tanto, Vault proporciona el cifrado de los datos normales de las aplicaciones y las aplicaciones pueden centrarse en la lógica comercial del servicio.