Pregunta

Estoy escribiendo (en C# con .NET 3.5) una aplicación administrativa que sondeará varios sistemas Windows en busca de diversos bits de datos.En muchos casos utilizará WMI, pero en algunos casos puede que necesite leer el registro remoto o ejecutar de forma remota algún comando o script en el sistema sondeado.Este sondeo se realizará a intervalos repetidos, generalmente todas las noches, pero se puede configurar para que se realice con más (o menos) frecuencia.Por lo tanto, la encuesta podría realizarse cada 10 minutos o tan raramente como una vez al mes.Debe suceder de forma automatizada, sin ninguna intervención humana.

Estas funciones requerirán acceso de nivel de administrador a los sistemas encuestados.Ahora, espero que en la mayoría de los casos de uso haya un dominio y que la aplicación de sondeo pueda ejecutarse como un servicio con privilegios de administrador de dominio (o equivalente), lo que significa que no tengo que preocuparme por almacenar contraseñas: el administrador configura la aplicación definirá el nombre de usuario/contraseña del servicio mediante mecanismos estándar de Windows.

Pero siempre hay algunas ovejas negras por ahí.El programa puede ejecutarse en entornos sin dominio o en casos en los que algunos sistemas encuestados no sean miembros del dominio.En estos casos tendremos que definir un nombre de usuario y una contraseña, almacenarlos de forma segura y luego invocar este par usuario/contraseña en el momento en que sondeemos ese sistema.Así que tenga en cuenta: en este caso, el programa que se está escribiendo es el usuario OMS envía contraseña al sistema de autenticación.

No estoy seguro de si necesitaré usar un hash reversible que luego descifraré en texto sin formato en el momento de usarlo, o si existe algún mecanismo de Windows que me permita almacenar y luego reutilizar únicamente el hash.Obviamente es preferible el segundo mecanismo;Me gustaría que mi programa fuera nunca Conozca el valor en texto plano de la contraseña o conózcalo durante el menor tiempo posible.

Necesito sugerencias sobre formas inteligentes y seguras de lograr esto.

¡Gracias por mirar!

¿Fue útil?

Otros consejos

Bueno, parece que su programa necesita hacerse pasar por un usuario distinto del contexto en el que ya se está ejecutando.Aunque parece un proceso bastante automatizado, pero si no lo es, ¿puede simplemente no pedirle al administrador que ingrese el nombre de usuario y la contraseña en el momento en que se sondea esta computadora de "oveja negra"?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top