Files
awoooi/docs/security/GITEA-READONLY-INVENTORY-APPROVAL-PACKAGE.md

4.0 KiB
Raw Blame History

Gitea Read-only 全量 Inventory Approval Package

項目 內容
日期 2026-05-12
狀態 草案,等待人工批准
來源事件 gitea_repo_inventory_v1
Approval event docs/security/gitea-readonly-inventory-approval.snapshot.json
Redaction checklist docs/security/GITEA-ADMIN-EXPORT-REDACTION-CHECKLIST.md
目的 補齊 Gitea private/internal server-side repo list
原則 低摩擦、只讀、只盤 metadata、不保存 token value、不做同步或主控切換

0. 為什麼需要 approval

目前已取得 public-only Gitea repo evidence

  1. users/wooo/repos 可見 wooo/awoooiwooo/ewoooc
  2. orgs/wooo/repos 未認證查詢回 404已保留 blocked evidence。
  3. 本機 remote inventory 顯示還有 clawbot-v5wooo-aiops、110 internal / GitLab 類 remote 等來源。

因此 public-only evidence 不足以宣告「Gitea 所有專案版本」已盤完。下一步需要統帥或 repo owner 批准其中一條路徑:

  1. 提供 Gitea read-only token僅用環境變數執行一次 inventory。
  2. 提供 Gitea 管理介面匯出的 redacted repo list JSON。

此 approval package 的目的不是提高日常開發門檻,而是只保護「會接觸 token 或管理匯出」這一個邊界。取得全量清單後,後續仍先進入 evidence / matrix / draft plan不直接進入同步或阻擋。

1. 申請批准的動作

動作 風險 批准後允許 仍然禁止
run_gitea_readonly_inventory MEDIUM 使用 read-only token 呼叫 Gitea API 盤 repo metadata 寫入 Gitea、保存 token、同步 refs、建 repo
import_gitea_admin_export MEDIUM 匯入 redacted JSON產生 gitea_repo_inventory_v1.status=ok evidence 匯入 secret value、webhook secret、deploy key private key

2. Token 使用邊界

  1. Token 只允許放在 GITEA_READONLY_TOKEN 環境變數。
  2. Token 不得寫入 .env、shell history、文件、LOGBOOK、issue、PR、snapshot。
  3. 工具輸出只保存 token_present=true|false
  4. Token 權限必須只讀,不能有 repo delete、push、admin、secret read/write 權限。
  5. 執行後建議撤銷或輪替 token。

3. 批准後指令

GITEA_READONLY_TOKEN='<read-only-token>' \
python3 scripts/security/gitea-repo-inventory.py \
  --base-url http://192.168.0.110:3001 \
  --org wooo \
  --scope user \
  --github-owner owenhytsai \
  --output-json docs/security/gitea-repo-inventory.snapshot.json \
  --output-md docs/security/GITEA-REPO-INVENTORY-SNAPSHOT.md

替代路徑:

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

4. 驗收標準

Gate 必須結果
JSON 可解析 docs/security/gitea-repo-inventory.snapshot.json 通過 parse
Schema 欄位 schema_version=gitea_repo_inventory_v1
全量狀態 status=ok
可見範圍 visibility_scope=authenticatedadmin_export
敏感資訊 不含 token、password、secret value、private key
Redaction checklist docs/security/GITEA-ADMIN-EXPORT-REDACTION-CHECKLIST.md 已通過
後續動作 只更新 matrix / decision table不同步 refs

5. 批准前不得做

  1. 不要求使用者在對話中貼 token value。
  2. 不把 token 寫入任何檔案。
  3. 不用有寫入權限的 token。
  4. 不建立 GitHub repo。
  5. 不修改 GitHub repo visibility。
  6. 不 push、fetch mirror、sync refs。
  7. 不切 GitHub primary。

6. AwoooP 消費方式

AwoooP 可以把本 package mirror 成 approval candidate但只能顯示

  1. requested action。
  2. risk。
  3. required reviewers。
  4. evidence refs。
  5. blocked_until_approved。

AwoooP 不得直接要求、保存或傳遞 token value。