在金融数据工程体系中,数据安全不是可选项,而是监管红线。《个人信息保护法》《数据安全法》《金融数据安全数据安全分级指南》等法规,对银行、保险、证券公司处理客户敏感信息提出了明确要求。

监管框架下的数据分级

根据中国人民银行金融数据安全分级指南,金融数据分为五个安全级别:

级别 定义 典型数据 防护要求
5级 核心数据 核心系统密钥、根证书 最高物理隔离、国密加密-HSM
4级 重要数据 客户身份证号、银行卡号、征信报告 加密存储、动态脱敏、访问审计
3级 内部数据 交易明细、资产负债数据 访问控制、操作留痕
2级 内部公开 产品目录、费率信息 访问权限管理
1级 公开数据 银行网点信息、公开报告 基本访问控制

4级敏感信息必须在数据采集入ODS层之前完成脱敏/加密

脱敏 vs 加密

  • 脱敏(Masking):不可逆,适合不需要还原真实值的场景。如哈希脱敏、截断脱敏、遮盖脱敏。
  • 加密(Encryption):可逆,适合需要还原的场景。采用国密SM4、AES-256等算法。
  • 令牌化(Tokenization):用无意义令牌替换敏感值,通过独立服务台还原。

全链路脱敏策略

1. 采集阶段:入仓即脱敏

import hashlib, re

def mask_id_card(id_card: str) -> str:
    if not id_card or len(id_card) != 18:
        return ""
    return id_card[:3] + "*********" + id_card[-4:]

def hash_card_no(card_no: str) -> str:
    return hashlib.sha256(card_no.encode()).hexdigest()

2. 存储阶段:列级加密 + TDE

Hive/Parquet存储中,对4级字段采用列级加密。同时配合 HDFS Transparent Encryption 实现"落盘即加密,读取时自动解密"。

3. 加工阶段:动态脱敏

由查询引擎层拦截 SQL,根据用户角色实时脱敏。Apache Ranger + Hive 插件可实现列级动态脱敏。

4. 共享与输出阶段:水印与审批

数据对外输出时植入隐形水印,便于泄露时追溯责任方。同时通过工单系统审批,数据样本必须经过K-Anonymity或L-Diversity匿名化处理。

密钥管理

银行级的密钥管理要求: 1. 密钥分层:根密钥(HSM)→ 主密钥 → 数据密钥 2. 密钥轮换:至少每季度轮换一次 3. 双人控制:接触密钥的人员需经过双人控制 4. 审计日志:所有加解密操作全量记录到不可篡改的日志中

总结

金融数据安全是"制度 + 技术 + 监控"三位一体的体系。在写每一行ETL代码时多问一句:"这条SQL处理的数据包含几级敏感信息?结果会不会写入没有加密的目录?"这三个问题的答案,决定了你的数据链路是资产还是负债。