106 lines
3.0 KiB
JSON
106 lines
3.0 KiB
JSON
{
|
||
"schema_version": "security_rollout_policy_v1",
|
||
"status": "draft",
|
||
"default_mode": "observe",
|
||
"enforcement_level": "mirror_only",
|
||
"policy_items": [
|
||
{
|
||
"condition": "read_only_inventory_or_evidence_mirror",
|
||
"mode": "observe",
|
||
"allowed": [
|
||
"collect_metadata",
|
||
"write_redacted_snapshot",
|
||
"update_docs",
|
||
"mirror_to_awooop_runtime_state"
|
||
],
|
||
"forbidden": [
|
||
"change_runtime",
|
||
"write_to_remote_system",
|
||
"delete_or_archive_repo",
|
||
"sync_refs"
|
||
],
|
||
"reason": "初期先建立可見性與追溯性,不阻擋產品與架構推進。"
|
||
},
|
||
{
|
||
"condition": "low_or_medium_observation_without_irreversible_change",
|
||
"mode": "warn",
|
||
"allowed": [
|
||
"label_risk",
|
||
"create_followup_item",
|
||
"add_evidence_ref",
|
||
"prepare_draft_plan"
|
||
],
|
||
"forbidden": [
|
||
"block_deploy",
|
||
"force_owner_decision",
|
||
"auto_patch",
|
||
"auto_merge"
|
||
],
|
||
"reason": "LOW / MEDIUM observation 先累積 evidence,不把日常流程變成審批地獄。"
|
||
},
|
||
{
|
||
"condition": "uses_readonly_token_or_admin_export",
|
||
"mode": "approve_required",
|
||
"allowed": [
|
||
"request_human_approval",
|
||
"run_once_after_approval",
|
||
"store_token_present_boolean_only",
|
||
"write_redacted_inventory"
|
||
],
|
||
"forbidden": [
|
||
"store_token_value",
|
||
"reuse_write_token",
|
||
"write_to_gitea",
|
||
"create_repo"
|
||
],
|
||
"reason": "只讀 token 與管理匯出會碰敏感邊界,需 approval,但仍不授權任何同步或寫入。"
|
||
},
|
||
{
|
||
"condition": "repo_creation_visibility_change_or_refs_sync",
|
||
"mode": "approve_required",
|
||
"allowed": [
|
||
"create_approval_candidate",
|
||
"prepare_migration_plan",
|
||
"prepare_rollback_plan"
|
||
],
|
||
"forbidden": [
|
||
"execute_without_owner_approval",
|
||
"push_refs",
|
||
"change_visibility",
|
||
"switch_primary"
|
||
],
|
||
"reason": "這些動作會改供應鏈控制面,必須逐 repo 核准。"
|
||
},
|
||
{
|
||
"condition": "secret_rbac_network_firewall_deploy_or_primary_switch",
|
||
"mode": "approve_required",
|
||
"allowed": [
|
||
"create_approval_required_event",
|
||
"prepare_dry_run_plan",
|
||
"define_rollback"
|
||
],
|
||
"forbidden": [
|
||
"auto_execute",
|
||
"store_secret_value",
|
||
"skip_human_review"
|
||
],
|
||
"reason": "這些動作有生產、權限或安全 blast radius,不進入初期自動化。"
|
||
},
|
||
{
|
||
"condition": "destructive_action_without_rollback_or_secret_value_storage",
|
||
"mode": "block_candidate",
|
||
"allowed": [
|
||
"record_block_reason",
|
||
"request_manual_exception"
|
||
],
|
||
"forbidden": [
|
||
"force_push",
|
||
"delete_repo",
|
||
"store_raw_secret",
|
||
"disable_audit"
|
||
],
|
||
"reason": "不可逆且無 rollback 的動作不屬於初期框架建置範圍。"
|
||
}
|
||
]
|
||
}
|