安全存储和使用用户凭证测试环境的策略

时间:2014-11-27 11:06:55

标签: security authentication automated-tests protractor password-protection

问题

我正在现有的网络应用程序上设置一组e2e测试。这需要在登录页面上自动登录(邮件和密码)。到目前为止,由于我仍在开发测试,我一直在测试脚本中将测试帐户凭据放在明文中。我在每次提交之前一直在手动删除凭据,但它不适用于某个地方的服务器上的正确自动化测试,也不是所有开发人员都能够在舒适的计算机上运行测试。此外,测试需要能够使用几组不同的用户凭证运行,并且凭证安全性至关重要。由于我们需要测试访问权限,因此我们似乎无法避免至少拥有一个可以访问机密数据的测试帐户。

问题

所以我的问题是:您知道或使用哪些策略在开发人员计算机,单独服务器或两者的测试环境中安全地存储和使用测试凭据?

之前的研究

我花了几天时间浏览网页(主要是StackOverflow,并尝试使用我的Google-fu)以及询问同事,但没有找到任何已知和使用的策略来处理和存储测试中的凭据。我认为许多熟练的程序员必须已经以多种方式解决了这个问题。

StackOverflow慷慨地提出了一些类似的问题,这些问题提供了一些有趣的策略:

  • Safely storing credentials when I need to retrieve the password for use,其中接受的答案建议加密配置文件。这似乎是一个非常有趣的想法,但我不清楚它在服务器和各个开发人员计算机上的分布情况,以及如何处理这种情况。
  • Storing credentials for automated use,提问者通过声明他们只是将凭据作为明文放在受密码保护的服务器上的文件中来回应自己。这可能适用于单个服务器,但我认为如果将使用许多本地开发人员计算机或单独的测试服务器进行测试,则会出现问题。

案例细节

我认为无论实施细节如何,这个问题都具有普遍意义,但无论如何它们可能会引起人们的兴趣。

我正在使用protractor来测试AngularJS个应用,并正在考虑Grunt以进一步测试自动化。我们计划在我们的Git服务器上挂起测试,并让它在每次提交到主分支时运行测试,这样我们就知道它永远不会破坏。或者,在测试期间不要破坏,至少:)

2 个答案:

答案 0 :(得分:1)

当您说'策略 安全 存储和使用用户凭据测试环境'时,我不确定您的意思。您声明您的测试需要使用不同的凭据集运行。如果您的测试能够以明文形式获取凭证,那么在同一帐户下运行的任何其他应用程序/用户也是如此。

当然,您可以加密存储密码的文件,但是您需要将加密密钥存储在应用程序或计算机上的某个位置,以便应用程序能够对其进行解密。

您可以使用非对称加密来使用公钥加密任何凭据,并且只允许访问运行测试的帐户的私钥。但是,任何能够在运行测试的帐户下登录的人都能够解密凭证文件并获取密码。

最佳选择是不在测试中使用机密数据。我在一家从事医疗软件的公司工作,我们有一个测试域,我们用知名账户设置我们的软件并使用假数据进行测试。

或者如果您希望其他开发人员能够以自己的凭据运行测试,您可以考虑切换到Kerberos并避免密码。

答案 1 :(得分:1)

我同意上面的回答,你可以创建一个密钥,将它存储在某个地方并使用。 否则,您可以获得加密,我找到了一个可能对您有所帮助的链接。 http://docstore.mik.ua/orelly/java-ent/security/ch13_05.htm