---
name: 敏感信息日志规则
scope:
  - '*'
products:
  - '*'
id: ka-hard-rule-敏感信息日志规则
asset_kind: hard_rule
lifecycle_status: active
authority: canonical
owner_mechanism_id: mc-code-maintainability-observability-contract
routes:
  - code_change
  - artifact_generation
primary_triggers:
  - 日志
  - 输出
  - console
  - print
  - log
secondary_triggers:
  - 敏感信息
  - 脱敏
  - 隐私
negative_triggers:
  - 文案
  - 样式
priority: P0
specificity: 5
consumes:
  - mc-code-maintainability-observability-contract
hard_blocks:
  - sensitive_log_leak
  - plaintext_credential_in_output
fallback: manual_required
required_evidence:
  - sensitive_log_scan_result
  - review_findings
version: 1.0.0
last_reviewed: '2026-05-26'
---

## 敏感信息绝对禁止进入日志

以下字段必须脱敏或禁止输出到任何日志通道：

### P0 阻断（发现即 hard_fail）
- password / passwd / pwd：禁止明文输出
- token / api_key / access_key / secret_key / private_key：禁止明文输出
- cookie / session_id / set_cookie：禁止输出完整值
- 身份证号：禁止输出 15/18 位全量
- 手机号：禁止输出 11 位全量
- 银行卡号：禁止输出全量
- 健康隐私信息（病历、诊断、处方）

### 脱敏要求
- 手机号：仅显示前 3 后 4（如 138****5678）
- 身份证：仅显示前 3 后 4（如 310***********1234）
- 银行卡：仅显示后 4 位（如 ****5678）
- token/密钥：仅显示前 4 位或哈希值

### 检查范围
- 用户项目代码中的日志输出语句
- 不检查测试文件中的 fixture 或 mock
- 不检查 SoloForge 自身日志（已有独立治理）

### 误判防范
- 变量名含 password 但实际是布尔标志（如 requires_password）不误判
- 仅检查实际输出到日志的值，不检查声明和赋值
