105 lines
4.0 KiB
JSON
105 lines
4.0 KiB
JSON
{
|
||
"allowed_release_methods": [
|
||
"formal_gitea_merge",
|
||
"formal_patch_apply",
|
||
"maintainer_local_push_with_safe_credential"
|
||
],
|
||
"blocked_actions": [
|
||
"plain_text_gitea_token_in_remote_url",
|
||
"copy_token_from_dirty_workspace",
|
||
"force_push",
|
||
"nginx_or_gateway_workaround_for_404",
|
||
"docker_restart_for_wazuh_route",
|
||
"k8s_or_argocd_manual_apply_for_wazuh_route",
|
||
"firewall_change_for_wazuh_route",
|
||
"wazuh_secret_or_manager_change_for_api_404",
|
||
"enable_wazuh_live_metadata_without_owner_gate",
|
||
"enable_wazuh_active_response",
|
||
"host_write_or_kali_active_scan"
|
||
],
|
||
"execution_boundaries": {
|
||
"force_push_allowed": false,
|
||
"host_write_authorized": false,
|
||
"kali_active_scan_authorized": false,
|
||
"not_authorization": true,
|
||
"plain_text_token_workaround_allowed": false,
|
||
"production_deploy_authorized": false,
|
||
"repo_write_authorized": false,
|
||
"runtime_execution_authorized": false,
|
||
"secret_value_collection_allowed": false,
|
||
"wazuh_active_response_authorized": false,
|
||
"wazuh_api_live_query_authorized": false
|
||
},
|
||
"generated_at": "2026-06-24T22:48:00+08:00",
|
||
"mode": "repo_preflight_no_secret_no_runtime_no_push",
|
||
"operator_interpretation": [
|
||
"此 preflight 通過前,不得把 Gitea credential blocker 視為可繞過。",
|
||
"正式 release 可以選 formal merge、formal patch apply 或安全 credential push,但都需要 owner response 與 deploy 後 readback。",
|
||
"不得用 Nginx、Docker、K8s、firewall、Wazuh secret 或主機重啟來修 public API 404。",
|
||
"Wazuh live metadata 查詢與 active response 是不同 gate;本 preflight 不授權任何 runtime action。"
|
||
],
|
||
"post_deploy_readback": {
|
||
"command": "python3 scripts/security/wazuh-readonly-production-readback.py --json",
|
||
"must_not_return_http_404": true,
|
||
"required": true,
|
||
"runtime_gate_expected": 0
|
||
},
|
||
"release_lanes": [
|
||
{
|
||
"lane_id": "formal_gitea_merge",
|
||
"meaning": "由具備正式 Gitea 權限者合併 Wazuh 分支;不得 force push。",
|
||
"runtime_authorized": false,
|
||
"status": "blocked_owner_response_required"
|
||
},
|
||
{
|
||
"lane_id": "formal_patch_apply",
|
||
"meaning": "由正式 release lane 套用已驗證 patch set;不得跳過 production readback。",
|
||
"runtime_authorized": false,
|
||
"status": "blocked_owner_response_required"
|
||
},
|
||
{
|
||
"lane_id": "maintainer_local_push_with_safe_credential",
|
||
"meaning": "只接受安全的 credential helper / SSH key / 正式 release token;不得使用明文 token workaround。",
|
||
"runtime_authorized": false,
|
||
"status": "blocked_safe_credential_required"
|
||
}
|
||
],
|
||
"required_ack_flags": [
|
||
"approve_formal_release_lane",
|
||
"confirm_no_plaintext_token_workaround",
|
||
"confirm_no_force_push",
|
||
"confirm_no_runtime_workaround",
|
||
"confirm_production_readback_after_deploy",
|
||
"confirm_wazuh_live_metadata_requires_separate_owner_gate"
|
||
],
|
||
"required_evidence_fields": [
|
||
"release_lane_owner",
|
||
"release_method",
|
||
"target_branch_or_patch_set",
|
||
"post_deploy_readback_command",
|
||
"rollback_owner",
|
||
"blocked_runtime_actions_ack"
|
||
],
|
||
"schema_version": "iwooos_wazuh_readonly_release_lane_preflight_v1",
|
||
"status": "blocked_waiting_formal_release_lane_owner_response",
|
||
"summary": {
|
||
"accepted_ack_flag_count": 0,
|
||
"accepted_evidence_field_count": 0,
|
||
"allowed_release_method_count": 3,
|
||
"force_push_allowed_count": 0,
|
||
"formal_release_lane_ready_count": 0,
|
||
"gitea_push_authorized_count": 0,
|
||
"patch_apply_authorized_count": 0,
|
||
"plain_text_token_workaround_allowed_count": 0,
|
||
"production_deploy_authorized_count": 0,
|
||
"production_readback_passed_count": 0,
|
||
"production_readback_required_count": 1,
|
||
"required_ack_flag_count": 6,
|
||
"required_evidence_field_count": 6,
|
||
"runtime_gate_count": 0,
|
||
"runtime_workaround_allowed_count": 0,
|
||
"safe_credential_available_count": 0,
|
||
"wazuh_live_metadata_owner_gate_ready_count": 0
|
||
}
|
||
}
|