用途:审计并修复 GitHub 仓库的安全配置,适合需要检查或提升仓库安全态势、强化分支保护与合并策略的场景。
主要能力:通过 scripts/harden.sh 按类别检查仓库设置。检查类别与开关包括 repo(自动删除分支、建议 PR 更新、wiki/projects)、branches(分支保护:要求 PR、评审、code owners、检查)、security(Dependabot、密钥扫描、推送保护)、merge(合并策略,默认 rebase)、actions(Actions 权限、工作流令牌、PR 批准限制)、access(CODEOWNERS、部署密钥、外部协作者,仅报告)。使用 --checks all(默认)运行全部。
关键选项:--merge-strategy rebase|squash|any(默认 rebase)、--min-reviewers N(默认 1)、--branch BRANCH(默认仓库默认分支)、--format json|text(默认 json)。
使用方式:前置条件为 gh CLI 已安装并通过 gh auth login 认证、安装 jq、用户对目标仓库有管理员权限;脚本会检查这三项,缺失时报错退出。流程为:先审计 bash scripts/harden.sh audit --repo OWNER/REPO;向用户汇总结果,按 critical > high > medium > low 分组标出 fail 与 warn;确认要修复的问题(可用 --dry-run 预览 bash scripts/harden.sh fix --repo OWNER/REPO --dry-run);确认后执行 bash scripts/harden.sh fix --repo OWNER/REPO;最后再次审计验证。多仓库可用 gh repo list ORGNAME --json nameWithOwner -q '.[].nameWithOwner' 循环审计。
结果解读:状态含 pass(符合策略)、fail(不符合且脚本可修复)、warn(需人工复核,如部署密钥、wiki)、skip(不适用或权限不足,如私有仓库的 GHAS 功能)。
限制:GHAS 的密钥扫描推送保护在私有仓库需要 GitHub Advanced Security,脚本会跳过;部分设置(Actions 策略、必需工作流)可能被组织级锁定,无法按仓库修改;CODEOWNERS 仅检查文件是否存在而不校验内容;access 检查中的部署密钥与外部协作者仅报告不修改,需人工判断。