MrBoodj011/HawkOps

GitHub: MrBoodj011/HawkOps

HawkOps 是一款 GitHub 原生的依赖智能分析与自主修复平台,帮助工程与安全团队在 GitHub 内实现依赖更新治理、PR 审查、零日响应和供应链安全管控。

Stars: 0 | Forks: 0

HawkOps - security-conscious dependency maintenance and governance automation by Cybrense

HawkOps

GitHub 原生的依赖智能分析、Pull Request 审查、自主修复、零日响应以及可信的 ChatOps。

MrBoodj011Cybrense IT ServicesCBS Team 成员 创建并维护。

Validation status Dependency maintenance status Organization health status npm package version OpenSSF Scorecard Node.js 20 or newer Powered by Renovate GPL-3.0-or-later license

快速开始 | 安装指南 | 迁移 | 迁移引擎 | 分发 | 跨仓库安全 | 项目记忆 | 权限 | 多组织测试 | P0 试点 | 威胁模型 | 安全审查 | 运维 | 路线图 | 更新日志 | Cybrense

## 概述 HawkOps 是一个独立维护、自托管的 GitHub App,基于经过验证的 [Renovate](https://github.com/renovatebot/renovate) 引擎构建。它为工程和安全团队提供了一个受控的系统,用于依赖更新、仓库治理、代码感知的 Pull Request 审查、有边界的自主修复、零日响应、入职引导以及运维命令。 它的设计围绕以下四条原则: 1. **仅使用短期凭证。** 每个工作流都会将 GitHub App 私钥换取为具有作用域且在任务结束后过期的安装 token。 2. **在广泛自动化之前确保安全。** 主要版本更新需要审批,全局自动合并被禁用,且写操作具有试运行模式。 3. **未知并不代表健康。** 缺失的安全可见性或仓库数据会被报告为未知,而不是被计为零。 4. **仅在 GitHub 上操作。** 筛选、审批、执行、历史记录和结果都保留在 GitHub 的 issues、Actions、checks 和 pull requests 中。 ## 当前验证 | 信号 | 状态 | | --- | --- | | 自动化测试 | 由锁定的 `Validate` 工作流运行 | | 运行时依赖审计 | 0 个已知漏洞 | | GitHub 原生命令 | apply, retry, cancel, status, explain, preview, doctor, snooze, freeze, remediate 和 rollback | | 仓库 Doctor | 只读的架构、性能、测试、CI、文档、安全性以及有边界的 SBOM 包分析 | | Pull Request 智能分析 | 每个 PR 都会接受 bug、漏洞、破坏性更新、测试、权限、密钥和不安全代码审查;依赖 PR 还将接受 Dependabot + OSV、EPSS、CISA KEV、可达性、Scorecard 和许可证分析,并给出明确的 Safe/Review required/Blocked 结论 | | 项目记忆 | 限定于仓库范围的已合并 PR 历史记录、认可的审查者、编码规范和测试命令,均从 GitHub 实时学习 | | 零日响应 | 组织 SBOM 扫描、漏洞利用优先级分类、限定于仓库范围的遏制措施,以及受审查把关的紧急 PR | | 租户边界 | 明确的组织允许列表、限定作用域的 token 以及派生自租户的加密 | | 事件可靠性 | 由 App 生成的幂等标记、有界的重试、速率限制、熔断机制以及工作流失败警报 | | 自主修复 | 失败检查诊断、已验证的目标或稳定回退选择、有边界的 JavaScript、TypeScript、PHP、Java、C#、Go、Rust、Ruby 和 Kotlin 源码/配置修复、受保护的缺失测试生成、确定性的多生态系统迁移、有界的故障修复、无 shell 的 npm/Composer 适配器、隔离的分支、仓库测试以及受审查把关的 PR | | 生产环境强化 | 确定性的宕机、过期 token、重放、速率限制、部分推出和回退失败模拟,以及一个受保护的次级组织试点工作流 | | 安全验证 | 威胁模型、不可变工作流审计、`fast-check` 属性模糊测试、私有漏洞报告,以及明确的独立渗透测试关卡 | | 发布证据 | SPDX、OpenVEX、SLSA 来源以及无密钥的 GitHub OIDC/Sigstore 证明,已通过 `gh attestation verify` 验证 | | 安装审计 | 权限和仓库范围验证 | | GitHub 事件工作器 | 即时仓库事件处理,配合五分钟的幂等恢复轮询器 | | 跨仓库安全 | 供应商优先的推出阶段、关联的 pull request、依赖循环阻断以及合并后的回归守护 | | 报告导出 | HTML、Markdown、JSON 和 CSV | | 操作员界面 | GitHub issues、Actions、checks 和 pull requests | [查看当前发布版本](https://github.com/MrBoodj011/HawkOps/releases/latest) 或打开公开的 [组织健康 issue](https://github.com/MrBoodj011/HawkOps/issues/1)。 ### 验证边界 - 外部的 `ViperQB/hawk-e2e` 测试夹具已于 2026-07-20 通过了受保护的 [次级组织试点](https://github.com/MrBoodj011/HawkOps/actions/runs/29747581778)。 该运行验证了被拒绝仓库的隔离性以及 `status`、`doctor`、`apply` 和 `retry` 命令路径。 - 签入的基准测试是一个工程基线,并非经过独立验证的对比。 - 不宣称进行过独立的渗透测试。所需的证据和重测关卡记录在 [独立安全审查](docs/SECURITY_REVIEW.md) 中。 ## GitHub 健康报告 每次每日健康运行和依赖 apply 运行都会更新一个核心 issue,并发布一个可下载的报告 artifact。该报告按风险对仓库进行排名,并公开每个得分背后的原因。 GitHub issue 和报告 artifact 包括: - 组织健康和治理得分; - 按风险排名的工程和安全队列; - 失败、待处理和陈旧的依赖 pull request; - 严重、高、中、低级别的 Dependabot 警报数量; - 基于严重程度的修复 SLA 违规情况; - 默认分支保护、CI、CODEOWNERS 和策略覆盖范围; - 核心 Renovate 策略偏差; - SPDX SBOM 覆盖率、包数量、未知许可证以及被阻止的许可证策略违规; - 仓库策略配置、包声誉和漏洞优先级证据; - 仓库检查失败和不可用的安全可见性; - 指向每个仓库 Dependency Dashboard 和源工作流运行的直接链接。 - 每周成功率、中位修复时间证据、被阻止的 PR、回退率以及安全 SLA 合规性。 ## 功能 | 领域 | HawkOps 提供的功能 | | --- | --- | | 依赖维护 | npm、Composer/PHP、Docker、GitHub Actions、Python、Maven、NuGet、lockfile 以及 Renovate 支持的每一个生态系统 | | 迁移修复 | 针对 React/Next/TypeScript、ESLint、PHP/Composer、Python、Docker、GitHub Actions 和数据库 schema 的可信方案,包含确切的文件和操作允许列表 | | 仓库发现 | 自动覆盖活跃的、非复刻(fork)的组织仓库 | | 更新策略 | 限定于仓库范围的严格、均衡或快速配置文件,带有需要审批的主要版本更新 | | 受保护的合并队列 | 仅在 canary/CI 检查通过且审查者批准后进行低风险更新 | | 安全 | OSV/Dependabot 关联、EPSS、CISA KEV、有界的语言感知可达性、语义兼容性、依赖项废弃/接管/仿冒/安装脚本证据、修复 SLA、自动化零日遏制以及明确的未知可见性 | | 治理 | 分支保护、CI、CODEOWNERS、安全策略、许可证、核心策略检查、逐组织配置、保留策略、委托管理员以及隔离测试 | | 供应链 | 直接/传递 SPDX 图谱、无密钥的 GitHub OIDC/Sigstore SLSA 来源和 SBOM 证明、OpenVEX、不可变的 Action 摘要、多生态系统 canary 以及包调研 | | 报告 | 每日健康 issue、每周摘要、已签名的合规性包、HTML、Markdown、JSON、CSV 以及可选的 Slack 警报 | | 入职引导 | 由 bot 创建的 pull request,将仓库连接到策略、无密钥的 canary 以及通过 commit 锁定的实时事件 | | ChatOps | 经过权限检查的 apply、retry、cancel、status、explain、preview、完整的仓库 doctor、snooze、freeze、修复和受保护的回退 | | Pull Request 检查 | 独立的由 App 创建的代码审查和依赖智能检查,带有精确到行的注解、风险、许可证、漏洞、测试、回退指南以及已签名的审计证据 | | 仓库上下文 | 合并的 PR 模式、已批准的审查者、CODEOWNERS、编码规范以及定义在 manifest 中的、限定于每个仓库范围的测试命令 | | 决策 | 一个权威的 Safe、Review required 或 Blocked 结论,带有明确的原因代码以及匹配的 GitHub Check 结论 | | 自动修复 | 高可信度的 JavaScript、TypeScript、PHP、Java、C#、Go、Rust、Ruby 和 Kotlin 编译器建议、配置迁移以及本地 ESLint 修复,仅限于诊断文件,并且只有在仓库测试通过后才被接受 | | 身份验证 | 限定作用域、短期的 GitHub App 安装 token | | 运维 | 安装审计、GitHub 工作流监控、失败警报以及已签名的端到端验证 | | 跨仓库协调 | SBOM 加上明确的契约图、有序的推出活动、前序依赖关卡以及关联的 GitHub pull request | | 合并后保护 | 相同 SHA 的检查、状态和部署监控,配合幂等的、受审查把关的回退 pull request | | 发布 | 自动化版本、changelog、tag 和发布 pull request | | 可扩展性 | 离线 CLI 以及带有能力允许列表、worker 隔离、超时和 JSON 验证的分析器和策略 Plugin SDK | ## 架构 ``` flowchart LR subgraph Entry["Control plane"] S["Scheduled workflows"] M["Manual workflow dispatch"] C["Trusted /hawk command"] end subgraph Controller["HawkOps repository"] T["Short-lived GitHub App token"] R["Renovate engine"] O["Repository onboarding"] H["Health and governance reporter"] end subgraph Targets["Cybrense repositories"] D["Dependency dashboards"] P["Focused update pull requests"] G["Governance and SBOM signals"] end subgraph Outputs["Operational outputs"] I["Central health issue"] A["HTML / MD / JSON / CSV artifact"] N["Actionable Slack alert"] end S --> T M --> T C --> T T --> R T --> O T --> H R --> D R --> P O --> P H --> G G --> I G --> A G --> N ``` ## 工作流图谱 | 工作流 | 触发器 | 目的 | 写入行为 | | --- | --- | --- | --- | | `validate.yml` | 推送和 Pull Request | 验证策略、工作流、测试和运行时依赖 | 无 | | `codeql.yml` | 推送、Pull Request 和定时任务 | 当仓库计划支持 CodeQL 时分析 JavaScript | 仅输出安全结果 | | `scorecard.yml` | 推送、定时任务、保护规则更改或手动 | 发布 OpenSSF Scorecard SARIF 和证据 | 仅输出安全结果 | | `benchmark.yml` | 基准测试更改或手动 | 生成可重现的比较指标 | 仅输出 Artifact | | `onboard.yml` | UTC 时间周一 03:47 或手动 | 开启由 bot 创作的策略引导 PR | 试运行或显式 apply | | `renovate.yml` | UTC 时间周一 04:17 或手动 | 发现仓库并维护依赖 | 试运行或显式 apply | | `health.yml` | UTC 时间每日 06:17 或手动 | 刷新组织健康和治理智能分析 | 仅限核心报告 issue | | `weekly-digest.yml` | UTC 时间周一 07:47 或手动 | 发布每周摘要和已签名的合规包 | 仅限每周报告 issue | | `impact.yml` | 手动 | 根据 SBOM 对跨仓库的依赖影响范围进行排名 | 仅输出 Artifact | | `cross-repo.yml` | 合并事件、定时任务或手动 | 调节供应商优先的更新活动,并仅分派第一个未完成的阶段 | 关联更新 PR;从不自动合并 | | `incident.yml` | 手动(在受保护环境中) | 冻结受影响的包并关闭可信的高风险 PR | 需要明确的生产批准 | | `zero-day.yml` | 每 15 分钟或手动 | 检测组织 SBOM 中的严重安全通报,遏制已确认的,并分派精确版本的紧急修复 | 作用域内的看板控制和受审查把关的 PR 工作流 | | `provenance.yml` | 发布或手动 | 生成 SPDX、OpenVEX、SLSA 和 DSSE 证据 | 仅输出 Artifact | | `merge-queue.yml` | 每 15 分钟或手动 | 合并已批准、通过的、低风险的更新 | 仅限受保护的 squash 合并 | | `remediate.yml` | 可信的 ChatOps 分派 | 收集失败检查的证据,选择稳定的回退版本,运行受保护的 npm/Composer 更改以及确定性的多生态系统迁移修复,重新运行仓库检查,仅在验证通过后才开启受审查的 PR | 从不自动合并 | | `rollback.yml` | 可信的 ChatOps 分派 | 为已合并的依赖更新开启一个受审查的回退 PR | 从不自动合并 | | `post-merge-guardian.yml` | 受信任的依赖合并 | 监控确切的合并 commit,并在发生回归时分派一个受保护的回退 | 仅限回退 PR;从不自动合并 | | `chatops.yml` | 受信任的 issue 评论 | 分派已批准的运维工作流 | 仅限确切的命令 | | `github-events.yml` | 每 5 分钟或手动 | 处理受信任的看板命令并审查每个准备就绪的 pull request | 仅限 App 范围内的写入 | | `secret-scan.yml` | 推送、Pull Request、定时任务或手动 | 使用不可变的扫描器镜像扫描已验证提交的密钥 | 无 | | `security-audit.yml` | Pull Request、推送、每周或手动 | 审计工作流和 App 权限策略,并对不受信任的解析器输入进行模糊测试 | 仅输出证据 Artifact | | `installation-audit.yml` | 每日或手动 | 审计 App 安装和权限 | 报告和警报 | | `e2e-apply.yml` | 手动 | 通过真实的 GitHub 看板评论和工作流验证 status、doctor、apply 和 retry | 仅限测试目标 | | `p0-pilot.yml` | 手动(在受保护环境中) | 模拟生产故障并验证次级组织的安装边界 | 仅限已授权的非生产测试目标 | | `release.yml` | 推送到 `main` | 维护发布 PR 并发布版本 | 发布 PR 或发布版本 | 并发控制可防止重叠的维护、引导、健康或 ChatOps 作业。 ## 快速开始 ### 要求 - Node.js 20 或更高版本 - 用于本地 Renovate 试运行的 Docker - 通过组织所有者或授权维护者身份验证的 GitHub CLI - 创建和安装 GitHub App 的权限 ### 1. 克隆并验证 ``` git clone https://github.com/MrBoodj011/HawkOps.git cd HawkOps npm ci npm run check ``` 通过已发布的包进行本地 CLI 访问: ``` npm install --global cybrense-hawk hawk --help ``` CLI 支持本地检查和操作员命令。组织范围内的自动化仍需安装下文所述的 GitHub App。 ### 2. 注册 GitHub App ``` gh auth login npm run register-app ``` 打开终端中显示的本地 URL,审查请求的权限,创建该 App,并将其安装到所有获批的组织仓库中。 设置向导会将 App ID 和 Client ID 写入 Actions 变量,并将私钥直接发送到 Actions Secrets。该密钥永远不会写入磁盘。 注册和手动设置的完整流程请参见 [docs/SETUP.md](docs/SETUP.md)。 ### 3. 通过只读运行进行验证 ``` gh workflow run onboard.yml --repo MrBoodj011/HawkOps \ -f mode=dry-run gh workflow run renovate.yml --repo MrBoodj011/HawkOps \ -f mode=dry-run \ -f log_level=info gh workflow run health.yml --repo MrBoodj011/HawkOps ``` 在启用 apply 模式之前,检查计划的仓库、依赖分支、pull request 以及生成的报告。 ### 4. 启用正常运行 在干净的试运行之后: ``` gh workflow run onboard.yml --repo MrBoodj011/HawkOps \ -f mode=apply gh workflow run renovate.yml --repo MrBoodj011/HawkOps \ -f mode=apply \ -f log_level=info ``` 定时工作流只有在 GitHub App 变量和 secret 存在时才会使用 apply 模式。 ## GitHub App 权限 该 App 仅请求依赖维护、治理检查、报告和由 bot 创建的 pull request 所需的权限。 完整的已审查权限契约、token 边界和审计流程记录在 [docs/GITHUB_APP_PERMISSIONS.md](docs/GITHUB_APP_PERMISSIONS.md) 中。 ### 仓库权限 | 权限 | 访问级别 | 用途 | | --- | --- | --- | | Administration | 读取 | 检查默认分支保护 | | Actions | 读取和写入 | 分派已批准的 HawkOps 工作流并检查其状态 | | Checks | 读取和写入 | 读取 CI 状态并维护更新检查 | | Commit statuses | 读取和写入 | 读取并发布更新状态 | | Contents | 读取和写入 | 检查 manifest 并创建更新分支 | | Dependabot alerts | 读取 | 安全严重性和 SLA 报告 | | Issues | 读取和写入 | Dependency Dashboard、健康 issue 和 ChatOps 回复 | | Metadata | 读取 | 仓库发现和身份识别 | | Pull requests | 读取和写入 | 开启并维护更新/引导 PR | | Workflows | 读取和写入 | 更新锁定的 workflow 依赖 | ### 组织权限 | 权限 | 访问级别 | 用途 | | --- | --- | --- | | Members | 读取 | 可信的组织成员授权 | 该 App 不需要 webhook 订阅。核心的 **HawkOps GitHub events** 工作流通过 GitHub API 读取受信任的 issue 评论和 pull request,然后为看板命令、由 App 创建的 **HawkOps PR Reviewer** 以及专注于依赖的 **HawkOps PR Check** 提供支持。 ## ChatOps 受信任的组织成员和仓库协作者可以通过此仓库中的 issue 评论来操作维护工具。 | 命令 | 结果 | | --- | --- | | `/hawk status` | 返回核心 GitHub 健康 issue 和工作流链接 | | `/hawk health` | 分派全新的组织健康审计 | | `/hawk onboard dry-run` | 在不写入仓库的情况下检查入职覆盖范围 | | `/hawk apply` | 从仓库 Dependency Dashboard 运行已批准的更新 | | `/hawk retry` | 在定向运行失败后重新运行已批准的更新 | | `/hawk cancel` | 取消排队中或正在运行的定向维护 | | `/hawk status` (在仓库看板上) | 列出该仓库的活跃更新状态 | | `/hawk explain ` | 解释 PR 证据、破坏性更新、废弃情况、维护者历史记录、仿冒、安装脚本、声誉、替代方案和风险 | | `/hawk preview ` | 显示只读的包、图表、注册表智能和现有 PR 预览,而不创建分支 | | `/hawk doctor` | 对架构、性能、测试、CI、文档、安全、权限以及有边界的 SBOM 依赖样本进行评分 | | `/hawk snooze ` | 将一个包暂停 1 到 90 天,具有可审计的到期时间 | | `/hawk unsnooze ` | 移除包的暂停状态,以便下次运行 | | `/hawk freeze` / `/hawk unfreeze` | 停止或恢复该仓库的新依赖分支 | | `/hawk remediate ` (在仓库看板上) | 在隔离分支中诊断失败的检查,在证据支持时保留已验证的目标进行有边界的源码/配置修复,或选择风险较低的 npm/Composer 回退,生成受保护的公共契约测试,应用确定性的迁移修复,重新运行仓库检查,仅在验证后才开启受审查的 PR | | `/hawk rollback ` (在仓库看板上) | 为已合并的 HawkOps 更新开启一个受保护的回退 PR | | `/hawk rollback-last` | 查找最近合并的可信依赖 PR 并开启受保护的回退流程 | | `/hawk help` | 列出接受的命令 | 解析器仅接受已记录的命令语法。在分派工作流之前,它会验证确切的仓库和评论作者的 GitHub 关联身份。 工作流分派和由 App 创建的回复使用独立的限定作用域的 token。 Repository Doctor 的契约、证据来源、误报控制和限制记录在 [`docs/REPOSITORY_DOCTOR.md`](docs/REPOSITORY_DOCTOR.md) 中。 仓库命令由定时 GitHub 事件工作流处理。它们仅在官方开放的 HawkOps Dependency Dashboard 上起作用,需要仓库写入权限,并定位到包含该看板的仓库。勾选您想要的更新,发布 `/hawk apply`,然后按照 HawkOps 的确认进行操作。 确切的旧版 `Cybrense Maintainer Dashboard` issues 在迁移期间仍受支持。定向运行会在处理选定的更新之前,将它们重命名并重新标记为 HawkOps 看板。 管理员还可以运行 **Migrate HawkOps dashboards** 来升级每个旧版看板,而无需启动依赖更新。已勾选的审批会被保留,重复的旧版看板也会被安全地合并。 ## 仓库策略配置 引导程序会添加带有 `balanced` 配置的 `.github/hawk-policy.json`。仓库可以选择 `strict`、`balanced` 或 `fast`,路由常规和安全审查者,并明确禁用其不使用的 Dependency Dashboard。HawkOps 会验证每个字段,并将生成的 Renovate 规则限定范围仅应用于该仓库。 Canary 运行三个推进波次:隔离的依赖解析、仓库 lint/test/build 检查以及生产审查关卡。它能检测 npm、Composer/PHP、Docker、GitHub Actions、Python、Maven 和 NuGet 项目。 npm 项目还会生成 SPDX SBOM,并在 pull request 符合合并队列条件之前强制执行所选的许可证配置。 有关 schema 和配置矩阵,请参见 [docs/POLICY.md](docs/POLICY.md)。 ## 安全智能 每个准备就绪的 pull request 都会收到一个单独的 **HawkOps PR Reviewer** 检查。它会审查有边界的 GitHub diff,查找潜在的 bug、易受攻击或不安全的代码、破坏性的公共外观变更、缺失的测试更改、过度的 workflow 权限以及类似凭证的值。当 GitHub 提供有效的文本补丁时,发现的问题会附加到确切添加的行上。密钥值会被脱敏,不完整或二进制的 diff 永远不会被报告为 `Safe`,并且只有高可信度的严重或高危发现才会阻断该检查。 HawkOps PR Check 会将 Dependabot 警报与 OSV、EPSS、CISA KEV、仓库可达性追踪、语义 API 表面差异、SPDX 策略和 OpenSSF Scorecard 关联起来。缺失的证据保持为 `unknown`;缺失的数据源永远不会被报告为干净的结果。 仓库可以生成受保护的证据文件,用于调用级别的可达性、API/数据库/类型兼容性以及私有的漏洞利用知识。 确切的 schema、可信度规则和信任边界记录在 [docs/INTELLIGENCE.md](docs/INTELLIGENCE.md) 中。 在共享包迁移之前使用 **Cross-repository impact** 工作流,在发生活跃依赖事件时使用受保护的 **HawkOps incident containment** 工作流。这两条路径都不会自动合并更改。 **HawkOps zero-day response** 工作流每 15 分钟运行一次。它向 OSV 查询组织 SBOM 中存在的依赖项,使用 EPSS 和 CISA KEV 证据丰富 CVE 信息,并将已确认的暴露与不完整的证据区分开来。 对于已确认的严重暴露,HawkOps 仅关闭受信任的过时依赖 PR,记录已签名的限定包范围的遏制决策,阻止有漏洞的版本,并在 OSV 发布修复程序时分派确切的已修复版本的紧急维护运行。紧急 PR 仍然需要通过仓库检查和人工审查;HawkOps 绝不会自动合并它们。 设置组织 Actions 变量 `HAWK_ZERO_DAY_AUTO_CONTAIN=false` 以保持定时运行处于仅分析模式。`HAWK_KILL_SWITCH=true` 可完全停止该工作流。手动运行默认为 `dry-run`,每次运行都会将其 JSON 和 Markdown 证据保留在 GitHub Actions 中 90 天。 ## 本地 CLI 和 Plugin SDK HawkOps 可以在推送之前检查可移植的证据: ``` hawk scan --sbom sbom.spdx.json --offline hawk impact --input impact.json hawk research --input package-metadata.json hawk verify --envelope hawk-provenance.dsse.json \ --key security/hawk-report-signing-public-key.pub ``` 在线扫描会查询 OSV。Plugin SDK 支持经过审查的进程内插件,以及具有明确能力、沙箱化的社区分析器或策略插件。 请阅读 [docs/PLUGIN_SDK.md](docs/PLUGIN_SDK.md)、[组织治理模型](docs/GOVERNANCE.md) 和[公开基准测试规则](docs/BENCHMARK.md)。 ## 报告和通知 每次健康运行都会以多种格式存储相同的审计结果: | 输出 | 最佳用途 | | --- | --- | | 核心 GitHub issue | 每日工程和安全分类处理 | | Actions 作业摘要 | 在工作流运行内快速审查 | | `index.html` | 可下载的响应式报告 artifact | | `health.md` | 便携式人类可读报告 | | `health.json` | 集成和程序化处理 | | `health.csv` | 电子表格分析和审计 | | `compliance.json` | 依赖项、许可证、SBOM、CodeQL、密钥扫描和 canary 覆盖率 | | `compliance-manifest.json` + `.sig` | 针对包中每个文件的 Ed25519 签名哈希 | 使用已提交的公钥在本地验证下载的包: ``` REPORT_DIRECTORY=/path/to/unpacked-report npm run verify-report ``` 验证器会拒绝无效的签名、被修改或缺失的文件、不安全的 manifest 路径、重复条目以及签名的多余文件。 HawkOps 还在 PR 评估和敏感的 ChatOps 决策中嵌入了一个经过 RS256 签名的审计标记。将 GitHub 评论保存为文本,并使用以下命令进行验证: ``` npm run verify-audit -- /path/to/hawk-comment.md ``` 添加 `HAWK_SLACK_WEBHOOK` 作为可选的 Actions secret 以启用 Slack。 健康的运行保持静默。仅针对高风险仓库、失败的检查、严重/高危警报、SLA 违规或检查错误发送通知。 发布档案由 GitHub Actions OIDC 通过 Sigstore 进行无密钥签名。 消费者使用以下命令验证源仓库和工作流: ``` gh attestation verify hawk-release-evidence.tar.gz \ --repo MrBoodj011/HawkOps ``` HawkOps 没有公共的 Web 看板、公共事件接收器、健康检查端点或外部 runtime。GitHub 仍然是审批、运行历史、报告、警报、命令和 pull request 的事实来源。 ## 运维策略 | 策略 | 默认值 | | --- | --- | | 新包稳定观察期 | 3 天 | | 主要更新 | 需要Dependency Dashboard审批 | | 常规更新分组 | 补丁、次要版本、锁定版本和摘要 | | 全局自动合并 | 禁用 | | Pull request 创建 | 仅在依赖分支检查成功后 | | 受保护的合并队列 | `risk:low` + 检查通过 + 干净的合并 + 已批准的审查 | | 安全/高危更新 | 永远不进入自动合并队列 | | Pull request 陈旧阈值 | 14 天 | | 严重安全 SLA | 24 小时 | | 高危安全 SLA | 72 小时 | | 中危安全 SLA | 7 天 | | 低危安全 SLA | 30 天 | | Slack 行为 | 仅限可操作的运行 | 可重用的依赖策略位于 [`default.json`](default.json) 中。 ## 仓库结构 ``` . |-- .github/ | |-- repository-settings.json | `-- workflows/ | |-- chatops.yml | |-- codeql.yml | |-- e2e-apply.yml | |-- failure-alerts.yml | |-- github-events.yml | |-- health.yml | |-- installation-audit.yml | |-- release.yml | |-- renovate.yml | `-- validate.yml |-- docs/ |-- scripts/ |-- config.js |-- default.json `-- package.json ``` ## 本地开发 运行完整的验证套件: ``` npm ci npm run check npm audit --omit=dev --audit-level=high ``` 运行只读的 Renovate 模拟: ``` RENOVATE_TOKEN=github_token npm run dry-run ``` 将模拟范围限定到一个或多个仓库: ``` RENOVATE_TOKEN=github_token \ RENOVATE_REPOSITORIES=Cybrense-IT-Services/CBS_Mail \ npm run dry-run ``` token 通过环境变量继承。它不会被写入磁盘,也不会包含在 Docker 命令行中。 ## 为其他组织安装 HawkOps 支持限定范围的组织安装。组织所有者安装公开的 GitHub App,然后由组织配置其 GitHub Actions 变量、secret、仓库范围以及允许的组织名称。每次运行都会为选定的组织创建一个短期的 token 以及一个单独的核心报告 token。 在启用写入操作之前: 1. 审查 App 权限请求和仓库选择; 2. 将组织添加到工作流允许列表中; 3. 运行安装审计; 4. 以 dry-run 模式运行入职引导和 Renovate; 5. 针对测试看板运行 GitHub 原生的 `/hawk apply` E2E。 请勿重复使用 Cybrense 凭证、App ID、安装 ID、Slack webhook 或私钥。 ## 安全模型 - GitHub App 私钥仅存在于 Actions Secrets 中。 - 安装 token 是短期的,并在每次作业后被撤销。 - 工作流声明了严格的默认权限。 - GitHub Actions 被锁定为不可变的 commit 摘要。 - 仓库设置将 Actions 限制为经过审查的发布者,并在 GitHub 计划支持的地方强制执行 SHA 锁定。 - 写入工作流支持 dry-run 或显式 apply 模式。 - 主要依赖更新需要人工批准。 - 全局自动合并被禁用。 - 依赖分支在创建 PR 之前在隔离的、无密钥的 canary 中运行。 - 受保护的合并要求具备低风险标签、通过的检查、干净的 head SHA,以及针对该确切 head commit 的批准审查;安全、高危和过期批准的更新将被拒绝。 - ChatOps 使用确切的命令和受信任的作者关联。 - HawkOps 不暴露任何公共接收器或健康路由;命令保留在 GitHub 内部。 - 目标检查和核心报告发布使用不同的 token。 - 不可用的安全可见性被报告为 `N/A`,绝不会报告为零。 - 每个健康和每周合规 artifact 都使用 Ed25519 签名,并在上传前进行验证。 - 凭证和权限更改需要维护者审查。 请通过仓库的私有 **Security advisory** 流程报告漏洞。对于凭证、token 处理、仓库写入权限或依赖执行漏洞,请勿开启公开的 issue。 在报告之前请阅读 [SECURITY.md](SECURITY.md)。 ## 路线图 当前平台包括仅限 GitHub 的操作、多组织隔离、可审计的命令和已签名的证明、感知可达性的漏洞智能、语义兼容性检查、跨仓库影响、GitHub 原生事件幂等性、包调研、事件遏制、离线 CLI、受限的 Plugin SDK、无密钥发布证明、版本化的基准语料库、GitHub 原生性能指标以及跨组织治理。计划中的工作侧重于原生语言的证据生成器、独立执行的基准数据集以及经过审查的外部集成。 只有经过测试并在线上验证过的功能才会被记录为可用。有关交付规则和完整路线图,请参见 [docs/ROADMAP.md](docs/ROADMAP.md)。 ## 许可证和致谢 HawkOps 基于 [GPL-3.0-or-later](LICENSE) 获得许可。Renovate 仍是一个独立的上游项目,受其自身的许可证和项目条款管辖。 由 [Cybrense IT Services](https://cybrense.com/) **CBS Team** 的成员 [MrBoodj011](https://github.com/MrBoodj011) 创建并维护。 HawkOps 使用 [Renovate](https://github.com/renovatebot/renovate)、[GitHub Apps](https://docs.github.com/en/apps) 和 [GitHub Actions](https://github.com/features/actions) 构建。

HawkOps by Cybrense IT Services

标签:MITM代理, 暗色界面, 自定义脚本