如何存储脚本的用户凭据
How to store user credentials for script
我需要使用旧版本的 ClearQuest 7,并且在我们的安装中启用的唯一 APIs 是 VBA (Excel) 和 RatlPERL。 (REST API 不是我们的选择 - 尽管它遇到同样的明文凭据问题。)
我写了一个 ratlperl script 来执行对缺陷数据库的查询,并生成 csv 输出。请注意,ratlperl 需要明文用户凭据进行身份验证。
ratlperl query.cqpl -u %userid% -p %password% -q "%query%" -c %outfile%
该脚本是从 Windows Batch file 调用的。当 Windows 命令行中的 运行 不带参数时,批处理文件会请求用户凭据,但它们也可以作为参数提供。
query.bat %userid% %password%
我触发每日查询,并将用户凭据作为批处理文件的参数传递。
一切正常,但我不想以这种方式存储明文密码。注册表是一种可能性,但任何有权访问该机器的人都可以访问这些凭据。
如何以安全的方式存储这些凭据?
有两点需要注意。一种是让您的进程列出 "show up" 身份验证凭据。
特别是在 Unix 上——如果你 运行 ps
它会向你显示参数,其中可能包括用户名和密码。处理方式主要是'read from a file, not the arg list'。在 Unix 上,您还可以修改 [=11=]
以更改您在 ps
中的显示方式(但这对命令历史记录没有帮助,而且它也不完美,因为在应用它之前会有很短的时间) .
另一个是 - 静态存储数据。
这个有点难。从根本上说,没有多少解决方案可以让您的脚本访问不允许恶意用户这样做的凭据。
毕竟,通过在您的脚本中插入 print $password
的简单权宜之计...它们几乎可以绕过您可以对其施加的任何控制。特别是如果他们对你的盒子有管理员访问权限,在这一点上......你真的无能为力。
不过我会提供的解决方案:
使用(纯文本)用户名和密码创建一个文件。对其设置最低权限。 运行 作为具有权限的用户的脚本,但不要让任何其他人访问该用户帐户。
这样其他人可以 'see' 您的脚本(并且可能需要 运行 它)但不能自己复制 it/hack it/run 它。
我建议在 Unix 上使用 sudo
。对于 Windows,我不确定你比 RunAs
有多少粒度 - 这值得一看,或者有一个计划任务 运行 作为你的服务帐户,然后选择'request files' 用于任何人都可以生成的处理。
由于安全级别不需要那么高,或许可以考虑制作一个简单的exe?密码可能会以某种方式从内存中读出,但我想这种方式会造成足够大的障碍。
或者类似的内容可能会有帮助?
http://www.battoexeconverter.com/
HTH
我需要使用旧版本的 ClearQuest 7,并且在我们的安装中启用的唯一 APIs 是 VBA (Excel) 和 RatlPERL。 (REST API 不是我们的选择 - 尽管它遇到同样的明文凭据问题。)
我写了一个 ratlperl script 来执行对缺陷数据库的查询,并生成 csv 输出。请注意,ratlperl 需要明文用户凭据进行身份验证。
ratlperl query.cqpl -u %userid% -p %password% -q "%query%" -c %outfile%
该脚本是从 Windows Batch file 调用的。当 Windows 命令行中的 运行 不带参数时,批处理文件会请求用户凭据,但它们也可以作为参数提供。
query.bat %userid% %password%
我触发每日查询,并将用户凭据作为批处理文件的参数传递。
一切正常,但我不想以这种方式存储明文密码。注册表是一种可能性,但任何有权访问该机器的人都可以访问这些凭据。
如何以安全的方式存储这些凭据?
有两点需要注意。一种是让您的进程列出 "show up" 身份验证凭据。
特别是在 Unix 上——如果你 运行 ps
它会向你显示参数,其中可能包括用户名和密码。处理方式主要是'read from a file, not the arg list'。在 Unix 上,您还可以修改 [=11=]
以更改您在 ps
中的显示方式(但这对命令历史记录没有帮助,而且它也不完美,因为在应用它之前会有很短的时间) .
另一个是 - 静态存储数据。
这个有点难。从根本上说,没有多少解决方案可以让您的脚本访问不允许恶意用户这样做的凭据。
毕竟,通过在您的脚本中插入 print $password
的简单权宜之计...它们几乎可以绕过您可以对其施加的任何控制。特别是如果他们对你的盒子有管理员访问权限,在这一点上......你真的无能为力。
不过我会提供的解决方案:
使用(纯文本)用户名和密码创建一个文件。对其设置最低权限。 运行 作为具有权限的用户的脚本,但不要让任何其他人访问该用户帐户。
这样其他人可以 'see' 您的脚本(并且可能需要 运行 它)但不能自己复制 it/hack it/run 它。
我建议在 Unix 上使用 sudo
。对于 Windows,我不确定你比 RunAs
有多少粒度 - 这值得一看,或者有一个计划任务 运行 作为你的服务帐户,然后选择'request files' 用于任何人都可以生成的处理。
由于安全级别不需要那么高,或许可以考虑制作一个简单的exe?密码可能会以某种方式从内存中读出,但我想这种方式会造成足够大的障碍。
或者类似的内容可能会有帮助?
http://www.battoexeconverter.com/
HTH