检测回购中的秘密
此存储库托管一个代理工作流,通过将Microsoft代理框架与GitHub MCP(模型上下文协议)服务器相结合,扫描拉取请求中的机密和PII。每当PR目标出现时,GitHub Actions工作流会自动运行检测器 main,前提是自助跑步者在线。
使用此README作为本地开发、工作流自动化和环境配置的快速入门指南。
需求
- python
3.11 - 诗歌
2.2.1 - Docker桌面或Docker引擎在您的路径上可用
可选但有用:
- 包含演示如何与GitHub MCP服务器交互和构建自定义代理的小型实验。
本地设置
# 1. Install dependencies
poetry install
# 2. Install the Microsoft Agent Framework preview
poetry run pip install --pre agent-framework
# or, if you want Poetry to manage it directly:
poetry run poetry add --allow-prereleases agent-framework
# 3. Start the local workflow/CLI
poetry run start跑步 poetry run start 启动中定义的入口点 pyproject.toml,进而加载中找到的域代理 domain/agents.调整 domain/settings.py 指向你的环境。
GitHub工作流
自动化生活在 .github/workflows/detect_secrets.yml。它是在对以下对象发出拉取请求时触发的 main 并执行您在本地运行的相同秘密扫描代理。因为工作流需要Docker和对开发工具的访问,所以它被配置为 自助跑步者.
自托管运行程序设置
- 将此存储库克隆到将充当运行器的计算机上。
- 在GitHub UI中,导航到
Settings → Actions → Runners → New self-hosted runner. - 选择您的操作系统,按照注册说明进行操作,并分配标签
self-hosted和mhp-workshop-runner. - 启动运行程序,并在需要进行PR扫描时保持其运行。
一旦跑步者上线,每个公关都会 main 将触发工作流程,并自动对PR的任何发现进行评论。
环境变量
复制 .env.example 到 .env (或在CI系统中配置机密)并填充以下变量:
| 变量 | 描述 |
|---|---|
BASE_URL | OpenAI基本URL,例如。 https://api.openai.com/v1. |
OPENAI_API_KEY | 被授权调用所选模型的API密钥。 |
MODEL_ID | 用于代理推理的模型标识符。 |
GITHUB_PAT_TOKEN | 工作流使用的细粒度GitHub PAT。 |
GITHUB_REPO | 存储库名称,例如 owner/repo. |
GITHUB_OWNER | 拥有仓库的GitHub用户名或组织。 |
TARGET_PR_NUMBER | 工作流程应分析的PR编号。通常在CI期间作为输入传递 |
SECRETS_DETECTOR_AGENT_COUNT | 并行代理工作者的数量(整数)。 |
DOCKER_EXEC_PATH | Docker可执行文件的名称或绝对路径(docker 在macOS/Linux上)。 |
GitHub操作库秘密
将这些存储库机密添加到 Settings → Secrets and variables → Actions → Repository secrets 因此工作流可以进行身份验证:
| 机密 | 描述 |
|---|---|
GH_TOKEN | GitHub PAT用于运行秘密检测的存储库。 |
MODEL_ID | 代理应使用的模型的ID。 |
OPENAI_API_KEY | 与所选模型匹配的OpenAI API键。 |
GH_REPOSITORY | 存储库名称(owner/repo)这应该加以分析。 |
GH_REPOSITORY_OWNER | 要扫描的存储库的所有者(用户或组织)。 |
GH_REPOSITORY_PR_NUMBER | 提取目标分析请求号。 |
创建GitHub PAT
- 首选
Profile → Settings → Developer Settings → Personal access tokens → Fine-grained tokens. - 创建仅限于此存储库的令牌。
- 授予以下权限:内容(读/写)、环境(读)、问题。
将令牌存储为 GITHUB_PAT_TOKEN 在你的 .env 文件或CI秘密管理器。
其他资源
- 了解有关GitHub MCP服务器的更多信息:https://github.com/github/github-mcp-server
domain/agents/chunk_exporter.py演示了如何对数据进行分块以进行扫描。samples/包括由检测器产生的示例伪影。
