
如何将Secrets扫描加入到GitLab Pipeline
概述
如果要管理应用程序开发管道以交付软件,则需要实施一项关键安全控制。您需要确保您的机密受到保护。简单地说,机密是您需要保护的凭据,因为该凭据具有特权功能。例如:
- 用户名和密码组合
- 接口密钥
- JSON 网络令牌
- 私钥
开发人员经常意外地将这些凭据保存到存储库中。将这些凭据或机密添加到存储库后,清理可能会很痛苦,并且需要您更改凭据。更好的长期方法是使用“提交前检查”来避免存储机密。该主题将在另一篇文章中介绍。本博客重点介绍如何扫描现有存储库以查找 Gitlab 管道中存储的机密。
识别或创建存储库
如果您想继续操作,可以单击此链接获取公共仓库。https://gitlab.com/cmg_public/secrets_scanning_test
第一步是确定目标存储库。如果您正在入门但没有,只需在 Gitlab 中创建一个新项目即可。从菜单中单击“项目>创建新项目>导入上面项目地址”。
扫描规则配置文件
文件路径:.gitlab/secret-detection-ruleset.toml
您会注意到我添加了一些自定义规则。这些将用于标识默认情况下未启用的某些类型的机密。您可以根据需要创建任意数量的规则,以查找通常出现在开发人员代码中的模式。
"CMG Generic JWT" 此正则表达式 (REGEX) 查找存储在文件中的 JSON Web Token。诸如“JWT”、“jwt_token”、“secret”、“bearer”等。正则表达式不区分大小写。
"CMG Custom Generic Password" 此正则表达式查找存储在文件中的单词“password”的常见派生词。此正则表达式也不区分大小写。
Pipeline配置文件
此模板将用于根据默认设置和任何自定义正则表达式字符串(如我们在前面的步骤中添加的字符串)扫描机密。
此时,我们已准备好运行管道;但是,我们在存储库中没有任何要扫描的内容。在下一步中,我们将创建一些用于测试配置的机密。
用于测试的Secret文件
- Fake.json:我们可以用它来测试JWT。
- FakePrivKey.key:我们可以使用此文件来测试私钥。
- FakeAPIKey.txt:我们可以用它来查找和测试 API 密钥。
运行测试并观察结果
默认情况下,每次添加并提交文件时,都会触发构建。如果单击 Web 界面左侧窗格中的“CI/CD”>“管道”对象,则可以看到每个作业的结果。单击每个屏幕上的“运行管道”按钮。系统将提示您输入其他可以忽略的选项。
几秒钟后,管道作业将开始。一旦它变成蓝色,您可以单击“secret_detection”阶段并观看输出。
如果一切按计划进行,您应该会看到类似的文本。
下载结果
几分钟后,结果将可供下载关联作业。单击作业右侧的“下载按钮”,然后选择“secret_detection.secret_detection”文件。它将下载为 JSON。然后,您可以在自己喜欢的文本编辑器或在线 JSON 格式化工具中打开它。
查看结果
查看漏洞报告
这个例子找到了我们的“Fake.Json”文件。在详细信息页面上,单击"Fake.json:3". 该工具会将您定向到找到的特定文件和凭据:
总结
总之,从安全角度来看,您可以看到这是简单且有价值的。一旦你的秘密被提交,修复起来就是一个痛苦的过程。这是一种方法,但不会否定对凭据和机密存储进行“预提交扫描”或使用“vault”的需要。
文章转载自公众号:DevOps云学堂
