La gestión adecuada de los secretos de una aplicación siempre ha sido un desafío. Nuevos desafíos llegaron con la adopción de la nube. Hay una gran presentación de OWASP sobre la realidad y los desafíos de almacenar secretos en la nube.
Es posible que se sorprenda al saber que almacenar secretos en el código fuente es una de las soluciones (o "arquitectura") presentadas. Eso es porque, en este momento, no hay una arquitectura perfecta o una forma de hacerlo. Al final, sus secretos podrían estar encriptados ... pero ¿qué es lo que guarda la clave de encriptación? "Tortugas hasta el fondo", dijeron.
Cada tipo de gestión secreta tiene sus fortalezas y debilidades y la presentación ya cubre eso. En cambio, trataré de repasar algunas de las características que podría estar buscando en una solución de administración secreta (credencial):
- Control de acceso: ¿puede dar acceso de escritura a los administradores y acceso de lectura a las aplicaciones? ¿Puede limitar qué aplicaciones pueden leer (la aplicación A tiene acceso solo a esos secretos)?
- Registros de auditoría: necesarios para muchos informes de cumplimiento y una buena forma de determinar si algo está mal
- Almacenamiento seguro de los secretos: ¿cómo almacena la solución los secretos? DB cifrado? FS cifrado? ¿Quién / qué posee la clave de cifrado, si la hay? ¿Cómo se usa esta clave, una vez al inicio y luego descartada de forma segura?
- Rotación o renovación de claves / contraseñas: si se compromete un secreto, ¿puede revocarlo y enviar un secreto actualizado a las aplicaciones? ¿Pueden / deben las aplicaciones agrupar el servicio de gestión secreta?
- Compatibilidad: algunas de estas soluciones ofrecen una estrecha integración con ciertos lenguajes o marcos. Algunos ofrecen API REST. ¿Estás interesado en esto?
Al observar estos elementos, cómo son importantes para usted y cómo son implementados por la solución, podrá elegir uno de los servicios de administración secreta que existen .