---
name: sensitive-information-handling
scope:
  - '*'
products:
  - '*'
id: ka-hard-rule-敏感信息处理规则
asset_kind: governance_rule
lifecycle_status: active
authority: canonical
owner_mechanism_id: mc-privacy-boundary
routes: ['*']
primary_triggers:
  - 敏感信息处理规则
secondary_triggers:
  - 敏感信息
  - 脱敏
  - 隐私
  - 日志
  - 输出
  - console
  - print
  - log
negative_triggers: []
priority: P0
specificity: 5
consumes:
  - mc-privacy-boundary
hard_blocks:
  - secret泄露
  - PII未脱敏
fallback: manual_required
required_evidence:
  - redaction_records
  - privacy_findings
version: 1.1.0
last_reviewed: '2026-06-01'
type: governance_rule
when: 敏感信息处理规则
stages: ["*"]
---

# 敏感信息处理规则

## 核心原则

敏感信息 (密钥、token、PII) 不可泄露到外部材料、prompt 或日志中。

## 规则

1. .env 文件中的值不可作为知识注入 prompt
2. token/secret 必须在写入前被 detectSecrets 扫描
3. severity=blocked 的发现必须阻断写入
4. 外部材料摄取必须经过脱敏处理
5. DataAccessGrant 必须明确声明数据访问权限

## 验收标准

- [ ] detectSecrets 扫描所有写入内容
- [ ] severity=blocked 的发现阻断写入流程
- [ ] RedactionRecord 记录所有脱敏操作
- [ ] DataAccessGrant 覆盖所有数据访问

## 日志脱敏规则

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

### 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）不误判
- 仅检查实际输出到日志的值，不检查声明和赋值
