Vault: Centralizar los secretos de un modo seguro

En este post, vengo a presentaros una herramienta que ha causado mucha expectación que ayuda a complementar el movimiento DevOps y Seguridad haciendo que todos los secretos no estén en el servicio si no en un sitio centralizado. Esta herramienta, se llama Vault y es de la empresa HashiCorp. Esta empresa, tiene varias herramientas muy interesantes como; Consul, Packer, Terraform.. Recomiendo echarles un vistazo.

No quiero meterme mucho en la teoría ya que hay varios posts que explican mejor (abajo os dejo algunos de referencia). Pero básicamente es un servicio que alberga secretos portegidos por PGP que permiten ser consultados mediante una API del modo que no hay que declararlos en el propio servicio.

En este ejemplo, vamos a montarlo sobre docker (oh que sorpresa!). Para esto como siempre utilizaremos: docker-compose y traefik.

Docker-compose

Levantar el stack

Iniciar vault

Una vez iniciado, nos mostrará varias Keys para desbloquear vault. Por defecto viene bloqueado. Aparte de las Keys nos dará el token de root que es necesario para crear la configuración.

Desbloquear Vault

Una vez iniciado Vault, hay que desbloquearlo. Para esto, se necesitan 3 de las 5 claves de Unseal que nos mostró anteriormente. Se pueden usar cualquiera de ellas

Configuración

Para empezar, hay que autenticarse como root para poder comenzar a configurarlo. Para esto, necesitamos el Token de root que nos ha aparecido antes.

Logs

Es recomendable habilitar los logs para poder tener un registro de lo que está pasando y quien accede a los secretos. Este log se guardará en el volumen que hemos mapeado previamente.

Políticas

Crear políticas

Para las políticas, hemos mapeado anteriormente (en el docker-compose) una carpeta desde ./config/policies que albergará todas las políticas que creemos. De este modo, si el contenedor se borra, los ficheros de las políticas seguirán existiendo. En este caso vamos a crear 2 políticas. Una será para admin con permiso para todo y la otra para usuarios mas restringida.

Admin

User

Aplicar políticas

Autenticación

La autenticación de los usuarios, puede se por distintos modos; github, ldap, userpass.. En este caso, vamos a utilizar la última opción, userpass por lo que hay que hay que habilitar este método y crear los usuarios en vault

Habilitar autenticación de usuario

Crear usuarios

Usuario admin:

Usuario normal:

Probar el usuario en la consola

Probar el usuario por la API

Backends

Los backends son las “ubicaciones” donde podremos almacenar las keys

Listar los backends habilitados

Crear un backend nuevo

Hay diferentes tipos de backends. Mas info aquí

Crear keys

Listar las keys

Leer la key creada

Listar las keys utilizando la API

Ver las keys utilizando la API

UI Web

Y para que Vault sea mas accesible, en el docker-compose hemos desplegado otro docker que habilita una web para poder gestionar completamente vault de una manera mas fácil. En este caso lo hemos desplegado bajo traefik.

Para acceder a la web:

De momento esto es todo. En un futuro, iré añadiendo mas posts de como conectar diferentes servicios con Vault según vaya profundizando en la materia.

Post para echar un ojo:

https://blog.irontec.com/guardando-nuestros-secretos-en-vault-1-de-2/
https://blog.irontec.com/guardando-nuestros-secretos-en-vault-2-de-2/
https://www.vaultproject.io/docs/

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *