fix(iwooos): 脫敏 tenants public identity
All checks were successful
Code Review / ai-code-review (push) Successful in 15s
CD Pipeline / tests (push) Successful in 1m29s
CD Pipeline / build-and-deploy (push) Successful in 4m14s
CD Pipeline / post-deploy-checks (push) Successful in 1m44s

This commit is contained in:
Your Name
2026-06-14 23:18:54 +08:00
parent 92e451cbdd
commit 8a6be1a1c1
20 changed files with 2509 additions and 95 deletions

View File

@@ -101,6 +101,9 @@ def validate(root: Path) -> None:
host_service_owner_request_draft = load_json(
security_dir / "host-service-owner-request-draft.snapshot.json"
)
host_service_owner_response_acceptance = load_json(
security_dir / "host-service-owner-response-acceptance.snapshot.json"
)
ssh_network_access_inventory = load_json(security_dir / "ssh-network-access-inventory.snapshot.json")
ssh_network_owner_request_draft = load_json(
security_dir / "ssh-network-owner-request-draft.snapshot.json"
@@ -2486,12 +2489,12 @@ def validate(root: Path) -> None:
assert_equal(
"high_value_config_coverage.summary.average_coverage_percent",
high_value_config_coverage["summary"]["average_coverage_percent"],
67,
68,
)
assert_equal(
"high_value_config_coverage.summary.needs_live_evidence_count",
high_value_config_coverage["summary"]["needs_live_evidence_count"],
7,
6,
)
for key in [
"owner_response_received_count",
@@ -2819,16 +2822,20 @@ def validate(root: Path) -> None:
assert_equal(
"high_value_config_coverage.coverage_categories.docker.coverage_percent",
docker_systemd_category["coverage_percent"],
50,
54,
)
assert_equal(
"high_value_config_coverage.coverage_categories.docker.coverage_status",
docker_systemd_category["coverage_status"],
"repo_only_inventory_ready_needs_live_owner_evidence",
"owner_response_acceptance_ledger_ready_needs_live_owner_evidence",
)
for evidence_ref in [
"docs/security/HOST-SERVICE-CONFIG-INVENTORY.md",
"docs/security/host-service-config-inventory.snapshot.json",
"docs/security/HOST-SERVICE-OWNER-REQUEST-DRAFT.md",
"docs/security/host-service-owner-request-draft.snapshot.json",
"docs/security/HOST-SERVICE-OWNER-RESPONSE-ACCEPTANCE.md",
"docs/security/host-service-owner-response-acceptance.snapshot.json",
]:
assert_contains(
"high_value_config_coverage.coverage_categories.docker.evidence_refs",
@@ -3123,6 +3130,221 @@ def validate(root: Path) -> None:
f"host_service_owner_request_draft.{draft['request_id']}.{false_key}",
draft[false_key],
)
assert_equal(
"host_service_owner_response_acceptance.schema",
host_service_owner_response_acceptance["schema_version"],
"host_service_owner_response_acceptance_v1",
)
assert_equal(
"host_service_owner_response_acceptance.status",
host_service_owner_response_acceptance["status"],
"owner_response_acceptance_ledger_ready_no_runtime_action",
)
assert_equal(
"host_service_owner_response_acceptance.source_inventory_schema_version",
host_service_owner_response_acceptance["source_inventory_schema_version"],
"host_service_config_inventory_v1",
)
assert_equal(
"host_service_owner_response_acceptance.source_owner_request_schema_version",
host_service_owner_response_acceptance["source_owner_request_schema_version"],
"host_service_owner_request_draft_v1",
)
expected_host_service_owner_response_acceptance_summary = {
"source_owner_request_count": 9,
"acceptance_candidate_count": 9,
"write_capable_acceptance_candidate_count": 3,
"live_evidence_required_candidate_count": 8,
"acceptance_field_count": 28,
"required_owner_field_count": 12,
"reviewer_check_count": 14,
"outcome_lane_count": 7,
"blocked_action_count": 20,
"request_sent_count": 0,
"recipient_confirmed_count": 0,
"owner_response_received_count": 0,
"owner_response_accepted_count": 0,
"owner_response_rejected_count": 0,
"owner_response_quarantined_count": 0,
"supplement_requested_count": 0,
"live_evidence_received_count": 0,
"live_config_hash_accepted_count": 0,
"maintenance_window_accepted_count": 0,
"restart_window_accepted_count": 0,
"rollback_owner_accepted_count": 0,
"post_check_plan_accepted_count": 0,
"disable_switch_accepted_count": 0,
"host_write_authorized_count": 0,
"ssh_read_authorized_count": 0,
"ssh_write_authorized_count": 0,
"docker_compose_action_authorized_count": 0,
"systemctl_action_authorized_count": 0,
"repair_bot_execution_authorized_count": 0,
"ansible_apply_authorized_count": 0,
"sudo_action_authorized_count": 0,
"secret_value_collection_allowed_count": 0,
"active_scan_authorized_count": 0,
"live_host_read_authorized_count": 0,
"runtime_gate_count": 0,
"action_button_count": 0,
}
for key, expected in expected_host_service_owner_response_acceptance_summary.items():
assert_equal(
f"host_service_owner_response_acceptance.summary.{key}",
host_service_owner_response_acceptance["summary"][key],
expected,
)
for key, value in host_service_owner_response_acceptance["execution_boundaries"].items():
if key == "not_authorization":
assert_true(f"host_service_owner_response_acceptance.execution_boundaries.{key}", value)
else:
assert_false(f"host_service_owner_response_acceptance.execution_boundaries.{key}", value)
assert_equal(
"host_service_owner_response_acceptance.acceptance_candidates.count",
len(host_service_owner_response_acceptance["acceptance_candidates"]),
9,
)
expected_host_service_acceptance_ids = [
"host_service_owner_response_acceptance:local_dev_compose",
"host_service_owner_response_acceptance:monitoring_110_compose",
"host_service_owner_response_acceptance:monitoring_exporters_188_compose",
"host_service_owner_response_acceptance:sentry_110_reference_compose",
"host_service_owner_response_acceptance:langfuse_110_compose",
"host_service_owner_response_acceptance:ansible_docker_compose_service_role",
"host_service_owner_response_acceptance:repair_bot_110_whitelist",
"host_service_owner_response_acceptance:repair_bot_188_whitelist",
"host_service_owner_response_acceptance:config_backup_host_capture",
]
assert_equal(
"host_service_owner_response_acceptance.acceptance_candidates",
[item["acceptance_candidate_id"] for item in host_service_owner_response_acceptance["acceptance_candidates"]],
expected_host_service_acceptance_ids,
)
expected_host_service_checks = [
"owner_identity_present",
"decision_reason_present",
"affected_scope_matches_surface",
"redacted_refs_only",
"secret_value_absent",
"live_config_hash_metadata_only",
"maintenance_window_present",
"restart_window_separate_from_action",
"rollback_owner_present",
"post_check_plan_present",
"disable_switch_present",
"write_capable_requires_extra_review",
"no_runtime_request",
"counts_transition_safe",
]
assert_equal(
"host_service_owner_response_acceptance.reviewer_checks",
[item["check_id"] for item in host_service_owner_response_acceptance["reviewer_checks"]],
expected_host_service_checks,
)
expected_host_service_lanes = [
"waiting_owner_response",
"quarantine_secret_or_raw_payload",
"reject_execution_request",
"request_supplement",
"ready_for_host_service_review",
"owner_review_only_update",
"waiting_runtime_gate",
]
assert_equal(
"host_service_owner_response_acceptance.outcome_lanes",
[item["lane_id"] for item in host_service_owner_response_acceptance["outcome_lanes"]],
expected_host_service_lanes,
)
expected_host_service_blocked_actions = [
"ssh_read",
"ssh_write",
"docker_compose_up",
"docker_compose_down",
"docker_compose_pull",
"systemctl_restart",
"systemctl_reload",
"repair_bot_execute",
"ansible_apply",
"sudo_action",
"host_file_write",
"firewall_change",
"secret_value_collection",
"active_scan",
"live_host_read",
"raw_live_config_storage",
"restart_without_window",
"rollback_without_owner",
"runtime_gate_open",
"add_action_button",
]
assert_equal(
"host_service_owner_response_acceptance.blocked_actions",
host_service_owner_response_acceptance["blocked_actions"],
expected_host_service_blocked_actions,
)
for item in host_service_owner_response_acceptance["acceptance_candidates"]:
assert_equal(
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.acceptance_fields",
len(item["acceptance_fields"]),
28,
)
assert_equal(
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.required_owner_fields",
len(item["required_owner_fields"]),
12,
)
assert_equal(
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.reviewer_checks",
len(item["reviewer_checks"]),
14,
)
assert_equal(
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.outcome_lanes",
len(item["outcome_lanes"]),
7,
)
assert_equal(
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.blocked_actions",
len(item["blocked_actions"]),
20,
)
assert_true(
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.not_approval",
item["not_approval"],
)
for false_key in [
"request_sent",
"recipient_confirmed",
"owner_response_received",
"owner_response_accepted",
"owner_response_rejected",
"owner_response_quarantined",
"supplement_requested",
"live_evidence_received",
"live_config_hash_accepted",
"maintenance_window_accepted",
"restart_window_accepted",
"rollback_owner_accepted",
"post_check_plan_accepted",
"disable_switch_accepted",
"host_write_authorized",
"ssh_read_authorized",
"ssh_write_authorized",
"docker_compose_action_authorized",
"systemctl_action_authorized",
"repair_bot_execution_authorized",
"ansible_apply_authorized",
"sudo_action_authorized",
"secret_value_collection_allowed",
"active_scan_authorized",
"live_host_read_authorized",
"runtime_gate",
"action_buttons_allowed",
]:
assert_false(
f"host_service_owner_response_acceptance.{item['acceptance_candidate_id']}.{false_key}",
item[false_key],
)
assert_equal(
"ssh_network_access_inventory.schema",
ssh_network_access_inventory["schema_version"],
@@ -5077,8 +5299,8 @@ def validate(root: Path) -> None:
"high_value_config_control_coverage_category_count": 14,
"high_value_config_control_coverage_c0_category_count": 8,
"high_value_config_control_coverage_c1_category_count": 4,
"high_value_config_control_coverage_average_percent": 67,
"high_value_config_control_coverage_needs_live_evidence_count": 7,
"high_value_config_control_coverage_average_percent": 68,
"high_value_config_control_coverage_needs_live_evidence_count": 6,
"high_value_config_control_coverage_owner_response_required_count": 14,
"high_value_config_control_coverage_owner_response_received_count": 0,
"high_value_config_control_coverage_owner_response_accepted_count": 0,
@@ -10996,6 +11218,8 @@ def validate(root: Path) -> None:
"repo_owner_namespace_redacted=true",
"raw_repository_namespace_visible=false",
"public_api_raw_repo_namespace_allowed=false",
"public_product_identity_redacted=true",
"public_api_raw_project_slug_allowed=false",
]:
assert_text_contains("platform_operator_service.source_namespace_redaction", platform_operator_service, text)
for text in ["source_scope_id", "source_namespace_redacted"]:
@@ -14689,7 +14913,7 @@ def validate(root: Path) -> None:
assert_text_contains(
"iwooos_page.high_value_config_control_coverage_docker_systemd_percent",
iwooos_projection_page,
"{ key: 'dockerSystemd', rank: 'P1-1', value: '50%'",
"{ key: 'dockerSystemd', rank: 'P1-1', value: '54%'",
)
assert_text_contains(
"iwooos_page.high_value_config_control_coverage_ssh_network_percent",
@@ -14718,8 +14942,8 @@ def validate(root: Path) -> None:
"high_value_config_control_coverage_category_count=14",
"high_value_config_control_coverage_c0_category_count=8",
"high_value_config_control_coverage_c1_category_count=4",
"high_value_config_control_coverage_average_percent=67",
"high_value_config_control_coverage_needs_live_evidence_count=7",
"high_value_config_control_coverage_average_percent=68",
"high_value_config_control_coverage_needs_live_evidence_count=6",
"high_value_config_control_coverage_owner_response_required_count=14",
"high_value_config_control_coverage_owner_response_received_count=0",
"high_value_config_control_coverage_owner_response_accepted_count=0",
@@ -14733,6 +14957,10 @@ def validate(root: Path) -> None:
"host_service_config_inventory_surface_count=9",
"host_service_config_inventory_write_capable_surface_count=3",
"host_service_config_inventory_runtime_gate_count=0",
"host_service_owner_response_acceptance_candidate_count=9",
"host_service_owner_response_acceptance_write_capable_candidate_count=3",
"host_service_owner_response_acceptance_reviewer_check_count=14",
"host_service_owner_response_acceptance_runtime_gate_count=0",
"ssh_network_access_inventory_surface_count=16",
"ssh_network_access_inventory_write_capable_surface_count=6",
"ssh_network_access_inventory_runtime_gate_count=0",