La mayor parte de la información que encontré y leí sobre el almacenamiento correcto de contraseñas en una base de datos indica que debo Hash la contraseña borrar texto con un valor de sal único para cada usuario y luego almacenar ese hash en la base de datos. Pero este proceso no funciona para mis necesidades ...Almacenamiento y recuperación de contraseñas adecuadas para cuentas de servicio?
Tengo un servicio de Windows escrito en C# que necesita conectarse a otras máquinas remotas en diferentes centros de datos usando cuentas de servicio específicas. Estas cuentas de servicio son como cuentas de usuario de dominio, pero no hay personas reales detrás de ellas y solo tienen los permisos adecuados para llevar a cabo la carga útil del servicio en cada servidor específico. La información de la cuenta de servicio se almacena en una tabla de SQL Server, incluida la contraseña de cada cuenta. Actualmente, estoy usando cifrado simétrico (Rijndael) para ocultar las contraseñas en la tabla DB. La clave se guarda en un archivo de configuración separado que tiene permisos de acceso estrictos.
Cada vez que el servicio tiene una carga útil programada para ejecutarse en una máquina remota, busco la información adecuada de la cuenta de servicio en la tabla y la defino con la tecla. También hay un sitio web interno que es básicamente un front-end para administrar las diversas configuraciones de este servicio, y allí el administrador puede ver y cambiar la contraseña de las cuentas de servicio.
¿Es este un buen enfoque para mantener las cosas seguras? ¿Hay algún defecto obvio en este esquema?
¿El sitio web interno usa HTTPS al enviar contraseñas al back-end? Es de suponer que la máquina en la que se ejecuta el servicio está a salvo de miradas indiscretas. –
Sí y Sí ... El sitio web interno se ejecuta en https y la máquina de servicio tiene acceso limitado. –