背景与价值日志泄露隐私与密钥是常见风险。字段级红线与结构化治理可在源头阻断敏感信息输出并增强审计能力。统一规范字段红线:定义敏感字段集,默认掩码并仅白名单放行。格式统一:结构化JSON日志,统一携带 `trace_id` 与 `level`。输出门禁:敏感数据仅在受控环境与受限级别输出。核心实现字段红线与掩码type Log = Record<string, any>
const redline = new Set(['password','secret','token','api_key','card_number','ssn'])
const whitelist = new Set(['user_id','order_id'])
function maskValue(v: any): any {
const s = String(v)
if (s.length <= 4) return '***'
return s.slice(0,2) + '***' + s.slice(-2)
}
function redact(log: Log): Log {
const out: Log = {}
for (const [k, v] of Object.entries(log)) {
if (redline.has(k) && !whitelist.has(k)) out[k] = maskValue(v)
else out[k] = v
}
return out
}
结构化输出与等级type Level = 'INFO' | 'WARN' | 'ERROR'
type Event = { level: Level; trace_id: string; msg: string; data?: Log }
function validTraceId(id: string): boolean { return /^[a-z0-9]{8,32}$/.test(id) }
function emit(ev: Event): string {
const tid = validTraceId(ev.trace_id) ? ev.trace_id : Math.random().toString(36).slice(2)
const data = ev.data ? redact(ev.data) : undefined
return JSON.stringify({ ts: Date.now(), level: ev.level, trace_id: tid, msg: ev.msg, data })
}
落地建议明确敏感字段红线并默认掩码,严格控制白名单字段输出。全量结构化输出并统一携带 `trace_id` 与等级字段,便于检索与审计。在错误与告警级别进一步收敛数据,避免过度输出导致泄露。验证清单红线字段是否统一掩码,白名单是否可追溯配置。日志是否结构化且包含 `trace_id/level`。

发表评论 取消回复