mongodb/kingfisher

GitHub: mongodb/kingfisher

一款基于 Rust 的高性能密钥泄露扫描与实时验证工具,支持代码库、云存储和协作平台的多源检测。

Stars: 853 | Forks: 69

# Kingfisher:具备实时验证功能的开源密钥扫描器

Kingfisher Logo [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Detection Rules](https://img.shields.io/badge/Detection%20Rules-476-2ea043.svg)](https://github.com/mongodb/kingfisher)
[![ghcr downloads](https://ghcr-badge.elias.eu.org/shield/mongodb/kingfisher/kingfisher)](https://github.com/mongodb/kingfisher/pkgs/container/kingfisher)
Kingfisher 是一个开源密钥扫描器和**实时密钥验证**工具,由 Rust 构建而成。 它结合了 Intel 的 SIMD 加速正则表达式引擎 (Hyperscan) 与语言感知解析技术,以在海量规模下实现高精度检测,并**内置数百条规则**,用于在泄露的 API key、token 和凭据进入生产环境之前进行检测、**验证**和分类处理。 Kingfisher 专为进攻性安全工程师和蓝队防御者设计,帮助您扫描代码库、云存储、聊天记录、文档和 CI 流水线,快速查找并验证暴露的密钥。

**了解更多:** [Kingfisher 介绍:实时密钥检测与验证](https://www.mongodb.com/blog/post/product-release-announcements/introducing-kingfisher-real-time-secret-detection-validation) ## 什么是 Kingfisher? Kingfisher 是一款用于源代码和开发者平台的高性能、开源密钥检测工具。如果您正在寻找 "GitHub 密钥扫描器"、"API key 扫描器"、"token 泄露检测" 或 "Git 密钥扫描器",这个项目正是为此工作流构建的。 - 扫描代码、Git 历史以及集成平台 (GitHub, GitLab, Azure Repos, Bitbucket, Gitea, Hugging Face, Jira, Confluence, Slack, Docker, AWS S3, 和 Google Cloud Storage) - 针对 provider API 验证发现的凭据,以减少误报 - 直接从 CLI 撤销受支持的密钥 - 为安全团队、合规性和 CI 生成 JSON、SARIF 和 HTML 输出 ## 核心特性 ### 多种扫描目标
| 文件 / 目录 | 本地 Git | GitHub | GitLab | Azure Repos | Bitbucket | Gitea | Hugging Face | |:-------------:|:----------:|:------:|:------:|:-------------:|:----------:|:------:|:-------------:| | Files / Dirs
Files / Dirs | Local Git
Local Git | GitHub
GitHub | GitLab
GitLab | Azure Repos
Azure Repos | Bitbucket
Bitbucket | Gitea
Gitea |Hugging Face
Hugging Face | | Docker | Jira | Confluence | Slack | AWS S3 | Google Cloud | |:------:|:----:|:-----------:|:-----:|:------:|:---:| | Docker
Docker | Jira
Jira | Confluence
Confluence | Slack
Slack | AWS S3
AWS S3 | Google Cloud Storage
Cloud Storage |
### 性能、准确性与数百条规则 - **性能**:多线程、基于 Hyperscan 的扫描,专为海量代码库构建 - **可扩展规则**:数百个内置检测器以及 YAML 定义的自定义规则 ([docs/RULES.md](/docs/RULES.md)) - **验证与撤销**:对发现的密钥进行实时验证,并支持直接撤销受支持平台 (GitHub, GitLab, Slack, AWS, GCP 等) 的密钥 ([docs/USAGE.md](/docs/USAGE.md)) - **爆炸半径映射**:使用 `--access-map` 即时将泄露的密钥映射到其有效的云身份和暴露的资源。支持 AWS, GCP, Azure, GitHub, Gitlab,更多 token 支持即将推出。 - **广泛的 AI SaaS 覆盖**:查找并验证 OpenAI, Anthropic, Google Gemini, Cohere, AWS Bedrock, Voyage AI, Mistral, Stability AI, Replicate, xAI (Grok), Ollama, Langchain, Perplexity, Weights & Biases, Cerebras, Friendli, Fireworks.ai, NVIDIA NIM, Together.ai, Zhipu 等众多平台的 token - **压缩文件**:支持解压并扫描压缩文件中的密钥 - **SQLite 数据库扫描**:自动提取并扫描 SQLite 数据库表行中存储的密钥 - **Python 字节码 (.pyc) 扫描**:提取并扫描已编译 Python (`.pyc`, `.pyo`) 文件中的字符串常量 - **基线管理**:生成和跟踪基线以抑制已知密钥 ([docs/BASELINE.md](/docs/BASELINE.md)) - **校验和感知检测**:验证具有内置校验和的 token(例如 GitHub, Confluent, Zuplo)——无需 API 调用 - **内置报告查看器**:使用 `kingfisher view ./report-file.json` 在本地可视化和分类发现结果 - **审计报告**:生成包含扫描元数据和验证顺序的面向合规性的 HTML 报告 - **库 crate**:将 Kingfisher 的扫描引擎嵌入到您自己的 Rust 应用程序中 ([docs/LIBRARY.md](docs/LIBRARY.md)) # 基准测试结果 参见 ([docs/COMPARISON.md](docs/COMPARISON.md))

Kingfisher Runtime Comparison

## 基本用法演示 ``` kingfisher scan /path/to/scan --view-report ``` 注意:回放已为演示目的放慢 ![Kingfisher secret scanning demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/0554c46306120217.gif) ## 报告查看器演示 探索 Kingfisher 的内置报告查看器及其 `--access-map` 功能,它可以显示 token (AWS, GCP, Azure, GitHub, GitLab, 和 Slack...更多支持即将推出) 实际上可以访问的内容。 注意:当您传递 `--view-report` 时,Kingfisher 会在端口 `7890`(默认)上启动一个 Web 服务器,并在您的默认浏览器中打开它。默认情况下,为了安全起见,它绑定到 `127.0.0.1`。您会在扫描输出的末尾附近看到这一点,并且 **Kingfisher 将保持运行**,直到您停止它。 ``` INFO kingfisher::cli::commands::view: Starting access-map viewer address=127.0.0.1:7890 Serving access-map viewer at http://127.0.0.1:7890 (Ctrl+C to stop) ``` **用法:** ``` kingfisher scan /path/to/scan --access-map --view-report ``` ![Kingfisher access map and report viewer demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/facd5877a7120219.gif) **点击查看视频** [![Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/5e72df4202120223.png)](https://github.com/user-attachments/assets/d33ee7a6-c60a-4e42-88e0-ac03cb429a46) # 目录 - [什么是 Kingfisher?](#what-is-kingfisher) - [核心特性](#key-features) - [合规与审计就绪扫描](#compliance-and-audit-ready-scans) - [基准测试结果](#benchmark-results) - [快速入门](#getting-started) - [快速开始](#quick-start) - [安装](#installation) - [检测规则](#detection-rules) - [用法示例](#usage-examples) - [平台集成](#platform-integrations) - [环境变量](#environment-variables) - [高级功能](#advanced-features) - [文档](#documentation) - [库用法](#library-usage) - [路线图](#roadmap) - [许可证](#license) # 快速入门 ## 快速开始 ### 1:安装 Kingfisher ([INSTALLATION.md](docs/INSTALLATION.md)) ``` # Homebrew (Linux/macOS) brew install kingfisher # Or install from PyPI with uv uv tool install kingfisher-bin # Or use the install script (Linux/macOS) curl -sSL https://raw.githubusercontent.com/mongodb/kingfisher/main/scripts/install-kingfisher.sh | bash # Or use PowerShell based install script on Windows Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/mongodb/kingfisher/main/scripts/install-kingfisher.ps1' -OutFile install-kingfisher.ps1 ./install-kingfisher.ps1 # Or run with Docker (no install required) docker run --rm -v "$PWD":/src ghcr.io/mongodb/kingfisher:latest scan /src ``` ### 2:扫描目录中的密钥 ([USAGE.md](/docs/USAGE.md)) ``` kingfisher scan /path/to/code ``` ### 3:扫描并在浏览器中查看结果 ``` kingfisher scan /path/to/code --view-report ``` ### 4:仅显示已验证(有效)的密钥 ``` kingfisher scan /path/to/code --only-valid ``` ### 5:撤销发现的密钥 ``` # Revoke a GitHub token kingfisher revoke --rule github "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Revoke AWS credentials (sets access key to Inactive) kingfisher revoke --rule aws --arg "AKIAIOSFODNN7EXAMPLE" "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" ``` ### 6:扫描 GitHub 组织 ([INTEGRATIONS.md](docs/INTEGRATIONS.md)) ``` KF_GITHUB_TOKEN="ghp_..." kingfisher scan github --organization my-org ``` ### 7:扫描 GitLab 群组 ``` KF_GITLAB_TOKEN="glpat-..." kingfisher scan gitlab --group my-group ``` ### 8:扫描 Azure Repos ``` KF_AZURE_PAT="pat" kingfisher scan azure --organization my-org ``` ### 9:扫描 Bitbucket 工作区 ``` KF_BITBUCKET_TOKEN="token" kingfisher scan bitbucket --workspace my-team ``` ### 10:扫描 Gitea 组织 ``` KF_GITEA_TOKEN="token" kingfisher scan gitea --organization my-org ``` ### 11:扫描 Hugging Face ``` KF_HUGGINGFACE_TOKEN="hf_..." kingfisher scan huggingface --organization my-org ``` ### 12:扫描 S3 存储桶 ``` kingfisher scan s3 bucket-name --prefix path/ ``` ### 13:扫描 Google Cloud Storage ``` kingfisher scan gcs bucket-name --prefix path/ ``` ### 14:扫描 Docker 镜像 ``` kingfisher scan docker ghcr.io/org/image:latest ``` ### 15:扫描 Jira 问题 ``` KF_JIRA_TOKEN="token" kingfisher scan jira --url https://jira.company.com --jql "project = SEC" ``` 添加 `--include-comments` 和/或 `--include-changelog` 以将扫描范围扩展到 Issue 正文之外。 ### 16:扫描 Confluence 页面 ``` KF_CONFLUENCE_TOKEN="token" kingfisher scan confluence --url https://confluence.company.com --cql "label = secret" ``` ### 17:扫描 Slack 消息 ``` KF_SLACK_TOKEN="xoxp-..." kingfisher scan slack "api_key OR password" ``` ### 18:使用 Docker 运行(无需安装) ``` docker run --rm -v "$PWD":/src ghcr.io/mongodb/kingfisher:latest scan /src ``` ### 19:使用 Docker 运行并在浏览器中查看报告 要在 Docker 中运行扫描并在主机上查看 HTML 报告,请使用 `--view-report-address 0.0.0.0`,以便服务器可以从容器外部访问,并使用 `-p` 映射端口: ``` docker run --rm \ -v "$PWD":/src \ -p 7890:7890 \ ghcr.io/mongodb/kingfisher:latest \ scan https://github.com/leaktk/fake-leaks \ --access-map \ --view-report \ --view-report-address 0.0.0.0 ``` 然后在浏览器中打开 **http://localhost:7890**。如果端口 7890 已被占用,请使用 `--view-report-port` 并相应地映射: ``` docker run --rm \ -v "$PWD":/src \ -p 7891:7891 \ ghcr.io/mongodb/kingfisher:latest \ scan https://github.com/leaktk/fake-leaks \ --access-map \ --view-report \ --view-report-port 7891 \ --view-report-address 0.0.0.0 ``` 然后打开 **http://localhost:7891**。 ### 20:输出 JSON 结果 ``` kingfisher scan /path/to/code --format json --output findings.json ``` ### 21:映射发现凭据的爆炸半径 ``` kingfisher scan /path/to/code --access-map --view-report ``` ## 安装 Kingfisher 支持多种安装方式: - **Homebrew**:`brew install kingfisher` ![Homebrew Formula Version](https://img.shields.io/homebrew/v/kingfisher) - **PyPI with uv**:`uv tool install kingfisher-bin` - **预构建版本**:从 [GitHub Releases](https://github.com/mongodb/kingfisher/releases) 下载 - **安装脚本**:适用于 Linux、macOS 和 Windows 的一行安装程序 - [INSTALLATION.md](docs/INSTALLATION.md) - **Docker**:`docker run ghcr.io/mongodb/kingfisher:latest` - **Pre-commit hooks**:与 git hooks、pre-commit 框架或 Husky 集成 - **从源码编译**:使用 `make` 为您的平台构建 **完整的安装说明和 pre-commit hook 设置,请参见 [docs/INSTALLATION.md](docs/INSTALLATION.md)。** # 检测规则 Kingfisher 附带[数百条规则](crates/kingfisher-rules/data/rules/),涵盖从经典云密钥到最新 AI SaaS token 的所有内容。以下是概览: | 类别 | 我们捕获的内容 | |----------|---------------| | **AI SaaS APIs** | OpenAI, Anthropic, Google Gemini, Cohere, Mistral, Stability AI, Replicate, xAI (Grok), Ollama, Langchain, Perplexity, Weights & Biases, Cerebras, Friendli, Fireworks.ai, NVIDIA NIM, together.ai, Zhipu 等 | | **云服务商** | AWS, Azure, GCP, 阿里云, DigitalOcean, IBM Cloud, Cloudflare, Temporal Cloud 等 | | **开发与 CI/CD** | GitHub/GitLab tokens, CircleCI, TravisCI, TeamCity, Docker Hub, npm, PyPI, Vercel 等 | | **消息与通讯** | Slack, Discord, Microsoft Teams, Twilio, Mailgun, SendGrid, Mailchimp 等 | | **数据库与数据运维** | MongoDB Atlas, PlanetScale, Postgres DSNs, Grafana Cloud, Datadog, Dynatrace 等 | | **支付与账单** | Stripe, PayPal, Square, Goless 等 | | **安全与 DevSecOps** | Snyk, Dependency-Track, CodeClimate, Codacy, OpsGenie, PagerDuty 等 | | **其他 SaaS 与工具** | 1Password, Adobe, Atlassian/Jira, Asana, Netlify, Baremetrics 等 | ## 编写自定义规则 Kingfisher 附带数百条规则,其中包含 HTTP 和特定服务的验证检查(AWS, Azure, GCP 等),以确认检测到的字符串是否为有效凭据。 但是,您可能希望添加自己的自定义规则,或修改检测以更好地适应您的需求/环境。 **完整的规则文档,请参见 [docs/RULES.md](docs/RULES.md)。** ### 校验和智能 现代 API token 越来越多地包含**内置校验和**,即简短的内部摘要,使每个凭据都可自我验证。(有关背景,请参阅 [GitHub 关于其较新 token 格式的文章](https://github.blog/engineering/platform-security/behind-githubs-new-authentication-token-formats/)以及为什么校验和能大幅减少误报。) Kingfisher 在规则中支持**校验和感知匹配**,从而能够对凭据进行*无需*调用第三方 API 的**离线结构验证**。 通过验证每个 token 的内部校验和(针对支持校验和的 token),Kingfisher 几乎消除了所有误报——在验证运行之前自动跳过结构无效或伪造的 token。 **为什么这很重要** - **离线验证** —— 不需要 API 调用 - **行业标准对齐** —— 兼容前缀 + 校验和的 token 设计(例如现代 PAT) - **更低的误报率** —— 无效 token 仅凭结构即可被过滤掉 **了解更多**:实现细节和模板记录在 **[docs/RULES.md](docs/RULES.md)** # 用法示例 ## 基本扫描 ``` # Scan with secret validation kingfisher scan /path/to/code ## NOTE: This path can refer to: # 1. a local git repo # 2. a directory with many git repos # 3. or just a folder with files and subdirectories # Scan without validation kingfisher scan ~/src/myrepo --no-validate # Turbo mode: run as fast as possible by disabling Git commit metadata, Base64 decoding, # MIME sniffing, language detection, and tree-sitter parsing # (findings omit commit context, Base64-only matches, MIME type, and language metadata) kingfisher scan ~/src/myrepo --turbo # Display only secrets confirmed active by third‑party APIs kingfisher scan /path/to/repo --only-valid # Output JSON and capture to a file kingfisher scan . --format json | tee kingfisher.json # Output SARIF directly to disk kingfisher scan /path/to/repo --format sarif --output findings.sarif ``` ## 访问映射与可视化 **停止猜测,开始映射:了解您真正的爆炸半径** 发现泄露的凭据只是第一步。关键的问题不仅仅是“这是否是一个密钥?”——而是“攻击者可以用它做什么?” Kingfisher 的 `--access-map` 功能将密钥检测从简单的警报转变为全面的威胁评估。Kingfisher 不会留给您一个晦涩难懂的 API key,而是主动针对您的云服务商(AWS, GCP, Azure Storage, Azure DevOps, GitHub, GitLab, 或 Slack)进行身份验证,以映射凭据权限的全部范围。 * 即时身份解析:立即识别密钥属于谁——无论是特定的 IAM 用户、担任的角色还是服务账户。 * 可视化爆炸半径:准确查看哪些资源(S3 buckets, EC2 实例, 项目, 存储容器)已暴露并面临风险。 ``` # Generate access map during scan kingfisher scan /path/to/code --access-map --view-report # View access-map reports locally kingfisher view kingfisher.json ``` ## 直接密钥验证与撤销 ``` # Validate a known secret without scanning kingfisher validate --rule opsgenie "12345678-9abc-def0-1234-56789abcdef0" # Validate from stdin echo "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" | kingfisher validate --rule github - # Revoke a Slack token kingfisher revoke --rule slack "xoxb-..." # Revoke a GitHub PAT kingfisher revoke --rule github "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ``` 直接验证也可使用验证限流: - `--validation-rps ` 设置全局请求速率。 - `--validation-rps-rule ` 设置按规则的覆盖(可重复)。 - 规则选择器接受短名称,因此 `github=2` 匹配 `kingfisher.github.*`。 ``` # Limit direct validation to 1 req/sec for GitHub rules kingfisher validate --rule github "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ --validation-rps-rule github=1 ``` ## 合规与审计就绪扫描 Kingfisher 的构建旨在支持合规和安全保障目标,而不仅仅是检测。除了查找密钥外,它还帮助团队生成安全开发控制措施正在运行的证据。 - **审计扫描输出**:生成包含扫描时间戳、报告生成时间、验证状态和发现结果文件级链接的独立 HTML 报告 - **利于证据的元数据**:包含版本、扫描统计信息和经过清理的命令参数,用于审查工作流 - **控制叙述支持**:证明在 CI/CD 和开发者工作流中主动检测并分类硬编码凭据/密钥 ``` # Generate an audit-ready HTML report kingfisher scan /path/to/code --format html --output kingfisher-audit.html ``` ## 高级扫描选项 ``` # Pipe any text directly into Kingfisher cat /path/to/file.py | kingfisher scan - # Limit maximum file size scanned (default: 256 MB) kingfisher scan /some/file --max-file-size 500 # Turbo mode: equivalent to --commit-metadata=false --no-base64 and disables MIME sniffing, # language detection/tree-sitter parsing for maximum speed # No Git commit metadata (author, date, hash), Base64 decoding, MIME, or language metadata in findings kingfisher scan /path/to/repo --turbo # Scan using a rule family kingfisher scan /path/to/repo --rule kingfisher.aws # Display rule performance statistics kingfisher scan /path/to/repo --rule-stats # Throttle validation request rate globally kingfisher scan /path/to/repo --validation-rps 5 # Override specific rule families (kingfisher. prefix optional) kingfisher scan /path/to/repo \ --validation-rps 10 \ --validation-rps-rule github=2 \ --validation-rps-rule pypi=0.5 # Include full validation response bodies (not truncated to 512 characters) # Useful for parsing complete validation responses (e.g., GitHub token metadata) kingfisher scan /path/to/repo --full-validation-response # Exclude specific paths kingfisher scan ./my-project \ --exclude '*.py' \ --exclude '[Tt]ests' # Scan changes in CI pipelines kingfisher scan . \ --since-commit origin/main \ --branch "$CI_BRANCH" ``` # 平台集成 Kingfisher 可以直接扫描多个平台和服务: **版本控制与代码托管:** - GitHub (组织, 用户, 仓库) - GitLab (群组, 用户, 项目) - Azure Repos (组织, 项目) - Bitbucket (工作区, 用户, 仓库) - Gitea (组织, 用户, 仓库) - Hugging Face (模型, 数据集, 空间) **云存储:** - AWS S3 - Google Cloud Storage **容器:** - Docker (来自镜像仓库的镜像) **协作与文档:** - Jira (通过 JQL 查询的 Issues) - Confluence (通过 CQL 查询的页面) - Slack (通过搜索查询的消息) 完整集成文档和身份验证设置请参见 **[docs/INTEGRATIONS.md](docs/INTEGRATIONS.md)**。 ## 快速示例 ``` # Scan AWS S3 bucket kingfisher scan s3 bucket-name --prefix path/ # Scan Google Cloud Storage kingfisher scan gcs bucket-name # Scan Docker image kingfisher scan docker ghcr.io/owasp/wrongsecrets/wrongsecrets-master:latest-master # Scan GitHub organization kingfisher scan github --organization my-org # Scan GitLab group kingfisher scan gitlab --group my-group # Scan Azure Repos kingfisher scan azure --organization my-org # Scan Jira issues KF_JIRA_TOKEN="token" kingfisher scan jira --url https://jira.company.com \ --jql "project = TEST AND status = Open" # Scan Jira issues, comments, and changelog entries KF_JIRA_TOKEN="token" kingfisher scan jira --url https://jira.company.com \ --jql "project = TEST AND status = Open" \ --include-comments \ --include-changelog # Scan Confluence pages KF_CONFLUENCE_TOKEN="token" kingfisher scan confluence --url https://confluence.company.com \ --cql "label = secret" # Scan Slack messages KF_SLACK_TOKEN="xoxp-..." kingfisher scan slack "from:username has:link" ``` **详细的集成说明和身份验证设置,请参见 [docs/INTEGRATIONS.md](docs/INTEGRATIONS.md)。** ## 环境变量 | 变量 | 用途 | | ----------------- | ---------------------------- | | `KF_GITHUB_TOKEN` | GitHub Personal Access Token | | `KF_GITLAB_TOKEN` | GitLab Personal Access Token | | `KF_GITEA_TOKEN` | Gitea Personal Access Token | | `KF_GITEA_USERNAME` | 私有 Gitea 克隆的用户名(与 `KF_GITEA_TOKEN` 一起使用) | | `KF_AZURE_TOKEN` / `KF_AZURE_PAT` | Azure Repos Personal Access Token | | `KF_AZURE_USERNAME` | 用于 Azure Repos PAT 的用户名(未设置时默认为 `pat`) | | `KF_BITBUCKET_TOKEN` | Bitbucket Cloud 工作区 API token 或 Bitbucket Server PAT | | `KF_BITBUCKET_USERNAME` | 可选的 Bitbucket 用户名,用于旧版应用密码或服务器 token | | `KF_BITBUCKET_APP_PASSWORD` | 旧版 Bitbucket 应用密码(2025年9月9日弃用;2026年6月9日禁用) | | `KF_BITBUCKET_OAUTH_TOKEN` | Bitbucket OAuth 或 PAT token | | `KF_HUGGINGFACE_TOKEN` | Hugging Face access token,用于 API 枚举和 git 克隆 | | `KF_HUGGINGFACE_USERNAME` | Hugging Face git 操作的可选用户名(默认为 `hf_user`) | | `KF_JIRA_TOKEN` | Jira API token | | `KF_CONFLUENCE_TOKEN` | Confluence API token | | `KF_SLACK_TOKEN` | Slack API token | | `KF_DOCKER_TOKEN` | Docker 镜像仓库 token (`user:pass` 或 bearer token)。如果未设置,将使用 Docker keyring 中的凭据 | | `KF_AWS_KEY`, `KF_AWS_SECRET`, 和 `KF_AWS_SESSION_TOKEN` | 用于 S3 存储桶扫描的 AWS 凭据。Session token 是可选的,用于临时凭据 | 按命令临时设置它们: ``` KF_GITLAB_TOKEN="glpat-…" kingfisher scan gitlab --group my-group ``` 或者为当前会话导出: ``` export KF_GITLAB_TOKEN="glpat-…" ``` # 高级功能 Kingfisher 为复杂的扫描场景提供了强大的功能。完整的高级文档请参见 **[docs/ADVANCED.md](docs/ADVANCED.md)**。 ## 基线管理 跟踪已知密钥并仅检测新密钥: ``` # Create/update baseline kingfisher scan /path/to/code \ --confidence low \ --manage-baseline \ --baseline-file ./baseline-file.yml # Scan with baseline (suppress known findings) kingfisher scan /path/to/code \ --baseline-file /path/to/baseline-file.yaml ``` ## 过滤与抑制 ``` # Skip known false positives kingfisher scan --skip-regex '(?i)TEST_KEY' path/ kingfisher scan --skip-word dummy path/ # Skip AWS canary tokens kingfisher scan /path/to/code \ --skip-aws-account "171436882533,534261010715" # Inline ignore directives in code # Add `kingfisher:ignore` on the same line or surrounding lines ``` ## CI 流水线扫描 ``` # Scan only changes between branches kingfisher scan . \ --since-commit origin/main \ --branch "$CI_BRANCH" # Scan specific commit range kingfisher scan /tmp/repo --branch feature-1 \ --branch-root-commit $(git -C /tmp/repo merge-base main feature-1) ``` **更多高级功能,包括置信度级别、验证调整和自定义规则,请参见 [docs/ADVANCED.md](docs/ADVANCED.md)。** # 文档 | 文档 | 描述 | |----------|-------------| | [INSTALLATION.md](docs/INSTALLATION.md) | 完整安装指南,包括 git、pre-commit 框架和 Husky 的 pre-commit hooks 设置 | | [INTEGRATIONS.md](docs/INTEGRATIONS.md) | 特定平台扫描指南 (GitHub, GitLab, AWS S3, Docker, Jira, Confluence, Slack 等) | | [ACCESS_MAP.md](docs/ACCESS_MAP.md) | 访问映射:支持的 token 和凭据格式 (GitHub/GitLab/Slack/AWS/GCP/Azure Storage/Postgres/MongoDB) | | [ADVANCED.md](docs/ADVANCED.md) | 高级功能:基线、置信度级别、验证调整、CI 扫描等 | | [RULES.md](docs/RULES.md) | 编写自定义检测规则、模式要求和校验和智能 | | [BASELINE.md](docs/BASELINE.md) | 基线管理,用于跟踪已知密钥和检测新密钥 | | [LIBRARY.md](docs/LIBRARY.md) | 将 Kingfisher 作为 Rust 库用于您自己的应用程序 | | [FINGERPRINT.md](docs/FINGERPRINT.md) | 理解发现指纹和去重 | | [COMPARISON.md](docs/COMPARISON.md) | 基准测试结果和性能比较 | | [PARSING.md](docs/PARSING.md) | 语言感知解析详情 | # 库用法 (**beta 功能**) - Kingfisher 的扫描引擎可用作一组 Rust 库 crate(`kingfisher-core`, `kingfisher-rules`, `kingfisher-scanner`),可以嵌入到其他应用程序中。这使您能够将密钥扫描直接集成到您自己的工具和工作流中。 **完整的文档和示例,请参见 [docs/LIBRARY.md](docs/LIBRARY.md)。** # 退出代码 | 代码 | 含义 | | ---- | ----------------------------- | | 0 | 无发现 | | 200 | 发现结果 | | 205 | 发现已验证结果 | # 沿革与演进 Kingfisher 最初是 [Nosey Parker](https://github.com/praetorian-inc/noseyparker) 的一个内部分支,被用作密钥检测的高性能基础。 从那时起,它已经远远超越了那个起点,引入了实时验证、数百条新规则、额外的扫描目标,以及几乎每个子系统的重大架构变更。 **关键演进领域** - 在规则中直接对检测到的密钥进行**实时验证** - **数百条新的内置规则**和扩展的 YAML 规则模式 - **基线管理**以随着时间的推移抑制已知的发现 - 在 Hyperscan 之上分层 **Tree-sitter 解析**,用于语言感知检测 - **更多扫描目标** (GitLab, Bitbucket, Gitea, Jira, Confluence, Slack, S3, GCS, Docker, Hugging Face 等) - **压缩文件**、**SQLite 数据库**和 **Python 字节码 (.pyc)** 扫描支持 - **新存储模型**(内存 + Bloom filter,取代 SQLite) - 具有 JSON/BSON/SARIF 输出的**统一工作流** - 适用于 Linux、macOS 和 Windows 的**跨平台构建** # 路线图 - 更多规则 - 更多目标 - 如果您想添加功能,请提交 [功能请求](https://github.com/mongodb/kingfisher/issues) 或打开 PR # 许可证 [Apache2 License](LICENSE)
标签:API安全, Confluence安全, DevSecOps, Docker镜像扫描, GitHub安全, GitLab安全, Git泄露扫描, Hyperscan, Jira安全, JSON输出, Redis利用, Rust, S3存储扫描, SIMD加速, Slack安全, 上游代理, 云安全监控, 凭据验证, 可视化界面, 安全助手, 数据泄露, 混合加密, 秘密扫描, 网络流量审计, 蓝队防御, 请求拦截, 通知系统, 通知系统, 静态分析, 高精度检测