Actualmente estamos mejorando nuestro sistema de gestión de secretos personalizados y estoy buscando diferentes soluciones como Hashicorp Vault o AWS KMS.
Hasta ahora, Vault parece cumplir con la mayoría de nuestros requisitos actuales, es un proyecto de código abierto y ofrece muchas características muy interesantes. Sin embargo, no he encontrado la forma de ajustarlo en el siguiente caso de uso: tenemos cientos de usuarios en nuestra aplicación. Encriptamos simétricamente tanto los registros de la base de datos como los archivos de datos con una clave diferente para cada usuario. Ofrecemos a nuestros usuarios la capacidad de controlar el acceso a sus datos mediante el cifrado de la clave de usuario con una contraseña de usuario, por lo tanto, esta contraseña debe proporcionarse cada vez que se acceda a los datos.
Puedo almacenar cada una de estas claves de cifrado de usuario en el Vault y luego acceder de forma dinámica cada vez que se realiza una nueva solicitud; sin embargo, no puedo encontrar una manera de agregar la contraseña de usuario como un argumento necesario de la solicitud. Una solución es agregar esta capa de encriptación adicional sobre Vault y almacenar la versión encriptada de la clave, pero luego no se puede usar "encriptación como un servicio", ya que Vault no estaría encriptado con la clave del usuario real sino con la versión encriptada de la clave. . Además, el administrador de Vault siempre podrá descifrar los archivos de los usuarios, independientemente de que proporcionen sus contraseñas o no.
Me pregunto si esta funcionalidad se puede desarrollar sobre Vault utilizando algún tipo de complemento. ¿Alguien ha encontrado un escenario similar antes? Cualquier sugerencia será bienvenida.
Gracias