如何存储脚本的用户凭据



我需要使用旧版本的ClearQuest 7,并且在我们的安装中唯一启用的API是VBA(Excel)和RatePERL。(REST API对我们来说不是一个选项,尽管它遇到了同样的明文凭据问题。)

我已经编写了一个ratlperl脚本,它执行对缺陷数据库的查询,并生成csv输出。请注意,ratlperl需要明文用户凭据进行身份验证。

ratlperl query.cqpl -u %userid% -p %password% -q "%query%" -c %outfile%

该脚本是从Windows批处理文件中调用的。当在没有参数的情况下从Windows命令行运行时,批处理文件会请求用户凭据,但它们也可以作为参数提供。

query.bat %userid% %password% 

我触发日常查询,将用户凭据作为批处理文件的参数传递。

这一切都很好,但我宁愿不以这种方式存储明文密码。注册表是一种可能性,但任何有权访问该机器的人都可以访问这些凭据。

如何以某种安全的方式存储这些凭据?

有两件事需要注意。一种是让您的进程列表"显示"身份验证凭据。特别是在Unix上——如果运行ps,它会显示参数,其中可能包括用户名和密码。处理此问题的方法主要是"从文件中读取,而不是从参数列表中读取"。在Unix上,您也可以修改$0以更改在ps中的显示方式(但这对命令历史记录没有帮助,而且它也不完美,因为在应用之前会有很短的时间)。

另一种是在静止状态下存储数据

这有点困难。从根本上说,没有多少解决方案可以让你的脚本访问不允许恶意用户这样做的凭据

毕竟,通过在脚本中插入print $password这个简单的权宜之计。。。他们几乎绕过了你可以对其进行的任何控制。特别是如果他们对你的盒子有管理员访问权限,那么。。。你真的无能为力。

不过我会提供的解决方案:

使用(明文)用户名和密码创建一个文件。设置它的最低权限。以具有权限的用户身份运行脚本,但不允许其他人访问该用户帐户。

这样,其他人可以"看到"你的脚本(可能需要运行它),但不能自己复制/破解/运行它。

我建议在Unix上使用sudo。对于Windows,我不确定你在RunAs上有多大的粒度——这值得一看,或者有一个计划任务作为你的服务帐户运行,并提取任何人都可以生成的"请求文件"进行处理。

由于安全级别不需要那么高,也许可以考虑创建一个简单的exe?密码可能会以某种方式从内存中读出,但我想这种方式会产生一个足够大的障碍。

或者像这样的事情可能会有所帮助?

http://www.battoexeconverter.com/

HTH

最新更新