docs(compliance-skill): 新增端到端合规检查示例

This commit is contained in:
刘焱 2026-06-15 20:25:44 +08:00
parent f071f456fa
commit ef2aa17c8e
1 changed files with 112 additions and 0 deletions

View File

@ -0,0 +1,112 @@
# 开源合规检查完整工作流示例
**场景**`z2_cc/gitlink-cli` 准备发版前,做一次完整合规自检(许可证 + 依赖 + 敏感信息 + 版权头),产出结构化报告。
## 前置条件
- `gitlink-cli` 已安装并登录(`gitlink-cli auth status` 正常)
- 对目标仓库有读权限
- 批量敏感信息扫描需要本地可 `git clone`(无 clone 条件时见"降级"
## Step 1仓库元信息
```bash
gitlink-cli repo +info --owner z2_cc --repo gitlink-cli --format json
```
提取:`full_name`、`default_branch`、`license`(若平台返回)、`private`。
## Step 2LICENSE 识别
```bash
gitlink-cli api GET /z2_cc/gitlink-cli/raw/master/LICENSE
```
按 LICENSE 关键词识别类型MIT / Apache-2.0 / MulanPSL-2 等)。
## Step 3依赖合规分析
```bash
# Go 项目
gitlink-cli api GET /z2_cc/gitlink-cli/raw/master/go.mod
```
逐依赖判断许可证,对照兼容性矩阵评估与项目主许可证的兼容性。
## Step 4敏感信息扫描批量
```bash
git clone https://www.gitlink.org.cn/z2_cc/gitlink-cli.git /tmp/gitlink-cli-scan
cd /tmp/gitlink-cli-scan
# 高危凭据特征
git grep -nE 'AKIA[0-9A-Z]{16}|ghp_[A-Za-z0-9]{36}|glpat-[A-Za-z0-9\-_]{20}|-----BEGIN .*PRIVATE KEY-----' HEAD
# 配置文件中的硬编码密钥
git grep -niE '(password|passwd|pwd|secret|token|apikey|api_key)\s*[:=]' HEAD -- '*.env*' '*.yml' '*.yaml' '*.json' '*.conf'
# 数据库连接串
git grep -nE '(mysql|postgres|mongodb|redis)://[^:\s]+:[^@\s]+@' HEAD
# 历史残留
git log --all -p -S 'AKIA' --oneline | head
```
> **降级**:无 clone 条件时,仅对少量高危文件逐个取内容扫描:
> `gitlink-cli api GET /z2_cc/gitlink-cli/raw/master/.env` 等,并在报告注明"未做全量扫描"。
## Step 5版权声明采样
```bash
git ls-tree --name-only HEAD | head
git show HEAD:cmd/auth/login.go | head -5 # 采样源文件头部
```
## Step 6汇总报告示例输出
```markdown
## ⚖️ 合规检查报告 — z2_cc/gitlink-cli
📅 检查时间2026-06-15
📋 项目许可证MIT
### 🔴 必须修复
| # | 问题 | 文件 | 建议 |
|---|------|------|------|
### 🟡 建议修复
| # | 问题 | 文件 | 建议 |
|---|------|------|------|
| 1 | 缺少 SECURITY.md | — | 添加安全披露流程 |
### 🔴 敏感信息扫描
| 风险 | 文件 | 行 | 内容特征 | 建议 |
|------|------|----|---------|------|
| 🟢 低 | examples/demo.go | 45 | token: "example_token_for_demo" | 加注释说明是示例 |
### 📊 合规评分
| 维度 | 状态 | 评分 |
|------|:----:|:----:|
| 📜 许可证 | ✅ | ★★★★★ |
| 🏷️ 版权声明 | ⚠️ | ★★★☆☆ |
| 📦 依赖合规 | ✅ | ★★★★★ |
| 🔒 安全策略 | ⚠️ | ★★★☆☆ |
| 🔒 敏感信息管控 | ✅ | ★★★★☆ |
**总体合规评分82/100**
```
## 命令速览
```bash
gitlink-cli repo +info --owner <owner> --repo <repo> --format json
gitlink-cli api GET /:owner/:repo/raw/master/LICENSE
gitlink-cli api GET /:owner/:repo/raw/master/go.mod
git clone https://www.gitlink.org.cn/<owner>/<repo>.git /tmp/<repo>-scan
git grep -nE 'AKIA[0-9A-Z]{16}|ghp_[A-Za-z0-9]{36}|glpat-[A-Za-z0-9\-_]{20}|-----BEGIN .*PRIVATE KEY-----' HEAD
```
## 注意
- 全程只读,不修改远端仓库
- 示例中出现的 `AKIA...EXAMPLE` 等为占位假值,勿当作真实泄露