1. Spring Boot and Vault
JCONF Mexico 2020 - Alejandro Cardenas
2020
2. Acerca de mi
Mas de 15 años como desarrollador, enfocado en tecnologías de
backend, actualmente trabajo en DigitalOnUs como Director de
las practicas de Desarrollo (Backend, Frontend y Mobile).
Mi experiencia técnica esta enfocada al desarrollo de backends
y en los últimos años he trabajado en el diseño e
implementación de micro servicios de aplicaciones desde cero y
migración de monolíticas hacia arquitecturas de microservicios,
además de promover la innovación dentro del equipo de trabajo.
3. Agenda
Secreto
Porque centralizar los secretos en un lugar?
Que es Vault?
Spring and Vault
Demo - Config Server
Demo - Transit
Demo - Deploy in the cloud
4. Secreto ?
My password is : *********
Por definición es: algo conocido por
un numero limitado de personas
6. Casos Usuales
Guardamos los API Keys, usuarios y
passwords en texto plano
Obtenemos los secretos de diférentes
fuentes y con diferentes mecanismos
Almacenamos los secretos en archivos
“ocultos” en los SO pero en texto plano
Creamos nuestros propios mecanismos
de encriptacion
7. Si centralizamos los secretos …
Las aplicaciones no se preocuparían
por la información secreta, solo por
como leerla
Podemos enfocarnos en defendernos
de ataques y mantener segura la
información en un solo lugar
La encriptacion de la información se
delegaría, dejando de ser
responsabilidad de la aplicación
8. Como defender al Rey?
Asumiendo que tenemos que proteger al Rey en el castillo,
que seria mejor?
Dividir el ejercito a que proteja todas las puertas?
Juntar todo el ejercito a proteger la puerta del Rey ?
9. Que es Vault?
Es una herramienta de Hashicorp
Vault es una herramienta para
acceder a secretos de forma segura.
Vault proporciona una interfaz
unificada para almacenar cualquier
secreto, a la vez proporciona un
estricto control de acceso y realiza
una auditoría detallada de los
registros.
11. Spring and Vault
Spring Cloud Vault permite obtener
secretos en formato KV (Key/Value)
almacenados en Vault
Sus contextos se pueden organizar de
manera Jerarquica para su acceso y
combinación, como:
secret/<spring.application.name>/<spring.profile.active>/key
secret/<spring.application.name>/key
secret/application/<spring.profile.active>/key
secret/application/key
12. Spring and Vault
Spring Cloud Vault permite realizar
una encriptacion de datos mediante
el principio de API Driven
Vault no almacena la información,
sin embargo nos permite obtener la
información encriptada para
posteriormente utilizarla en nuestra
aplicación.
22. Puntos a Recordar
Para conectar el acceso a las bases de datos, recordar
agregar la dependencia:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-vault-config-databases</artifactId>
</dependency>