如何向鼻子提供敏感数据
How to provide a sensitive data to nose
我正在使用 nose 测试需要用户名和密码的 Python class。向测试模块提供该用户名和密码对的最佳做法是什么?我希望测试过程对其他工程师来说是直观的,而且我不能以明文形式存储任何敏感信息。有什么想法吗?
最常见的选项是在环境变量中提供数据。
import os
password = os.environ['PASSWORD']
username = os.environ['USERNAME']
$ USERNAME=user PASSWORD=qwerty nose
注意:环境变量可以被root和进程所有者读取。通过命令行提供的变量随命令一起出现在 shell 历史记录中。
手动测试
- 鼓励(强制)开发人员获取自己的凭据,
- 加密凭据;其中,我会看一下 git-secret。 Tox 可以用来稍微自动化一下。
自动化测试
大多数 CI 系统提供选项(内部或通过插件)来存储凭据并将其传递给 test/build 计划,在日志中屏蔽它们。例如 Jenkins has numerous plugins Mask Password, Credentials Binding. Atlassian's Bamboo by default masks all plan variables if name has password
word. Personally, I found the most useful are Travis' encrypted variables,凭据绑定到 repo/commit,而不是计划。
我正在使用 nose 测试需要用户名和密码的 Python class。向测试模块提供该用户名和密码对的最佳做法是什么?我希望测试过程对其他工程师来说是直观的,而且我不能以明文形式存储任何敏感信息。有什么想法吗?
最常见的选项是在环境变量中提供数据。
import os
password = os.environ['PASSWORD']
username = os.environ['USERNAME']
$ USERNAME=user PASSWORD=qwerty nose
注意:环境变量可以被root和进程所有者读取。通过命令行提供的变量随命令一起出现在 shell 历史记录中。
手动测试
- 鼓励(强制)开发人员获取自己的凭据,
- 加密凭据;其中,我会看一下 git-secret。 Tox 可以用来稍微自动化一下。
自动化测试
大多数 CI 系统提供选项(内部或通过插件)来存储凭据并将其传递给 test/build 计划,在日志中屏蔽它们。例如 Jenkins has numerous plugins Mask Password, Credentials Binding. Atlassian's Bamboo by default masks all plan variables if name has password
word. Personally, I found the most useful are Travis' encrypted variables,凭据绑定到 repo/commit,而不是计划。