# Kingfisher:具备实时验证功能的开源密钥扫描器
[](https://opensource.org/licenses/Apache-2.0)
[](https://github.com/mongodb/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 |
Local Git |
GitHub |
GitLab |
Azure Repos |
Bitbucket |
Gitea |
Hugging Face |
| Docker | Jira | Confluence | Slack | AWS S3 | Google Cloud |
|:------:|:----:|:-----------:|:-----:|:------:|:---:|
|
Docker |
Jira |
Confluence |
Slack |
AWS S3 |
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 scan /path/to/scan --view-report
```
注意:回放已为演示目的放慢

## 报告查看器演示
探索 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
```

**点击查看视频**
[](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` 
- **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)