
功能介绍
Secret Gate 在任何东西离开你的掌控之前,只回答一个问题——无论它是发布用的 zip 包、给客户的副本、开源推送还是下一次提交:这里面有没有我的秘密?它知道你的秘密是什么,因为它读取存放秘密的文件,并且从不显示秘密:一条发现会指出文件、行号以及值的来源。
- 你的确切值。 你的 env 文件、JSON 和 YAML 配置、
.netrc和密钥文件中的每一个值,都会按原样、base64 编码和 URL 编码的形式被查找。一个看起来像普通单词的密码,或者一个没有已知前缀的内部令牌,都会像其他秘密一样被捕获。 - 来自它未运行其上的机器的秘密。 在你的笔记本电脑上生成指纹;构建服务器无需持有这些值即可找到它们。
- 其他机器根据自身的秘密进行检查。 文件通过 SSH 发送到每台机器,在那里扫描并删除。秘密从不移动,无法响应的机器会阻止发布。
- 形状、名称和噪声也包括在内。 25 种令牌格式、你的名称、主机、域名和账户 ID、私有 IP 地址、个人邮箱地址、电话号码、IBAN、主目录路径,以及紧邻疑似秘密名称的随机字符串。
- 它每次都会自我验证。 每次扫描开始时都会植入各类金丝雀;如果任何检查未能命中其金丝雀,扫描就不会运行。
- 在你已有的工作环境中。 文件夹、zip 和 tar 压缩包、git 预提交或预推送钩子、用于 CI 的退出码、JSON 报告。
在我们发布的产品上经过测试
- 我们销售的每个套件: 8 个已发布的压缩包,针对我们构建机上的 133 个秘密值和笔记本电脑上的 16,259 个指纹进行扫描。全部通过,总共耗时 5.4 秒。
- 植入发布副本中的真实秘密 被明文和 base64 编码形式捕获,每次都能指出其来源文件。该值未出现在输出或报告中。
- 通过 SSH 进行的远程扫描 在 1.4 秒内根据第二台机器上的 499 个秘密值检查了发布包,并捕获了仅存在于该机器上的副本中植入的令牌。
套件包含哪些内容
门禁
四项检查、自检、压缩包和 git 暂存区扫描、可读报告以及 JSON 报告。
指纹
一台机器上秘密的指纹,用于在另一台机器上扫描,无需传输值。
远程扫描
在每台存有密钥的机器上检查相同的文件,并附带您项目的规则。
设置与 CI
用于查找密钥文件的工具、Git 钩子,以及用于发布归档的 GitHub Actions 工作流。
系统要求
- Linux 或 macOS,Python 3.9 或更新版本;无需通过 pip 安装任何内容。
- 钩子需要 Git,远程扫描需要 SSH。
须知
- 它读取文件的当前状态。已存在于 Git 历史记录中的密钥仍保留在那里:请轮换该密钥。
- 扫描文件夹内的归档文件不会被打开;请分别扫描每个归档。
- 请将指纹文件与密钥一样保密:它们保存每个 16 个字符或更长值的前 4 个字符。
From our field notes
常见问题
它与 gitleaks 或 TruffleHog 有何不同?
那些工具查找密钥通常的样子,并且做得很好。Secret Gate 还知道您的密钥实际是什么:它读取您自己的密钥文件并查找这些确切的值,因此即使是没有可识别形状的数据库密码或内部令牌也能被捕获。它专为发布前的那一刻而构建,并在失败时关闭。
它会把我的密钥发送到任何地方吗?
不会。值从您的文件读入内存进行扫描,从不打印、写入或发送;如果您创建一个指纹文件,它保存哈希值和每个值的前 4 个字符。远程扫描将您即将发布的文件发送到您自己的机器;该机器上的密钥仍保留在该机器上。
关于误报怎么办?
发现项意味着“查看此项”。如果没问题,请在项目配置中为该类型的发现项添加一条狭窄的允许规则,例如您自己的支持地址。没有可以关闭检查的开关。
它可以扫描我的 Git 历史记录吗?
不能。它检查您即将发布的内容:一个文件夹、一个归档或下一次提交。对于已存在于历史记录中的密钥,请轮换该密钥。
已更新: