¿Cuáles son algunas de las mejores prácticas para administrar e implementar contraseñas de aplicaciones web y claves privadas? P.ej. la contraseña para acceder a una base de datos o servicios externos como la API de Facebook. En general, me refiero a usar hardware dedicado o un proveedor de nube general y no un proveedor específico como Heroku o EC2.
¿Lo mejor que puede hacer sin un HSM es implementar las credenciales en un archivo de texto sin formato en un directorio protegido contra lectura al que solo pueda acceder el usuario de la aplicación web? ¿Debería tener un archivo con todas las contraseñas o un archivo por usuario o almacenar en variables de entorno? ¿Cómo se las arregla realmente para ponerlos en los servidores? ¿Puede usar una herramienta de administración de la configuración (por ejemplo, chef / puppet) para implementarlas y mantenerlas actualizadas? ¿Cómo se deben almacenar estas credenciales? ¿Deberían almacenarse en formato cifrado en el directorio de control de origen que contiene las configuraciones de administración de configuración? ¿Alguna recomendación sobre herramientas para usar que pueda ser útil? (por ejemplo, keyczar, servidor secreto, etc.) Si las contraseñas están cifradas, ¿cuál es una buena manera de compartir la clave de descifrado entre el equipo de DevOps? (¿LastPass, KeePass, etc.?)
Sé que esa es una larga lista de preguntas, pero estas son todas las cosas a las que no he encontrado buenas respuestas. Me interesa cualquier información, ya sea un estudio de caso de alguien que lo está haciendo bien, que se deben hacer concesiones entre diferentes alternativas, cosas que deben evitarse o buscarse claramente. Realmente no sé cuáles son las mejores prácticas y tengo herramientas útiles frente a lo que tenemos que decidir por nuestra propia situación y resolver por nuestra cuenta.