IBM Cloud Docs
配置 detect-secret 扫描

配置 detect-secret 扫描

Detect-secret 是一种客户端安全工具,用于检测代码库中的私钥,以补救和防止私钥泄露。

有关更多信息,请参阅 IBM/detect-secret

Detect-secret 扫描整个当前代码库,并输出当前识别的私钥的快照。 然后,私钥列表用于将识别的私钥审计为真正或假正,然后 DevSecOps 工具链会为真正创建 Git 问题。

使用基线文件

基线文件是检测私钥扫描的快照。 该文件列出了每次运行时的潜在私钥,并标记了误报,这些误报不会被标记为后续运行中的问题。

必须定期更新基线文件。 通过落实基线文件并将其推送回存储库来更新和审计该基线文件。 在基线中包含这些误报可确保在未来扫描期间不会为这些现有文件创建任何问题。

分类私钥

当检测私钥扫描完成时,检测到的私钥尚未被归类为实阳性或假阳性。

三个条件对可能检测到的私钥进行分类:

  • 未审计-如果私钥是必须在审计过程中复审的潜在私钥,那么该私钥将归类为未审计私钥。
  • 已审计为真实-如果在审计期间某个私钥标记为真实,并且基线文件仍包含该私钥,那么该私钥将归类为真实。
  • 实时-如果由 detect-secret 所使用的插件将私钥确认为实时私钥,那么该私钥将归类为实时私钥。

管理基线

以下命令管理私钥基线:

  • detect-secrets scan 命令生成基线文件或更新现有文件以包含运行中检测到的所有潜在私钥的快照。
  • detect-secrets audit 命令会标注私钥,以便您可以缩小要迁移的私钥核对表的范围。

审计将检测到的私钥标识为 true 或 false,然后可以更新基线文件,以便可以从将来的扫描运行中排除这些误报。

更新基线

执行以下步骤以更新基线:

  1. 在本地计算机上安装 detect-secret:

    pip install --upgrade "git+https://github.com/ibm/detect-secrets.git@master#egg=detect-secrets"

  2. 运行以下命令以扫描,生成或更新存储库中的基线文件:

    1. 运行以下命令以扫描存储库文件夹:

      detect-secrets scan --update .secrets.baseline

      当您要忽略已知包含误报或不需要扫描的某些文件时,可以使用 --exclude-files 标志。 排除规则基于正则表达式格式。

      要使用文件和文件夹排除执行扫描,请使用以下命令:

      detect-secrets scan --update .secrets.baseline --exclude-files '<folder_to_ignore>|<file_to_ignore>'

      示例: detect-secrets scan --update .secrets.baseline --exclude-files "package-lock.json|go.sum"

      已排除文件的列表记录在基线文件中。

      如果在后续扫描中未提供 --exclude-files 选项,那么检测私钥将自动遵循基线文件中的现有排除列表。

      但是,如果要在 detect-secrets scan 期间指定新的排除列表,那么新列表将覆盖基线文件中的现有排除列表。

    2. 运行以下命令以复审并审计使用扫描步骤创建的基线文件:

      detect-secrets audit .secrets.baseline

      此命令会显示一个交互式终端以标记误报。 如果找到的私钥是实际私钥,那么可以指示 (y) es ; 如果它是误报,那么可以指示 (n) o

    3. 落实 .secrets.baseline 文件并将其推送回存储库,其进程必须定期在本地完成。

Detect-secret 扫描参数

如果您具有现有基线文件,那么扫描将使用现有配置。 不会覆盖先前的审计结果和设置。 如果不存在基线文件,那么将自动为运行创建临时基线。

detect-secrets-baseline-filename 参数指定由 detect-secret 使用的基线文件的定制文件名。 缺省情况下,detect-secret 在存储库根目录中查找名为 .secrets.baseline 的文件。 但是,如果以不同方式命名基线文件,那么可以使用此参数来提供其文件名。

在没有现有基线文件的情况下运行时,detect-secrets-exclusion-list 参数将覆盖缺省排除列表。 此参数标识要忽略的文件,以便不会创建链接到这些文件的问题。

detect-secrets-image 参数可用于指定要使用的其他 detect-secret 映像,例如定制映像或官方 detect-secret 映像的特定版本。

detect-secrets-verbose 参数设置为 1 时,将记录正在扫描的当前文件的名称。

表 1. 私钥-扫描参数
名称 Type 描述 必需或可选
detect-secrets-baseline-filename 字符串 应用程序存储库中基线文件的名称。 缺省值为 .secrets.baseline 如果基线文件不是缺省名称 .secrets.baseline,那么是必需的。
detect-secrets-exclusion-list 字符串 要在 detect-secret 扫描中排除的文件的正则表达式列表。 缺省值为 requirements.txt|go.mod|go.sum|pom.xml|build.gradle|package-lock.json 可选,仅当不存在 .secrets.baseline 文件时,此文件列表才会覆盖常规排除列表。
detect-secrets-image 字符串 指定备用 detect-secret 图像,包括定制图像或特定版本的官方图像。 可选
detect-secrets-verbose 字符串 输出当前正在扫描的文件的名称。 缺省值为 0 可选,调试标志 0-off,1-on。