2008-09-06 12 views
8

Escribo (en C# con .NET 3.5) una aplicación administrativa que sondeará varios sistemas Windows para varios bits de datos. En muchos casos, utilizará WMI, pero en algunos casos puede necesitar leer el registro remoto o ejecutar remotamente algún comando o script en el sistema sondeado. Este sondeo se realizará a intervalos periódicos, por lo general todas las noches, pero se puede configurar para que ocurra más (o menos) con frecuencia. Por lo tanto, la encuesta podría realizarse cada 10 minutos o tan raramente como una vez al mes. Tiene que suceder de forma automatizada, sin intervención humana.Almacenamiento de contraseñas de Windows

Estas funciones requerirán acceso de nivel administrativo a los sistemas sondeados. Ahora, espero que en la mayoría de los casos de uso, habrá un dominio, y la aplicación de sondeo se puede ejecutar como un servicio con privilegios de administrador de dominio (o equivalente), lo que significa que no tengo que preocuparme por almacenar contraseñas: la configuración del administrador la aplicación definirá el nombre de usuario/contraseña del servicio a través de los mecanismos estándar de Windows.

Pero siempre hay algunas ovejas negras por ahí. El programa puede ejecutarse en entornos sin dominio, o en los casos en que algunos sistemas sondeados no son 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/pase en el momento en que sondeamos el sistema. Así que tenga en cuenta que, en este caso, el programa que se escribe es el usuario que envía contraseña al sistema de autenticación.

No estoy seguro de si necesitaré usar un hash reversible que luego descifraré al texto plano en el momento del uso, o si hay algún mecanismo de Windows que me permita almacenar y luego reutilizar el hash solamente. Obviamente, el segundo mecanismo es preferible; Me gustaría que mi programa ya sea nunca conozca el valor del texto sin formato de la contraseña, o que lo sepa por el menor tiempo posible.

Necesito sugerencias para formas inteligentes y seguras de lograr esto.

¡Gracias por mirar!

+0

posible duplicado de [¿Cómo almacenar contraseñas en la aplicación Winforms?] (Http://stackoverflow.com/questions/40853/how-to-store-passwords-in-winforms-application) – BalusC

Respuesta

6
+0

1800 INFORMACIÓN sugerida CryptProtectData de DPAPI en C++. Parece que la expresión .NET de esto es la clase [ProtectedData] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.protecteddata.aspx) dentro de [System.Security.Cryptography] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx) espacio de nombres. Perdón, no lo mencioné anteriormente, estoy codificando en C#. Editará la pregunta para reflejar esto. Esta es probablemente la solución a mi problema, pero voy a dejar que esta pregunta se cocine (sin respuesta) unos días más para generar otras posibles soluciones. – quux

0

Pues parece que el programa tiene que hacerse pasar por un usuario que no sea el contexto en el que ya se está ejecutando. Sin embargo, parece un proceso bastante automatizado, pero si no lo es, ¿simplemente no puede pedirle al administrador que ingrese su nombre de usuario y contraseña cuando se está sondeando esta computadora 'oveja negra'?

+0

Vaibhav: no, porque el programa de sondeo probablemente se ejecute por la noche cuando no hay ningún usuario allí. El programa de sondeo podría potencialmente sondear cientos o miles de sistemas remotos para los datos que busca; pensar en ello como una herramienta de inventario de la computadora de la empresa. – quux

Cuestiones relacionadas