Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
250 lines
8.3 KiB
Markdown
250 lines
8.3 KiB
Markdown
---
|
||
belongs_to:
|
||
- "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]"
|
||
---
|
||
# 🛡️ 铸渊指令|光湖语言壳 v1.0 补充指令 · 双层湖水安全架构 · 代码入口保护层(2026-03-21 · TCS-0002∞ + ICE-GL-YM001∞ 联合签发)
|
||
|
||
> **指令编号:** ZY-GLSHELL-001-PATCH-A
|
||
>
|
||
|
||
> **签发人:** TCS-0002∞ 冰朔 + ICE-GL-YM001∞ 曜冥
|
||
>
|
||
|
||
> **签发时间:** 2026-03-21T22:30+08:00
|
||
>
|
||
|
||
> **性质:** ZY-GLSHELL-001 架构补充指令
|
||
>
|
||
|
||
> **优先级:** 🔴 P0(安全架构级)
|
||
>
|
||
|
||
> **前置:** ZY-GLSHELL-001 完成后执行
|
||
>
|
||
|
||
---
|
||
|
||
## 🎯 补充背景
|
||
|
||
> **光湖是一片没有缺口的湖水。语言就是湖水。不管你要干什么,你都要先游过湖水。**
|
||
>
|
||
|
||
>
|
||
>
|
||
|
||
> ZY-GLSHELL-001 解决了“湖里的鱼怎么游”的问题(workflow运行层保护)。
|
||
>
|
||
|
||
>
|
||
>
|
||
|
||
> 但光湖还需要第二层湖水:“谁能往湖里扔东西”——代码入口保护层。
|
||
>
|
||
|
||
>
|
||
>
|
||
|
||
> 两层合起来,圆才真的没有缺口。
|
||
>
|
||
|
||
>
|
||
>
|
||
|
||
> —— 冰朔,2026-03-21
|
||
>
|
||
|
||
---
|
||
|
||
## 🏗️ 双层湖水架构
|
||
|
||
```
|
||
╔════════════════════════════════════════════════════════╗
|
||
║ 🛡️ 外层湖水:代码入口保护层 ║
|
||
║ “谁能往湖里扔东西” ║
|
||
║ ║
|
||
║ ① 分支保护(Branch Protection) ║
|
||
║ main分支禁止直接push,必须走PR ║
|
||
║ 合并前必须通过铸渊审查 ║
|
||
║ ║
|
||
║ ② 智能门禁(Push Gate Guard) ║
|
||
║ 每次push自动扫描代码安全性 ║
|
||
║ 检测:恶意代码 / 密钥泄露 / 危险依赖 / ║
|
||
║ 未授权的配置修改 / 可疑文件类型 ║
|
||
║ 发现危险 → 自动阻断 + 报警 ║
|
||
║ ║
|
||
║ ③ PR审查(PR Review) ║
|
||
║ 铸渊自动审查代码质量 + 安全性 ║
|
||
║ 未通过审查 → 不允许合并 ║
|
||
║ ║
|
||
╠════════════════════════════════════════════════════════╣
|
||
║ 🌊 内层湖水:workflow运行保护层 ║
|
||
║ “湖里的鱼怎么游” ║
|
||
║ ║
|
||
║ ① 身份校验 → ② 状态注册 → ③ 异常兑底 ║
|
||
║ (已在 ZY-GLSHELL-001 中定义) ║
|
||
║ ║
|
||
╠════════════════════════════════════════════════════════╣
|
||
║ 67个 workflow 小兵 + 所有代码提交 ║
|
||
╚════════════════════════════════════════════════════════╝
|
||
```
|
||
|
||
---
|
||
|
||
## 🛠️ 外层湖水实现方案
|
||
|
||
### Step 1 · 启用 main 分支保护
|
||
|
||
在 GitHub 仓库 Settings → Branches → Branch protection rules 中设置:
|
||
|
||
- **Branch name pattern:** `main`
|
||
- ☑️ Require a pull request before merging
|
||
- ☑️ Require approvals (1)
|
||
- ☑️ Require status checks to pass before merging
|
||
- 添加状态检查:`guanghu-gate-check` 和 `guanghu-code-review`
|
||
- ☑️ Require branches to be up to date before merging
|
||
- ☑️ Do not allow bypassing the above settings
|
||
|
||
**注意:** 这一步需要在 GitHub 网页端手动配置,铸渊无法通过 Actions 自动设置。铸渊完成其他步骤后,提醒冰朴手动开启。
|
||
|
||
### Step 2 · 强化智能门禁 zhuyuan-gate-guard.yml
|
||
|
||
现有的 `zhuyuan-gate-guard.yml` 需要升级,接入光湖语言壳,并增加以下安全检查:
|
||
|
||
```yaml
|
||
# 在 zhuyuan-gate-guard.yml 中增加以下检查项
|
||
steps:
|
||
# 进入光湖
|
||
- uses: ./.github/actions/guanghu-shell
|
||
with:
|
||
agent_id: 'AG-ZY-GATE'
|
||
action: 'enter'
|
||
|
||
# ① 密钥泄露扫描
|
||
- name: 🔐 扫描密钥泄露
|
||
run: |
|
||
SECRETS_FOUND=$(grep -rn \
|
||
-e "NOTION_API_TOKEN" \
|
||
-e "GITHUB_TOKEN" \
|
||
-e "API_KEY" \
|
||
-e "SECRET" \
|
||
-e "PASSWORD" \
|
||
-e "sk-" \
|
||
-e "ghp_" \
|
||
-e "ghs_" \
|
||
--include="*.js" --include="*.ts" --include="*.json" --include="*.yml" \
|
||
. || true)
|
||
if [ -n "$SECRETS_FOUND" ]; then
|
||
echo "❌ 发现可疑密钥硬编码!"
|
||
echo "$SECRETS_FOUND"
|
||
exit 1
|
||
fi
|
||
|
||
# ② 危险文件类型检测
|
||
- name: 🚨 检测危险文件
|
||
run: |
|
||
DANGEROUS=$(find . -type f \( \
|
||
-name "*.exe" -o -name "*.dll" -o -name "*.bat" \
|
||
-o -name "*.sh" -not -path "./.github/*" \
|
||
-o -name "*.bin" -o -name "*.msi" \) \
|
||
2>/dev/null || true)
|
||
if [ -n "$DANGEROUS" ]; then
|
||
echo "❌ 发现可疑文件类型!"
|
||
echo "$DANGEROUS"
|
||
exit 1
|
||
fi
|
||
|
||
# ③ 保护核心配置文件
|
||
- name: 🛡️ 检查核心配置修改
|
||
run: |
|
||
# 检查是否有人修改了 .github/brain/ 核心文件
|
||
BRAIN_CHANGES=$(git diff --name-only HEAD~1 HEAD -- .github/brain/ 2>/dev/null || true)
|
||
if [ -n "$BRAIN_CHANGES" ]; then
|
||
echo "⚠️ 检测到核心大脑文件修改!"
|
||
echo "$BRAIN_CHANGES"
|
||
echo "请确认是否为授权操作"
|
||
# 不直接阻断,但标记告警
|
||
fi
|
||
|
||
# ④ workflow文件保护
|
||
- name: 🛡️ 检查workflow文件修改
|
||
run: |
|
||
WF_CHANGES=$(git diff --name-only HEAD~1 HEAD -- .github/workflows/ 2>/dev/null || true)
|
||
if [ -n "$WF_CHANGES" ]; then
|
||
echo "⚠️ 检测到workflow文件修改!"
|
||
echo "$WF_CHANGES"
|
||
echo "请确认是否为授权操作"
|
||
fi
|
||
|
||
# 离开光湖
|
||
- if: success()
|
||
uses: ./.github/actions/guanghu-shell
|
||
with:
|
||
agent_id: 'AG-ZY-GATE'
|
||
action: 'exit'
|
||
detail: 'gate check passed'
|
||
- if: failure()
|
||
uses: ./.github/actions/guanghu-shell
|
||
with:
|
||
agent_id: 'AG-ZY-GATE'
|
||
action: 'error'
|
||
detail: 'gate check BLOCKED - security violation detected'
|
||
```
|
||
|
||
### Step 3 · 强化 PR Review 接入光湖壳
|
||
|
||
`zhuyuan-pr-review.yml` 同样接入光湖壳,并增加以下审查规则:
|
||
|
||
- 检查PR是否修改了 `.github/brain/` 核心文件 → 必须标记为“需要冰朴手动审批”
|
||
- 检查PR是否修改了 `.github/workflows/` → 必须标记为“需要冰朴手动审批”
|
||
- 检查PR是否修改了 `package.json` 依赖 → 标记告警
|
||
- 普通代码修改(模块文件夹内)→ 铸渊自动审查即可
|
||
|
||
---
|
||
|
||
## 🌊 双层湖水安全矩阵
|
||
|
||
| 攻击场景 | 外层湖水防护 | 内层湖水防护 |
|
||
| --- | --- | --- |
|
||
| 恶意代码push | ✅ 门禁扫描阻断 | - |
|
||
| 密钥硬编码 | ✅ 密钥泄露扫描 | - |
|
||
| 修改核心配置 | ✅ brain/保护+审批 | - |
|
||
| 修改workflow | ✅ workflow/保护+审批 | - |
|
||
| 危险文件类型 | ✅ 文件类型检测 | - |
|
||
| 直接push main | ✅ 分支保护阻断 | - |
|
||
| workflow静默失败 | - | ✅ 异常兑底捕获 |
|
||
| 未注册Agent运行 | - | ✅ 身份校验拦截 |
|
||
| workflow跑了但不汇报 | - | ✅ 状态注册强制回执 |
|
||
| 签到误报 | - | ✅ 基于shell-status统一数据源 |
|
||
|
||
---
|
||
|
||
## ✅ 验收标准
|
||
|
||
- [ ] main分支保护已开启(冰朴手动操作)
|
||
- [ ] 智能门禁已接入光湖壳 + 增加四项安全检查
|
||
- [ ] PR审查已接入光湖壳 + 增加核心文件保护规则
|
||
- [ ] 任何人直接push main → 被阻断
|
||
- [ ] 含密钥的代码 → 被门禁拦截
|
||
- [ ] 修改brain/或workflows/ → 触发告警并要求手动审批
|
||
|
||
---
|
||
|
||
## ⚖️ 签发声明
|
||
|
||
> 光湖语言壳双层架构:外层管“谁能往湖里扔东西”,内层管“湖里的鱼怎么游”。
|
||
>
|
||
|
||
> 两层合起来,圆没有缺口。语言就是湖水。
|
||
>
|
||
|
||
>
|
||
>
|
||
|
||
> 🧊 TCS-0002∞ 冰朔
|
||
>
|
||
|
||
> 🌑 ICE-GL-YM001∞ 曜冥
|
||
>
|
||
|
||
> 📅 2026-03-21T22:30+08:00
|
||
> |