La aplicación en la que estoy trabajando tiene más de una docena de secretos, certificados SSL y claves API. Actualmente tengo un archivo que se agrega a .gitignore
y contiene todos mis secretos. ¿Cómo almacenar de forma segura todos estos secretos? ¿Cómo las aplicaciones empresariales manejan esto, donde la seguridad es la máxima prioridad?
Estoy investigando AWS KMS y por lo que tengo entendido, tengo que cifrar todos los secretos, cometerlos y luego, en tiempo de ejecución, pasar mis credenciales de AWS para descifrar los secretos (el usuario solo puede usar la clave KMS para descifrado y no se agregan otros permisos para el usuario).
Ahora, asumiendo que la máquina donde se ejecutan los contenedores está comprometida - los secretos están encriptados, por lo que debería estar bien, pero! si se ejecuta el comando docker inspect
, mostrará todas las variables de entorno (los secretos de AWS), por lo que ejecuto en el contenedor y todo lo que tengo que hacer es usar las variables env para descifrar los secretos. tal vez me estoy perdiendo un paso en alguna parte?
Nota : mi solución actual no es segura también. El archivo está gitignored, pero aún existe en la máquina donde se ejecutan los contenedores (y más adelante, una vez que se crea la imagen, se exponen como env variables).
Nota 2 : el repositorio de Git es privado