我们对我们投入于GitGuardian仪表板UI的工作感到非常自豪,它帮助安全团队发现秘密并处理事件。然而,我们理解用户需要在Python、Powershell或Bash脚本中程序化调用平台的途径。
这就是我们为什么要构建ggshield,GitGuardian 的命令行接口 (CLI) ,以便将我们秘密检测平台的强大功能扩展到终端环境中。另一个目标是让开发团队能够更早地在软件开发生命周期中引入安全扫描(即将安全性扫描提前到软件开发生命周期的早期阶段)。
我们之前发布了一份使用 ggshield 的快速参考指南,概述了 ggshield 命令的结构和用法,以及使用我们 CLI 的基本知识。它还涵盖了认证以及如何利用 Git hooks 进行自动检测。如果您是 ggshield 的新手,我们强烈建议您接着阅读这篇文章。
自从发布了那篇指南和快速参考之后,我们一直在努力让ggshield更加易用且功能更加强大。让我们来看看我们最近对命令行工具的一些更新,并顺便学习一些技巧和窍门。
ggshield
更轻松地上手 ggshield,早期版本的 ggshield 需要使用 Python 的 pip
或 Mac 的 homebrew
来安装。虽然这些选项仍然有效,但我们听从了客户的意见,他们希望我们能让它在 Mac 和 Windows 上更简单地安装,特别是在那些可能没有这些包管理器的管理环境中,比如企业环境中。
Windows 用户现在可以下载一个独立的可执行程序。只需点击下载最新的 windows-msvc.zip
并将其解压到您喜欢的任意位置。然后,在解压的文件夹中找到 ggshield.exe
。
MacOS 用户现在可以使用我们新的签名包来安装 .ggshield。下载最新的 .pkg
文件,并使用官方的 Mac 安装程序来快速安装。就这么简单。
发现硬编码凭据的最佳时机是在这些凭据进入Git历史之前,还在开发者的机器上时。这也是SDLC中处理明文密钥最经济的步骤。这就是为什么我们让在git预提交阶段使用ggshield secret scan pre-commit
进行扫描变得简单。
开发人员可以设置全局 Git 钩子,使其适用于所有仓库,或者设置只针对单个仓库的本地 Git 钩子,使用 ggshield install
命令实现。我们还可以通过 pre-push 和 pre-receive 事件自动执行扫描。您可以[在原始 ggshield 指南中了解更多有关 Git 钩子的信息]。
我们一直为所有用户在使用 Git 钩子时检测到机密时提供一些有用的通用建议来缓解问题。现在,工作区管理员可以提供针对自动机密扫描在 git 工作流中的提交前、推送前甚至接收前步骤的自定义缓解建议。现在,在信息最有价值的时刻,从未如此方便地分享内部资源,例如公司指南、文档链接,甚至关于如何正确使用您选择的秘密管理器的说明。请在此处阅读 如何自定义您的缓解信息的完整文档。
关于请注意:如果您的团队使用的是 ggshield 1.30 之前的版本,每个人都需要更新到最新版本以使用自定义修复消息。
secret scan
的消息 —— 我们最常使用的命令
在讨论最新的更新之前,让我们花一点时间来庆祝用户与最流行的命令 ggshield secret scan
的互动。每天,成千上万的用户通过 CLI 向我们的平台发出此命令。这个基本命令可让您扫描多种来源中的超过 400 种类型的秘密。
ggshield 使用报告
我们开发了一个命令行界面(CLI),其中一个目的是让团队能够实施防护机制,以此融入他们的软件开发流程中。我们很高兴地报告,83%的机密扫描涉及到了自动化。我们也从一些客户那里听说,由于通过编程方式运行ggshield命令非常简单,他们还将在各种自定义的本地自动化脚本中添加了扫描。
人们最常用的调用ggshield的方式是ggshield secret scan ci
。此命令设计用于在您的持续集成(CI)系统中运行,例如GitLab Runner、GitHub Actions、Jenkins或CircleCI等。
最近增加的ggshield secret scan changes
命令可以让你更轻松地在即将合并或重新定位到默认分支(通常为main
分支,通向生产环境)的分支中查找秘密。
虽然 ggshield 可以扫描整个仓库,包括所有提交和分支,但更常用的一个命令是 ggshield secret scan path
,它只查看你扫描文件的当前状态。然而,并不是目录中的所有文件都会被 Git 跟踪。一个很好的例子是本地的 .env
文件。通常人们会让 Git 忽略这些文件,方法是把它们列在 .gitignore
文件中。
直到最近之前,扫描整个文件夹也意味着会扫描这些被忽略的文件,这些文件可能故意包含本地开发所需的API密钥或密码。现在,用户可以使用 --use-gitignore
选项跳过 .gitignore
文件指示的扫描。这是我们在尝试为使用不同开发方式的用户提供更多支持的一种方式。
在帮助菜单中,您可以使用--use-gitignore选项。
创建蜜糖令牌一旦我们在GitGuardian平台上添加了Honeytokens,这款网络欺骗工具后,用户希望能够更轻松地生成这些Honeytokens,而无需打开浏览器并登录到其GitGuardian仪表板。他们还希望以更自动化的形式更好地利用这些诱饵凭据。我们听取了他们的意见,并积极响应。
使用 ggshield honeytoken create
,任何人都可以仅需几个按键创建一个新的基于AWS的蜜罐凭证。运行该命令会返回一个诱饵凭证(蜜罐凭证),这个凭证可以复制到你的代码、项目管理工具或通信平台等任何私有环境中。别担心,用 ggshield 扫描 GitGuardian 的蜜罐凭证不会引起任何警报,因为平台知道这些即使看起来像真实的凭证,也是安全的。
你可以通过在项目中可能真实存在的文件名来创建一个蜜罐令牌(honeytoken),使用命令 ggshield honeytoken create-with-context
。在相关上下文中添加蜜罐令牌,使其看起来更真实,降低攻击者察觉到网络欺骗行为的可能性。
"来自GitGuardian博客的文章插图"
ggshield honeytoken 帮助菜单选项
我的秘密是不是不小心走漏风声了?我们创建的最受欢迎的免费工具之一是我的秘密泄露了吗? (HMSL)。此工具让您快速且安全地检查您的凭证是否曾在公共 GitHub 仓库中被发现。您可以在我们的博客公告中了解更多关于该工具的信息。
我们可以自豪地说,GitGuardian CLI 用户可以通过 ggshield hmsl
命令来使用这个工具。您可以对任何秘密进行指纹化,生成一个简短的加密哈希片段,这意味着您可以安全地将其与我们的公开明文凭据数据库进行比对。
此命令中其中一个最强大的选项是 check-secret-manager
,它可以安全检查存储在您机密保险库中的所有机密。目前,仅支持Hashicorp的Vault。我们非常希望听到您希望我们下一步支持哪个机密管理工具。
这是一张图片链接,点击可以查看更多信息。
HasMySecretLeaked
SARIF 输出结果并没有一条固定的路来报告、筛选和修复安全发现。市场上有很多解决方案可供选择,许多团队也构建了自定义软件解决方案,这些工具收集并利用所有安全扫描工具的数据。
默认,任何 ggshield 命令的标准输出格式都是以简单文本形式直接输出到终端。由于许多用户依赖自动化工具,他们要求一种更容易传输的格式,以便输出可以被其他工具或流程处理。我们已经有一段时间提供 JSON 格式了,还提供了一个简写命令选项 --json
。
最近,一些高级客户开始要求我们将输出转换为静态分析结果互换格式(SARIF)。最初由网络安全专家开发,作为一种标准化静态分析工具输出的方式,SARIF使聚合、分析和比较来自各种不同扫描工具的结果变得更加容易。SARIF的价值在于它提供了一个统一且结构化的管理安全分析结果的方法。它有助于确保安全漏洞能够被高效地识别、沟通和修复。
你可以使用命令 ggshield secret scan path <path-to-directory> --format sarif
,这样可以让你以标准格式获取结果。我们希望这能帮助你更有效地使用 ggshield。
一个示例(例如)SARIF文件
使用 ggshield 左移我们很高兴能够帮助各种规模的团队在整个软件开发生命周期中拥抱秘密发现,通过赋予开发人员直接在命令行中扫描明文凭证的能力。我们不断努力改进平台功能,并让ggshield更实用、更易用。
如果您还没有在日志文件或持续集成环境中寻找秘密,我们欢迎您今天注册GitGuardian并下载ggshield。然后,只需几个简单的命令,您可以轻松自动化本地秘密扫描,只需登录您的GitGuardian工作区(ggshield auth login
),然后设置全局Git预提交钩子,自动在每次提交前检查秘密(ggshield install --mode global
)。
我们真的很希望听到您的想法。(https://www.gitguardian.com/contact-us?ref=blog.gitguardian.com)您希望我们在 ggshield 上添加哪些其他功能?是否有尚未实现的功能让您和您的团队无法使用 ggshield?我们也非常想听听您是如何将 ggshield 集成到 PowerShell 或 Bash 脚本中的,以及您是如何使用我们的工具来提升整体安全自动化的。