我正在编写(在 C# 中使用 .NET 3.5)一个管理应用程序,它将轮询多个 Windows 系统以获取各种数据。在许多情况下,它会使用 WMI,但在某些情况下,它可能需要读取远程注册表或在轮询系统上远程执行某些命令或脚本。此轮询将以重复的时间间隔发生 - 通常是每晚,但可以配置为更多(或更少)频繁发生。因此,民意调查可以每 10 分钟一次,也可以每月一次。它需要以自动化的方式发生,无需任何人工干预。
这些功能将需要对轮询系统的管理员级别访问权限。现在,我希望在大多数用例中,会有一个域,并且轮询应用程序可以作为具有域管理员(或同等)权限的服务运行,这意味着我不必担心存储密码 - 管理员设置该应用程序将通过标准 Windows 机制定义服务的用户名/密码。
但是外面总是有一些害群之马。该程序可以在非域环境中运行,或者在某些轮询系统不是域成员的情况下运行。在这些情况下,我们必须定义用户名和密码,安全地存储它们,然后在我们轮询该系统时调用这个用户/通行证对。所以请记住——在这种情况下,正在编写的程序是向身份验证系统发送密码的用户。
我不确定是否需要使用可逆哈希,然后在使用时将其解密为纯文本,或者是否有一些 Windows 机制允许我存储然后仅重用哈希。显然第二种机制更可取;我希望我的程序要么永远不知道密码的明文值,要么在尽可能短的时间内知道它。
我需要有关实现此目的的智能和安全方法的建议。
感谢您的关注!