通过ClickHouse查询GitHub事件数据,用于供应链调查、行为者画像和异常检测。适用于调查基于GitHub的攻击,...
点击 House GitHub 法证公司 100+亿 GitHub 事件进行安全调查是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
对 100 亿以上的 GitHub 事件进行查询,支持安全调查。
作者:Rufio @ Permiso Security
使用场景:在 Trivy 供应链攻击事件调查期间构建(2026 年 3 月)
curl -s "https://play.clickhouse.com/?user=play" --data "SELECT ... FROM github_events WHERE ... FORMAT PrettyCompact"
https://play.clickhouse.com/?user=playgithub_events| 字段 | 类型 | 用途 |
|---|---|---|
created_at |
DateTime | 事件时间戳 |
event_type |
Enum | PushEvent、CreateEvent、DeleteEvent、ReleaseEvent 等 |
actor_login |
String | GitHub 用户名 |
repo_name |
String | 格式为 owner/repo |
ref |
String | 分支或标签名称(例如:refs/heads/main、0.33.0) |
ref_type |
Enum | branch、tag、repository、none |
action |
Enum | published、created、opened、closed 等 |
完整 Schema(共 29 个字段)请参见:references/schema.md
SELECT created_at, event_type, repo_name, ref, action FROM github_events WHERE actor_login = 'TARGET_ACCOUNT' AND created_at >= '2026-03-01' ORDER BY created_at
SELECT created_at, event_type, actor_login, ref, ref_type, action FROM github_events WHERE repo_name = 'owner/repo' AND created_at >= 'START_TIME' AND created_at <= 'END_TIME' ORDER BY created_at
SELECT repo_name,
countIf(created_at < 'ATTACK_DATE') as before,
countIf(created_at >= 'ATTACK_DATE') as during
FROM github_events
WHERE actor_login = 'SUSPECT_ACCOUNT'
AND created_at >= 'LOOKBACK_START'
GROUP BY repo_name
ORDER BY during DESC
SELECT created_at, event_type, actor_login, ref, ref_type
FROM github_events
WHERE repo_name = 'owner/repo'
AND event_type IN ('CreateEvent', 'DeleteEvent', 'ReleaseEvent')
AND ref_type = 'tag'
ORDER BY created_at
SELECT toStartOfMonth(created_at) as month,
count() as events,
uniqExact(repo_name) as unique_repos
FROM github_events
WHERE actor_login = 'TARGET_ACCOUNT'
GROUP BY month
ORDER BY month
SELECT created_at, event_type, actor_login, repo_name, ref FROM github_events WHERE repo_name LIKE 'orgname/%' AND created_at >= 'START_TIME' ORDER BY created_at
SELECT actor_login, min(created_at) as first_ever, count() as events FROM github_events WHERE repo_name LIKE 'orgname/%' GROUP BY actor_login HAVING first_ever >= 'INCIDENT_START' AND first_ever <= 'INCIDENT_END' ORDER BY first_ever
SELECT toStartOfHour(created_at) as hour,
actor_login,
count() as events,
groupArray(distinct repo_name) as repos,
groupArray(distinct event_type) as types
FROM github_events
WHERE repo_name LIKE 'orgname/%'
AND created_at >= 'START_TIME'
GROUP BY hour, actor_login
ORDER BY hour
| 事件类型 | 含义 |
|---|---|
PushEvent |
向分支推送代码 |
CreateEvent |
创建分支 / 标签 / 仓库 |
DeleteEvent |
删除分支 / 标签 |
ReleaseEvent |
发布或编辑 Release |
PullRequestEvent |
PR 被打开 / 关闭 / 合并 |
IssueCommentEvent |
在 Issue 中发表评论 |
ForkEvent |
仓库被 Fork |
WatchEvent |
仓库被 Star |
FORMAT PrettyCompact 适用于表格展示;FORMAT TabSeparated 适用于程序解析--data 而非 -dYYYY-MM-DD HH:MM:SSactor_login NOT IN ('github-actions[bot]', 'dependabot[bot]') 进行排除play.clickhouse.com