保护测试中需要使用的凭证
本文目的
本文主要讨论了测试凭证的重要性,与其相关的风险,以及 Testany 采取的保护措施。
理解风险数据:测试凭证
测试凭证是什么
定义:
测试凭证是测试用例在 Testany 平台上进行执行并按照被测试软件服务要求提供的证明调用者身份和权限的凭证。获取测试用例和执行测试流水线的凭证同样是测试凭证但其保护措施不在本文讨论之列。
测试凭证的类型:
可能包括 API 密钥,测试账户,令牌以及在测试阶段使用的其他类型的凭证。
保护测试凭证的重要性
测试凭证在软件测试中的作用
测试凭证在软件测试过程中发挥着至关重要的作用。在模拟环境中,它们有助于复制真实世界的场景,而不影响实际的生产数据或泄露真实用户信息。
这些凭证使测试人员能够验证和核实应用程序的各种特性,如其处理身份验证、用户角色和权限级别的能力。此外,它们帮助测试人员识别身份验证系统内可能存在的漏洞和脆弱点,这些漏洞和脆弱点在现实世界中可能被利用。这种级别的测试对于维持软件的健壮性、安全性和可靠性至关重要。
此外,测试凭证被用于访问不同的测试环境。例如,这些可以用于访问与生产环境非常相似但用于测试和开发目的的 QA(质量保证)、UAT(用户接受测试)和暂存环境。这种方式,测试凭证有助于促进有效的测试,同时最大程度地降低在实际环境中意外变更或侵入的风险。
请记住,处理测试凭证需要与处理常规用户凭证同样的安全级别,因为它们可能会提供对敏感信息的访问或暴露系统漏洞。
测试凭证泄露的可能后果
测试凭证的泄露可能导致一系列破坏性的后果,包括:
未授权访问测试环境: 如果测试凭证被泄露,未经授权的用户可能会访问到测试环境。他们可以篡改测试结果,引入漏洞,甚至中断测试过程。
开发数据的敏感性暴露: 测试环境通常包含与正在开发的软件相关的敏感数据,包括新的功能、专有算法或未修复的漏洞。一次侵入可能导致这些敏感信息的泄露。
安全漏洞: 一个被泄露的测试环境可以为攻击者提供进入其他相互连接的系统的跳板。通过获取访问权限,他们可能尝试提升权限或利用任何发现的漏洞,导致更大的安全漏洞。
信誉损害: 如果安全漏洞公之于众,可能导致信誉损害。客户和合作伙伴可能会对公司保护其生产环境和测试环境能力的信任度产生怀疑。
法律和合规问题: 可能会出现法律和合规性问题,特别是如果侵入导致敏感或个人身份信息(PII)的暴露。公司可能会因为未能充分保护其系统而面临罚款或诉讼。
保护测试凭证以防止这些可能的后果至关重要。这意味着需要采取强大的安全措施,包括安全的凭证存储,基于角色的访问控制,以及定期的审计和监控。
保护测试中使用的凭证的解决方案
为了提供对在测试中所需的凭证的全面保护,Testany 引入了"受信任的凭证保险箱"解决方案。
这个"受信任的凭证保险箱"解决方案有两个关键组成部分:
a) IaaS供应商提供的安全凭证 CRUD 产品(例如 AWS Secrets Manager,Azure Key Vault)
b) Testany 平台和 IaaS 供应商提供的凭证保险箱之间交换凭证和引用的安全方法。
目前,Testany 平台支持以两种不同的方式部署"受信任的凭证保险箱"解决方案:
a) 由 Testany 托管,或者
b) 使用用户自己的 IaaS 账户下的凭证保险箱服务。
虽然部署方法不同,但基本原则保持不变。下面,我们将结合 Testany 平台的系统架构图详细阐述这个解决方案的工作原理。在这里我们以 AWS Secrets Manager 为例,需要注意的是,下面的步骤对于其他的凭证保险箱产品来说非常相似(如果不是完全相同)。
传输和存储用于测试的凭证 - 一个测试凭证被单个测试使用
在你开始之前,请确保你已经知道你的 Testany 租户使用的是哪种凭证保险箱产品。如果你对此有疑问,请与你组织中的 Testany Global Admin 或 Workspace Admin 联系。

