Files
awoooi/docs/security/gitea-authenticated-inventory-import-acceptance.snapshot.json
Your Name 9e15fd08b3
All checks were successful
CD Pipeline / tests (push) Successful in 1m39s
Code Review / ai-code-review (push) Successful in 15s
CD Pipeline / build-and-deploy (push) Successful in 5m19s
CD Pipeline / post-deploy-checks (push) Successful in 2m11s
feat(web): land iwooos security posture surfaces
2026-05-25 20:35:52 +08:00

225 lines
8.8 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schema_version": "gitea_authenticated_inventory_import_acceptance_v1",
"status": "draft_waiting_redacted_inventory_payload",
"date": "2026-05-13",
"mode": "redacted_payload_acceptance_only",
"runtime_execution_authorized": false,
"source_contract": "gitea_repo_inventory_v1",
"source_request_contract": "gitea_authenticated_inventory_export_request_v1",
"source_indexes": [
"docs/security/gitea-authenticated-inventory-export-request.snapshot.json",
"docs/security/gitea-repo-inventory.snapshot.json",
"docs/security/gitea-public-repo-search.snapshot.json",
"docs/security/gitea-org-repo-inventory-blocked.snapshot.json",
"docs/security/local-git-remote-inventory.snapshot.json",
"docs/security/security-mirror-quarantine.snapshot.json"
],
"summary": {
"target_contract": "gitea_repo_inventory_v1.status=ok",
"import_payload_status": "waiting_redacted_payload",
"accepted_visibility_scopes": ["authenticated", "admin_export"],
"minimum_repo_count": 2,
"local_gitea_unique_repo_count": 4,
"required_gap_explanation_count": 3,
"received_payload_count": 0,
"accepted_payload_count": 0,
"rejected_payload_count": 0,
"acceptance_check_count": 10,
"rejection_rule_count": 10,
"quarantine_required_for_sensitive_payload": true,
"token_value_collection_allowed": false,
"raw_secret_allowed": false,
"db_dump_allowed": false,
"git_object_import_allowed": false,
"repo_write_allowed": false,
"refs_sync_allowed": false,
"github_primary_switch_authorized": false,
"action_buttons_allowed": false
},
"payload_shape": {
"required_top_level_fields": [
"schema_version",
"base_url",
"org",
"visibility_scope",
"token_present",
"status",
"repo_count",
"repos",
"coverage_gap_explanation",
"redaction_attestation"
],
"required_repo_fields": [
"full_name",
"name",
"owner.login",
"private",
"archived",
"empty",
"default_branch",
"clone_url_redacted",
"ssh_url_redacted",
"github_repo_candidate"
],
"required_attestations": [
"no_token_value",
"no_write_token",
"no_webhook_secret",
"no_deploy_key_private_key",
"no_runner_registration_token",
"no_cookie_or_session",
"no_gitea_db_dump",
"no_git_object_pack"
],
"field_constraints": [
"`visibility_scope` 必須是 `authenticated` 或 `admin_export`",
"`status` 必須是 `ok`",
"`repo_count` 必須大於或等於 2並且必須等於 `repos.length`",
"`coverage_gap_explanation` 必須解釋 public-only 2 repos、本機 Gitea 4 unique repos 與 internal 110 adjacent source 的差異",
"所有 URL 必須 redacted且不得含 username、password、token 或 secret query string"
]
},
"acceptance_checks": [
{
"check_id": "schema_and_status_ok",
"title": "Schema 與狀態正確",
"required": true,
"pass_condition": "`schema_version=gitea_repo_inventory_v1` 且 `status=ok`",
"failure_lane": "reject_payload",
"execution_authorized": false
},
{
"check_id": "visibility_scope_allowed",
"title": "可接受的可見範圍",
"required": true,
"pass_condition": "`visibility_scope` 為 `authenticated` 或 `admin_export`",
"failure_lane": "reject_payload",
"execution_authorized": false
},
{
"check_id": "repo_count_consistent",
"title": "repo_count 與 repos 數量一致",
"required": true,
"pass_condition": "`repo_count >= 2` 且等於 `repos.length`",
"failure_lane": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "local_gitea_gap_explained",
"title": "本機 Gitea 覆蓋缺口已說明",
"required": true,
"pass_condition": "payload 解釋 public-only 2 repos 與本機 4 unique Gitea repos 的差異",
"failure_lane": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "internal_110_scope_explained",
"title": "110 內部相鄰來源已說明",
"required": true,
"pass_condition": "payload 說明 internal 110 repos 是否屬於本輪 GitHub migration scope",
"failure_lane": "request_owner_scope_decision",
"execution_authorized": false
},
{
"check_id": "redaction_attestation_present",
"title": "脫敏聲明存在",
"required": true,
"pass_condition": "payload 明確聲明不含 token、secret、private key、cookie、session、DB dump 或 git object pack",
"failure_lane": "quarantine_sensitive_payload",
"execution_authorized": false
},
{
"check_id": "urls_are_redacted",
"title": "URL 已脫敏",
"required": true,
"pass_condition": "clone / ssh URL 不含 username、password、token、cookie 或 secret query string",
"failure_lane": "quarantine_sensitive_payload",
"execution_authorized": false
},
{
"check_id": "token_scope_readonly",
"title": "token scope 只讀或不保存",
"required": true,
"pass_condition": "只保存 `token_present=true|false`,且 owner 聲明沒有 write/admin/secret scope",
"failure_lane": "reject_payload",
"execution_authorized": false
},
{
"check_id": "repo_identity_unique",
"title": "repo identity 可唯一判讀",
"required": true,
"pass_condition": "每筆 repo 都有 `full_name` 或 `owner.login + name`,且不得重複",
"failure_lane": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "output_is_contract_update_only",
"title": "輸出只允許更新契約與證據",
"required": true,
"pass_condition": "只更新 `gitea_repo_inventory_v1` snapshot、migration matrix、decision table、readiness gate 與 LOGBOOK",
"failure_lane": "reject_runtime_or_source_control_action",
"execution_authorized": false
}
],
"rejection_rules": [
"payload 含 token value、PAT、cookie、session、CSRF token 或 partial token 時必須拒收。",
"payload 含 webhook secret、repository secret value、runner registration token 或 deploy key private key 時必須拒收。",
"payload 含 Gitea DB dump、完整 git object pack、裸 repo tarball 或可還原 credential 的 artifact 時必須拒收。",
"payload 要求使用 write-capable token、admin token 或 secret scope token 時必須拒收。",
"payload 要求建立、刪除、封存或修改 Gitea repo 時必須拒收。",
"payload 要求建立 GitHub repo、修改 visibility、sync refs、delete refs 或 force push 時必須拒收。",
"payload 未解釋 public-only 與本機 Gitea 覆蓋差異時不得標記 inventory complete。",
"payload 未說明 internal 110 adjacent source scope 時不得進 GitHub primary readiness。",
"payload 只提供截圖、文字描述或不完整 repo metadata 時必須要求補 evidence。",
"任何不確定是否含敏感值的 payload 必須先進 mirror quarantine不得人工手改後直接入庫。"
],
"quarantine_mapping": [
{
"condition": "出現 token、password、cookie、session、private key、webhook secret 或 runner registration token",
"target_lane": "sensitive_value_payload_quarantine",
"execution_authorized": false
},
{
"condition": "出現 Gitea DB dump、git object pack、裸 repo tarball 或完整 artifact",
"target_lane": "oversized_or_wrong_artifact_quarantine",
"execution_authorized": false
},
{
"condition": "欄位不足、repo_count 不一致或 coverage gap 未解釋",
"target_lane": "schema_or_evidence_gap_quarantine",
"execution_authorized": false
},
{
"condition": "payload 夾帶 repo 建立、refs sync、primary switch 或 workflow/secret 修改要求",
"target_lane": "execution_request_quarantine",
"execution_authorized": false
}
],
"allowed_outputs": [
"產出或更新脫敏後的 `gitea_repo_inventory_v1.status=ok` snapshot",
"更新 `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"
],
"forbidden_actions": [
"store_token_value",
"store_raw_secret",
"store_cookie_or_session",
"import_gitea_db_dump",
"import_git_object_pack",
"use_write_capable_token",
"write_to_gitea",
"create_gitea_repo",
"delete_or_archive_gitea_repo",
"create_github_repo",
"change_repo_visibility",
"sync_git_refs",
"delete_git_refs",
"force_push",
"switch_github_primary",
"disable_gitea",
"add_action_button"
]
}