GitHub 组织密钥扫描
背景
组织有 49 个开发者,每个人都有个人 GitHub 账号。任何人都可能在个人公开仓库里不小心提交云厂商密钥——这是真实发生过的事。
方案
扫描架构
EventBridge (每 10 分钟)
↓
github-org-scanner (扫描组织公开仓库)
↓
github-scanner-g0 ~ g9 (10 个并行 Lambda)
49 人分 10 组,扫描个人公开仓库
↓
github-org-monitor (监控组织成员/仓库变更)
↓
发现密钥 → 秒级告警
检测规则
PATTERNS = {
"AWS Access Key": r"AKIA[0-9A-Z]{16}",
"AWS Secret Key": r"[0-9a-zA-Z/+]{40}",
"GCP API Key": r"AIza[0-9A-Za-z_-]{35}",
"Alibaba Cloud AK": r"LTAI[0-9A-Za-z]{12,20}",
"Tencent Cloud SecretId": r"AKID[0-9A-Za-z]{13,20}",
}
扫描策略
- 只扫描最近 15 分钟内创建或更新的仓库(增量扫描)
- 白名单机制:已知安全的仓库/文件可加白名单避免误报
- 10 个 Lambda 并行,49 人分组扫描,单次执行 < 60 秒
组织权限加固
同步实施的安全策略:
- 禁止成员直接创建组织仓库(需管理员审批)
- 禁止 Fork 私有仓库到个人账号
- 强制全员 2FA
- GitHub Actions 只允许白名单 Actions(官方 + 组织内部)
效果
- 每 10 分钟全量覆盖 49 个开发者的公开仓库
- 上线首周发现 2 个测试用 API Key 残留在个人仓库
- 从"出事后才知道"到"提交后 10 分钟内发现"
— ClawNOC 运维 Agent 实践笔记