步骤1:在“注册测试用例”页面将您的测试用例包/链接上传到 Testany
步骤2:上传成功后,您将从 Testany 获取一个 Secret UUID(例如:06e11efd-6e32-427f-bbf9-7a5f2e26e237)。该 Secret UUID 将用于将凭证传输到受信任的凭证保险库(Trusted Credential Safe)。每个测试用例都将有其唯一的 Secret UUID。
此传输由 TLS1.2 进行端到端加密。
步骤3:下载 AWS Secrets Manager CLI https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions
步骤4:使用您的组织的 SSO 向 AWS IAM 进行身份验证以进行安全令牌服务(STS)令牌交易。
步骤5:使用您刚刚获取的 STS 令牌将测试用例所需的凭证传输到 AWS Secrets Manager。
步骤6:使用 AWS CLI 传输带有密钥名称的凭证。(例如:Secret UUID/ 密钥名称)
aws secretsmanager create-secret \
--name 06e11efd-6e32-427f-bbf9-7a5f2e26e237/MyTestSecret \
--description "My test secret created with the CLI." \
--secret-string "XXX-YYY-ZZZ"
在此示例中
Secret UUID:06e11efd-6e32-427f-bbf9-7a5f2e26e237
密钥名称:MyTestSecret
步骤7:您可以在您的测试代码中使用 MyTestSecret 作为键名,使用 Testany 内部服务 Testany Secrets Service 检索凭证
步骤8:完成测试用例实施后,将您的测试用例包/链接上传到 Testany 在“更新测试用例”页面
您传输到 AWS Secrets Manager 的凭证只会存储在 AWS Secrets Manager 中,没有适当的密钥名称,任何个人或应用都无法访问此 AWS Secrets Manager。
传输和存储用于测试的凭证-一个测试凭证被多个测试使用
在你开始之前,请确保你已经知道你的 Testany 租户使用的是哪种凭证保险箱产品。如果你对此有疑问,请与你组织中的 Testany Global Admin 或 Workspace Admin 联系。

步骤1:联系Workspace Admin创建一个凭证保险箱(credential safe),同时在该凭证保险箱下创建一个凭证的名称。
步骤2:在“注册测试用例”页面将您的测试用例包/链接上传到 Testany,在“注册测试用例”页面将步骤1中创建的凭证保险箱和凭证,绑定到该新建的测试中。
步骤3:下载 AWS Secrets Manager CLI https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions
步骤4:使用您的组织的 SSO 向 AWS IAM 进行身份验证以进行安全令牌服务(STS)令牌交易。
步骤5:使用您刚刚获取的 STS 令牌将测试用例所需的凭证传输到 AWS Secrets Manager。
步骤6:使用 AWS CLI 传输带有密钥名称的凭证。(例如:Secret UUID/ 密钥名称)
aws secretsmanager create-secret \
--name 06e11efd-6e32-427f-bbf9-7a5f2e26e237/MyTestSecret \
--description "My test secret created with the CLI." \
--secret-string "XXX-YYY-ZZZ"
在此示例中
Workspace Admin 在步骤1中创建了一个凭证名称,名称为
MyTestSecret
使用AWS CLI 工具创建了一个凭证,名称为
MyTestSecret
步骤7:您可以在您的测试代码中使用 MyTestSecret 作为键名,使用 Testany 内部服务 Testany Secrets Service 检索凭证
步骤8:完成测试用例实施后,将您的测试用例包/链接上传到 Testany 在“更新测试用例”页面
您传输到 AWS Secrets Manager 的凭证只会存储在 AWS Secrets Manager 中,没有适当的密钥名称,任何个人或应用都无法访问此 AWS Secrets Manager。
在需要执行测试时获取凭证

当执行测试时需要凭证时,测试引擎将使用测试用例包提供的密钥名称访问 AWS Secrets Manager,检索凭证并正确执行测试用例。运行容器与 AWS Secrets Manager 之间的所有流量都由 AWS 加密。没有个人或应用可以拦截它。
凭证以密钥名称的形式存储在受信任的凭证保险库(Trusted Credential Safe)中,格式为 Secret UUID/密钥名称。开发者可以使用内部服务 Testany Secrets Service,通过密钥名称从受信任的凭证保险库中检索秘密。
当执行测试单元时,将生成一个加密的随机实例 id。当测试用例包调用 Testany Secrets Service 时,加密的随机实例 id 将被注入到 Testany Secrets Service 并在服务中被解密。该服务使用此解密 ID 来找出测试用例的 Secret UUID。然后,该服务可以使用 Secret UUID/密钥名称从受信任的凭证保险库中检索凭证。
如果没有对应的测试执行单元活动,就不能触发 Testany Secrets Service,并且此服务不能在 Testany 平台网络之外触发。
基于角色的访问控制
Secrets Manager 为 Testany 的每个单租户帐户单独部署,并配置为仅允许该特定帐户的员工访问。此设置由 AWS 和该帐户使用的单点登录身份提供商(SSO IDP)共同保护。
监控和审计
AWS Secrets Manager 与 AWS CloudTrail 集成,以记录、持续监控并保留您的 AWS 帐户中进行的 Secrets Manager API 调用的信息。每次向 Secrets Manager 发出 API 调用时,AWS CloudTrail 都会创建一个事件。此事件包括生成请求的用户信息、日期和时间、使用的服务、执行的操作、操作的参数以及 Secrets Manager 返回的响应元素的信息。
这种监控机制有助于您审计和分析资源活动历史,以确保符合内部政策和操作最佳实践。
在记录方面,CloudTrail 可以记录所有 Secrets Manager API 调用并将日志文件传送到您指定的 Amazon S3 存储桶。您也可以选择使用 AWS Key Management Service 对日志文件进行加密以增强安全性。