Almacenamiento de contraseñas en la configuración del servidor

2

Tengo una aplicación web. Mi aplicación web necesita acceso a otras aplicaciones, como MySQL.

Para que mi aplicación web pueda acceder a MySQL, debo proporcionarle un nombre de usuario / contraseña. ¿Cuáles son las mejores prácticas para almacenar este nombre de usuario / contraseña en el servidor de manera segura (no en texto sin formato con el que cualquiera pueda tropezar)?

Para aclaraciones, NO necesito almacenar la información de los usuarios de mi aplicación web. Necesito almacenar un usuario / pase para que mi aplicación web use MySQL.

Esto parece una pregunta básica a la que ya se habría respondido, sin embargo, después de buscar, las únicas respuestas relacionadas que puedo encontrar son las siguientes:

pregunta William Bing Hua 27.11.2016 - 00:05
fuente

1 respuesta

3

Tortugas hasta el final es una buena charla que trata este tema.

En resumen, no hay grandes soluciones, porque si almacena la contraseña en la base de datos en algún lugar, debe autenticar a eso de alguna manera, lo que lo deja en el lugar donde comenzó. Sin embargo, hay algunas opciones que reducen su riesgo.

Las soluciones más comunes son almacenar la contraseña en un archivo sin seguimiento o variables de entorno en el servidor. Esto evita que una fuga de su código fuente exponga la contraseña, pero alguien que obtenga acceso a su servidor todavía podrá verla. También puede usar sistemas que cifran contraseñas en un archivo que luego se almacena en el control de versiones, que le brinda todos los beneficios de un VCS, pero esto se debe a problemas similares.

Personalmente, me encantan los sistemas de administración de secretos como Vault de Hashicorp o Keywhiz de Square. Estos son sistemas que (generalmente) viven fuera de su servidor y proporcionan una API para obtener y establecer valores secretos. Si bien requieren autenticación, esta autenticación puede ser valores de sesión temporales, similares a las cookies de sesión para sitios web, lo que evitará que un atacante no detectado obtenga acceso a sus secretos a largo plazo, ya que la sesión que robaron expirará (en algún momento configurable). ). En general, estos sistemas también incluyen registros de auditoría, por lo que una vez que detecte una infracción, puede rastrear de dónde provino.

La solución que tiene más sentido para su situación particular depende mucho de sus necesidades. Vault y sus amigos son excelentes, pero presentan una gran cantidad de complejidad operativa adicional, posiblemente más que el resto de su aplicación. Deberá evaluar las ventajas y desventajas por usted mismo para ver cuál sería la mejor opción.

    
respondido por el Xiong Chiamiov 27.11.2016 - 00:31
fuente

Lea otras preguntas en las etiquetas