PIPL 数据本地化
《中华人民共和国个人信息保护法》(PIPL, Personal Information Protection Law)于 2021 年 11 月 1 日起施行,是中国个人信息保护领域的基础性法律。PIPL 与《网络安全法》、《数据安全法》共同构成中国数据治理的法律框架。违规者最高可被处以 5000 万元或上一年度营业额 5% 的罚款,并可能被吊销营业执照。
对于电力与能源行业而言,电网作为关键信息基础设施,其运营者收集的用电行为数据、用户身份信息、设备位置信息等均受 PIPL 约束。EnerOS 通过区域化部署、数据驻留策略与个人信息保护影响评估能力,支持电网运营商满足 PIPL 要求。
法律概述
PIPL 共八章七十四条,核心要点包括:
| 章节 | 主题 | 关键要求 |
|---|---|---|
| 第一章 | 总则 | 适用范围、基本原则 |
| 第二章 | 个人信息处理规则 | 处理依据、告知同意 |
| 第三章 | 自动化处理 | 自动化决策规则 |
| 第四章 | 个人信息跨境提供 | 安全评估、认证、标准合同 |
| 第五章 | 个人信息处理者义务 | 安全保护、风险评估 |
| 第六章 | 监督管理 | 监管部门、调查权 |
| 第七章 | 法律责任 | 行政处罚、民事赔偿 |
| 第八章 | 附则 | 用语定义、生效日期 |
个人信息定义
PIPL 将个人信息分为两类:
| 类别 | 定义 | 电力场景示例 |
|---|---|---|
| 个人信息 | 以电子或者其他方式记录的与已识别或者可识别的自然人有关的各种信息 | 用户姓名、电表 ID、住址、用电量 |
| 敏感个人信息 | 一旦泄露或者非法使用,容易导致自然人的人格尊严受到侵害或者人身、财产安全受到危害的个人信息 | 生物特征、医疗健康、金融账户、14 岁以下儿童信息 |
注意:精确到户的用电行为数据可能被认定为敏感个人信息(因其可推断家庭作息、是否在家等隐私信息),处理时须取得单独同意。
核心要求与实现
| PIPL 条款 | 要求 | EnerOS 实现 |
|---|---|---|
| 第 13 条 | 处理合法性基础 | 合法性基础字段标注 |
| 第 14 条 | 同意须自愿、明确 | 单独同意流程 + 同意记录 |
| 第 17 条 | 告知义务 | 通知 API + 多语言模板 |
| 第 22 条 | 委托处理 | 处理者协议记录 + 权限委托 |
| 第 23 条 | 向第三方提供 | 第三方共享日志 + 单独同意 |
| 第 24 条 | 自动化决策 | 决策说明 + 拒绝自动化权 |
| 第 25 条 | 公开披露 | 公开披露审批 + 单独同意 |
| 第 26 条 | 公共场所图像采集 | 显著标识 + 数据最小化 |
| 第 28-32 条 | 敏感信息处理 | 单独同意 + 加密 + 评估 |
| 第 38 条 | 跨境传输须安全评估 | region 标签 + 跨区策略拒绝 |
| 第 39 条 | 跨境单独同意 | 跨境同意记录 + 显式提示 |
| 第 40 条 | 关键信息基础设施本地化 | 区域独立集群 + 本地 CA |
| 第 44-50 条 | 个人权利 | DSR API(中文化) |
| 第 51 条 | 安全保护措施 | 加密 + WORM + 访问控制 |
| 第 52 条 | 个人信息保护负责人 | 负责人任命记录 |
| 第 54 条 | 合规审计 | 年度合规审计工具 |
| 第 55 条 | 个人信息保护影响评估 | PIA 模板导出 |
| 第 56 条 | 处理记录留存 | 处理记录 3 年保留 |
个人信息处理规则
合法性基础
PIPL 第 13 条规定了七种合法性基础,每种均需在 EnerOS 中显式声明:
[data_flow.legal_basis]
allowed_values = [
"consent", # 取得个人同意
"contract-performance", # 为订立、履行合同所必需
"legal-duty", # 履行法定职责或法定义务
"public-health-emergency", # 应对突发公共卫生事件
"news-reporting", # 新闻报道
"public-interest", # 法律规定为公共利益实施
"other-law" # 法律规定其他情形
]
告知同意流程
use eneros_privacy::consent::{ConsentRequest, ConsentScope};
let request = ConsentRequest::builder()
.subject_id("user-12345")
.purpose("用电行为分析与负荷预测")
.scope(ConsentScope::Sensitive)
.legal_basis("consent")
.retention_days(365 * 7)
.withdraw_url("/consent/withdraw/user-12345")
.language("zh-CN")
.notice_text("为提供负荷预测服务,需收集您的用电数据...")
.build()?;
// 记录同意状态
let consent = request.execute().await?;
assert!(consent.is_granted());
assert_eq!(consent.scope(), ConsentScope::Sensitive);
跨境传输
PIPL 第 38-40 条对个人信息跨境传输提出了严格要求:
| 情形 | 要求 | EnerOS 实现 |
|---|---|---|
| 普通跨境传输 | 安全评估 / 认证 / 标准合同 | 跨境审批工作流 |
| 关键信息基础设施 | 数据原则上境内存储 | 区域独立集群 |
| 处理达 100 万人 | 须向网信办申报安全评估 | 跨境量统计告警 |
| 敏感信息跨境 | 单独同意 + 安全评估 | 双重审批流程 |
跨境策略引擎
use eneros_trust::region::{RegionPolicy, CrossBorderRequest};
let policy = RegionPolicy::new()
.source_region("cn-east-1")
.default_action("deny");
let request = CrossBorderRequest::builder()
.source("cn-east-1")
.destination("eu-west-1")
.data_category("pii")
.legal_basis("consent")
.has_security_assessment(false)
.build()?;
// 默认拒绝跨境
let decision = policy.evaluate(&request).await?;
assert_eq!(decision.action, "deny");
assert_eq!(decision.reason, "未通过安全评估");
EnerOS 合规实施
1. 区域独立集群部署
为满足关键信息基础设施运营者数据本地化要求,EnerOS 推荐在中国境内部署独立集群:
[deployment]
region = "cn-east-1"
country = "CN"
data_residency = "strict" # 严格数据驻留
cross_border_policy = "deny-by-default"
sovereign_cloud = true # 主权云模式
[deployment.localization]
database_in_region = true # 数据库境内
storage_in_region = true # 对象存储境内
ca_in_region = true # CA 境内独立
key_in_region = true # 密钥境内托管
[deployment.approvals]
cross_border_approver = "cip-officer@grid.cn"
security_assessment_required = true
2. 数据分类与标记
PIPL 要求数据处理者对个人信息进行分类管理,EnerOS 通过字段标记实现:
[data.classification]
standard = "pipl"
enabled = true
[[data.fields]]
name = "customer_name"
pii = true
category = "general-identifier" # 一般个人信息
encryption = "AES-256-GCM"
retention_days = 2555
[[data.fields]]
name = "id_card_number"
pii = true
category = "sensitive" # 敏感个人信息
encryption = "AES-256-GCM"
access_log = true # 访问留痕
separate_consent = true # 单独同意
[[data.fields]]
name = "consumption_pattern"
pii = true
category = "sensitive" # 用电行为可能推断作息
encryption = "AES-256-GCM"
pseudonymization = true # 假名化处理
[[data.fields]]
name = "voltage_kv"
pii = false
category = "operational"
retention_days = 3650
3. 个人信息保护影响评估(PIA)
PIPL 第 55-56 条要求在特定情形下开展个人信息保护影响评估:
# 生成 PIA 评估模板
eneros-cli pia init --project "智能电表数据采集项目" \
--output pia-smart-meter-2026.md
# 自动填充处理活动信息
eneros-cli pia autofill --input pia-smart-meter-2026.md \
--data-flow smart-meter-collection
# 提交评审
eneros-cli pia submit --input pia-smart-meter-2026.md \
--reviewer cip-officer@grid.cn
# 导出评估报告
eneros-cli pia export --id pia-2026-001 \
--format pdf --output pia-2026-001.pdf
PIA 评估需留档至少 3 年(第 56 条要求)。
数据分类
EnerOS 按 PIPL 要求将数据分为四级:
| 等级 | 类别 | 示例 | 保护措施 | 跨境策略 |
|---|---|---|---|---|
| L1 | 一般个人信息 | 姓名、电话、电表 ID | 加密 + 访问控制 | 安全评估后允许 |
| L2 | 敏感个人信息 | 身份证号、生物特征、用电行为 | 加密 + 单独同意 + 访问留痕 | 原则上境内 |
| L3 | 关键信息基础设施数据 | 电网调度数据、设备位置 | 加密 + WORM + 境内集群 | 原则上境内 |
| L4 | 国家秘密相关 | 涉密单位用电数据 | 加密 + 专网隔离 + 物理保护 | 禁止跨境 |
配置示例
eneros.toml 完整 PIPL 配置
[compliance]
standard = "pipl"
version = "2021"
enforce = true
protection_officer = "pip-officer@grid.cn"
[pipl]
enabled = true
data_residency = "strict"
cross_border_policy = "deny-by-default"
breach_notification_hours = 24 # 立即上报网信办
default_retention_years = 7
# 个人信息处理者义务
[pipl.obligations]
appoint_protection_officer = true # 任命数据保护负责人
conduct_annual_audit = true # 年度合规审计
security_protection_measures = true
training_required = true # 员工培训
# 同意管理
[pipl.consent]
default_scope = "explicit" # 显式同意
separate_consent_for_sensitive = true # 敏感信息单独同意
withdraw_mechanism = true # 撤回同意机制
withdraw_url = "/consent/withdraw"
# 数据主体权利
[pipl.rights]
response_days = 15 # PIPL 要求 15 个工作日
extension_days = 30
notice_language = "zh-CN"
channels = ["web", "mobile", "offline"]
# 跨境传输
[pipl.cross_border]
default_policy = "deny"
security_assessment_required = true
standard_contract_required = true
separate_consent_required = true
cac_notification_threshold = 1000000 # 100 万人阈值
# 数据保留
[pipl.retention]
default_days = 2555 # 7 年
sensitive_days = 1825 # 敏感信息 5 年
auto_delete = true
notify_before_days = 30
# 处理记录
[pipl.processing_records]
auto_generate = true
retain_years = 3 # 第 56 条要求至少 3 年
storage = "worm"
Rust 代码:合规检查
use eneros_compliance::pipl::ComplianceChecker;
let checker = ComplianceChecker::new("eneros.toml")?;
let report = checker.check().await?;
for finding in &report.findings {
match finding.severity {
Severity::Critical => println!("严重: {}", finding.description),
Severity::High => println!("高: {}", finding.description),
Severity::Medium => println!("中: {}", finding.description),
Severity::Low => println!("低: {}", finding.description),
}
}
println!("合规分数: {}/100", report.score);
区域驻留配置
[region]
id = "cn-east-1"
country = "CN"
data_residency = "strict" # 拒绝任何跨境明文传输
cross_border_policy = "deny-by-default"
[region.sovereign]
enabled = true
local_ca = "/etc/eneros/ca-cn.crt"
local_kms = "kms://cn-east-1"
local_dns = ".grid.cn"
// 跨区访问默认被策略引擎拒绝
policy.deny(
Subject::region("cn-east-1"),
Action::Read,
Resource::region("eu-west-1").data("pii")).await?;
合规检查清单
部署前请逐项确认:
- 部署独立的
cn-region集群,数据库与对象存储位于境内 - 跨境传输策略默认拒绝,显式审批后才放行
- 任命个人信息保护负责人并公开联系方式
- 个人信息处理目的、方式、范围在
eneros.toml中显式声明 - 敏感个人信息(如用电行为)单独同意流程
- 数据保留期限到期自动删除并记录审计
- 年度个人信息保护影响评估(PIA)并存档
- 发生或可能发生泄露时立即补救并上报网信办
- 处理活动记录自动生成并保留 ≥ 3 年
- 14 岁以下未成年人信息处理须取得监护人同意
- 自动化决策提供说明与拒绝通道
- 数据主体请求 15 个工作日内响应
- 委托处理签订协议并记录
- 向第三方提供前进行单独同意
- 关键信息基础设施运营者数据本地化
- 跨境传输达 100 万人须向网信办申报
- 员工年度培训记录归档
- 隐私政策使用中文清晰表述