5.8 KiB
Gitea 認證清冊匯入驗收契約
| 項目 | 內容 |
|---|---|
| 日期 | 2026-05-17 |
| 狀態 | 草案,等待脫敏清冊 payload |
| 資料契約 | docs/schemas/gitea_authenticated_inventory_import_acceptance_v1.schema.json |
| 快照 | docs/security/gitea-authenticated-inventory-import-acceptance.snapshot.json |
| 來源契約 | gitea_repo_inventory_v1 |
| 上游請求 | gitea_authenticated_inventory_export_request_v1 |
| 覆蓋 Attestation | docs/security/GITEA-INVENTORY-COVERAGE-ATTESTATION.md |
| Attestation response 收件包 | docs/security/GITEA-INVENTORY-OWNER-ATTESTATION-RESPONSE.md |
| 模式 | redacted_payload_acceptance_only |
| 執行面授權 | false |
0. 核心結論
S4.6 定義「收到 owner 或 Gitea 管理者提供的脫敏清冊後,怎麼驗收、怎麼拒收、怎麼隔離」。
這不是實際匯入,也不是宣告 Gitea inventory 完成。它只把未來可接受的 payload 形狀、必要欄位、拒收規則、隔離 lane 與允許輸出先固定下來,避免 owner 提供資料時把 token、DB dump、git object 或 repo 操作要求混進來。
S4.7 已補 owner coverage attestation,S4.9 已補 owner response request packet、template status ledger、audit event templates、redaction examples、display sections、collection checks 與收件包:即使 payload 通過 S4.6,也仍需 owner 依 S4.9 request packet 回覆 public-only / local remote gap、org/user endpoint、110 internal adjacent source、canonical owner 與 legacy/inaccessible disposition,且 template status ledger、audit event templates、redaction examples、display sections、collection checks 與 response 驗收通過後,才可把 blocker 往 primary readiness 下一關推進;audit event templates 目前只允許顯示 0 emitted 的脫敏 metadata 模板,redaction examples 只供填寫參考,display sections 只供只讀 UI 顯示,不代表 production ingestion。
1. 驗收摘要
| 指標 | 值 |
|---|---|
| 目標契約 | gitea_repo_inventory_v1.status=ok |
| 目前 payload 狀態 | waiting_redacted_payload |
| 可接受 visibility scope | authenticated / admin_export |
| 最低 repo count | 2 |
| 本機可見 Gitea unique repos | 4 |
| 需要解釋的缺口 | 3 |
| 已收到 payload | 0 |
| 已接受 payload | 0 |
| 已拒收 payload | 0 |
| 驗收檢查 | 10 |
| 拒收規則 | 10 |
| 敏感 payload 必須隔離 | true |
| 允許收集 token value | false |
| 允許 DB dump / git object | false |
| 允許 repo write / refs sync | false |
| 授權切換 GitHub primary | false |
| S4.7 owner attestation items | 5 |
2. 可接受 Payload 形狀
必須具備 top-level 欄位:
schema_version。base_url。org。visibility_scope。token_present。status。repo_count。repos。coverage_gap_explanation。redaction_attestation。
每筆 repo 必須具備:
full_name。name。owner.login。private。archived。empty。default_branch。clone_url_redacted。ssh_url_redacted。github_repo_candidate。
3. 必須拒收
- token value、PAT、cookie、session、CSRF token 或 partial token。
- webhook secret、repository secret value、runner registration token。
- deploy key private key 或任何 private key material。
- Gitea DB dump、完整 git object pack、裸 repo tarball。
- write-capable token、admin token 或 secret scope token。
- 建立、刪除、封存或修改 Gitea repo 的要求。
- 建立 GitHub repo、修改 visibility、sync refs、delete refs、force push 或切 GitHub primary 的要求。
- 未解釋未認證公開範圍 2 repos 與本機 Gitea 4 unique repos 差異的 payload。
- 未說明 110 內部相鄰來源 scope 的 payload。
- 任何不確定是否含敏感值的 payload。
4. 隔離 Lane
| 條件 | 隔離 lane |
|---|---|
| 出現 token、password、cookie、session、private key、webhook secret 或 runner registration token | sensitive_value_payload_quarantine |
| 出現 Gitea DB dump、git object pack、裸 repo tarball 或完整 artifact | oversized_or_wrong_artifact_quarantine |
| 欄位不足、repo_count 不一致或 coverage gap 未解釋 | schema_or_evidence_gap_quarantine |
| payload 夾帶 repo 建立、refs sync、primary switch 或 workflow / secret 修改要求 | execution_request_quarantine |
5. 允許輸出
- 產出或更新脫敏後的
gitea_repo_inventory_v1.status=oksnapshot。 - 更新
SOURCE-CONTROL-MIGRATION-MATRIX.md與 source-control decision table。 - 更新
source_control_primary_readiness_gate_v1的 Gitea inventory blocker 狀態。 - 更新
security_mirror_status_rollup_v1與docs/LOGBOOK.md。 - 對缺口建立人工 owner review lane,不建立 execution action。
6. AwoooP 可做
- 顯示 S4.6 匯入驗收格式。
- 顯示 payload 驗收 / 拒收 / 隔離規則。
- 在 owner 提供 payload 後,只做 schema / redaction / coverage gap 檢查。
- 將敏感或不完整 payload 送進隔離 lane。
- 將通過驗收的脫敏 metadata 顯示為等待人工 review 的 evidence。
7. AwoooP 不可做
- 不要求使用者貼 token、secret、private key、cookie、session 或 DB dump。
- 不把 payload 驗收成功當成 GitHub primary 已批准。
- 不建立 GitHub repo。
- 不修改 Gitea repo。
- 不 sync refs。
- 不新增執行按鈕。
8. 階段定位
S4.6 補的是 S4.5 後面的「安全收件規格」。它讓下一個 owner export / admin export 有清楚門檻,但仍然停在框架期。
真正讓 gitea_repo_inventory_v1.status=ok,必須等到脫敏 payload 實際產生、通過驗收、經人工 review,並完成 S4.7 owner coverage attestation 後,再另行提交 snapshot。此文件本身不代表 inventory 已完成。