4.0 KiB
4.0 KiB
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:
users/wooo/repos可見wooo/awoooi、wooo/ewoooc。orgs/wooo/repos未認證查詢回 404,已保留 blocked evidence。- 本機 remote inventory 顯示還有
clawbot-v5、wooo-aiops、110 internal / GitLab 類 remote 等來源。
因此 public-only evidence 不足以宣告「Gitea 所有專案版本」已盤完。下一步需要統帥或 repo owner 批准其中一條路徑:
- 提供 Gitea read-only token,僅用環境變數執行一次 inventory。
- 提供 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 使用邊界
- Token 只允許放在
GITEA_READONLY_TOKEN環境變數。 - Token 不得寫入
.env、shell history、文件、LOGBOOK、issue、PR、snapshot。 - 工具輸出只保存
token_present=true|false。 - Token 權限必須只讀,不能有 repo delete、push、admin、secret read/write 權限。
- 執行後建議撤銷或輪替 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=authenticated 或 admin_export |
| 敏感資訊 | 不含 token、password、secret value、private key |
| Redaction checklist | docs/security/GITEA-ADMIN-EXPORT-REDACTION-CHECKLIST.md 已通過 |
| 後續動作 | 只更新 matrix / decision table,不同步 refs |
5. 批准前不得做
- 不要求使用者在對話中貼 token value。
- 不把 token 寫入任何檔案。
- 不用有寫入權限的 token。
- 不建立 GitHub repo。
- 不修改 GitHub repo visibility。
- 不 push、fetch mirror、sync refs。
- 不切 GitHub primary。
6. AwoooP 消費方式
AwoooP 可以把本 package mirror 成 approval candidate,但只能顯示:
- requested action。
- risk。
- required reviewers。
- evidence refs。
- blocked_until_approved。
AwoooP 不得直接要求、保存或傳遞 token value。