Files
awoooi/docs/security/GITEA-ADMIN-EXPORT-REDACTION-CHECKLIST.md

2.7 KiB
Raw Blame History

Gitea 管理匯出 Redaction Checklist

項目 內容
日期 2026-05-12
狀態 第一版,給 gitea_repo_inventory_v1 管理匯入使用
搭配文件 docs/security/GITEA-SERVER-SIDE-INVENTORY-RUNBOOK.md
Approval docs/security/GITEA-READONLY-INVENTORY-APPROVAL-PACKAGE.md

0. 允許保留的欄位

欄位 用途
full_name Gitea repo identity例如 wooo/awoooi
name repo short name
owner.login owner / org / user 名稱
private 判斷 visibility migration
archived 判斷封存策略
empty 判斷是否需要搬遷 refs
default_branch 後續 branch/tag diff 起點
clone_url 只允許無帳密 URL工具會再次 redacted
ssh_url 只允許 public repo path不含 private key

1. 絕對不能出現在匯出 JSON

  1. API token value。
  2. Personal access token。
  3. Webhook secret value。
  4. Repository secret value。
  5. Deploy key private key。
  6. SSH private key。
  7. Cookie、session、CSRF token。
  8. 帶 username/password/token 的 remote URL。
  9. CI/CD runner registration token。

2. 最小 JSON 模板

[
  {
    "full_name": "wooo/example",
    "name": "example",
    "owner": {
      "login": "wooo"
    },
    "private": true,
    "archived": false,
    "empty": false,
    "default_branch": "main",
    "clone_url": "http://192.168.0.110:3001/wooo/example.git",
    "ssh_url": "git@192.168.0.110:wooo/example.git"
  }
]

3. 匯入前人工檢查

Gate 檢查方式 必須結果
無 token 搜尋 token / authorization / provider token prefix 等字樣 不得出現 value
無帳密 URL 搜尋 URL 中是否含帳號、密碼、token 與 at-sign 組合 不得出現
無 private key 搜尋 BEGIN .* PRIVATE KEY 不得出現
repo 欄位完整 檢查 full_nameowner.login + name 每個 repo 可識別
visibility 可判斷 檢查 private 每個 repo 有布林值

4. 匯入指令

python3 scripts/security/gitea-repo-inventory.py \
  --base-url http://192.168.0.110:3001 \
  --org wooo \
  --github-owner owenhytsai \
  --input-json /path/to/redacted-gitea-repos.json \
  --output-json docs/security/gitea-repo-inventory.snapshot.json \
  --output-md docs/security/GITEA-REPO-INVENTORY-SNAPSHOT.md

5. 匯入後驗收

  1. gitea_repo_inventory_v1.status=ok
  2. visibility_scope=admin_export
  3. repo_count 大於或等於 public-only repo count。
  4. repos[].clone_url_redactedrepos[].ssh_url_redacted 不含帳密。
  5. 下一步仍只更新 migration matrix不同步 refs、不建 repo、不切 primary。