GDPR 与个保法合规数据治理 (GDPR & Data Privacy Governance)
在面向全球化运营与处理大量自然人敏感信息的现代企业系统中,合规不再是一句口号,而是直接面临巨额监管罚单的物理架构约束(如欧盟 GDPR、中国《个人信息保护法》与《数据安全法》)。
BitzOrcas.Platform.Gdpr 为框架提供了原生的合规数据生命周期治理中心。它标准化实现了自然人主体访问请求(Subject Access Request, SAR)、被遗忘权(Right to be Forgotten)安全擦除、历史审计日志假名化(Pseudonymization)以及租户数据保留期自动清理管线。
1. 核心合规用例流转
数据主体权利行使全流程受到审计保护与审批门禁约束:
2. 被遗忘权与物理擦除实战
当自然人行使“被遗忘权”且经法务合规审核通过后,系统严禁仅作逻辑软删除(IsDeleted = 1 依然留存明文隐私),必须执行物理碎纸或不可逆覆盖(Cryptographic Shredding):
using System.Collections.Generic;using System.Threading;using System.Threading.Tasks;using BitzOrcas.Application.Authorization;using BitzOrcas.Domain.Abstractions;using BitzOrcas.Domain.Results;using BitzOrcas.Endpoint.Attributes;using BitzOrcas.Platform.Gdpr.Contracts;using Mediator;
namespace BitzOrcas.Platform.Gdpr.Application.Commands;
/// <summary>/// 执行自然人个人信息合规物理擦除命令/// </summary>[GenerateEndpoint(HttpRoute.Post, "/api/privacy/erasure/{id}/execute", Tag = "Privacy")]public sealed record ExecuteRightToBeForgottenCommand( string RequestId, string DpoApprovalTicketNumber) : ICommand<Result>, IAuthorizedRequest{ /// <summary> /// 受保护资源 privacy 模块 erasure 资源 /// </summary> public ResourceDescriptor Resource { get; } = new(GdprPermissions.Module, GdprPermissions.ErasureResource);
/// <summary> /// 授权动作管理 /// </summary> public AuthorizationAction Action { get; } = AuthorizationAction.Manage;}
/// <summary>/// 物理擦除处理器/// </summary>public sealed class ExecuteRightToBeForgottenCommandHandler( IGdprStore store, IEnumerable<ISubjectDataErasureContributor> erasureContributors, IAppClock clock) : ICommandHandler<ExecuteRightToBeForgottenCommand, Result>{ public async ValueTask<Result> Handle( ExecuteRightToBeForgottenCommand command, CancellationToken cancellationToken) { // 1. 获取已通过合规审批的擦除工单记录 var request = await store.GetDsrByIdAsync(command.RequestId, cancellationToken); if (request is null) { return Result.Failure(GdprErrors.ErasureNotFound); }
// 2. 依次调用各业务模块注册的擦除贡献器(跨模块物理覆盖与假名化脱敏) foreach (var contributor in erasureContributors) { var contributorResult = await contributor.ExecuteErasureAsync(request.SubjectId, cancellationToken); if (contributorResult.IsFailure) { return contributorResult; } }
// 3. 将工单状态流转为已完成,保留合规流水证据链 request.StatusCode = GdprErasureStatus.Completed.Value; request.CompletedAt = clock.UtcNow; var updateSuccess = await store.TryUpdateDsrAsync(request, GdprErasureStatus.Executing.Value, cancellationToken);
return updateSuccess ? Result.Success() : Result.Failure(GdprErrors.ErasureAlreadyClosed); }}3. 主体访问请求 (SAR) 导出标准
根据合规要求,企业必须在法定周期内(如 30 天)向申请人提供结构化、机器可读且受强加密保护的数据副本。
BitzOrcas.Platform.Gdpr 的打包服务收集以下维度数据并输出 AES-256 加密的 ZIP 包:
- 身份资料:账号基本信息、登录历史、绑定的安全凭据元数据;
- 业务资产:该用户在各模块创建的工单、合同、上传的文件清单;
- 授权记录:用户历次勾选的隐私协议版本与同意时间戳。
4. 相关架构决策与进阶推荐 (Related Deep Dives)
- PII 加密机制:EF Core 同构集成与 PII 字段拦截器
- 敏感日志治理:审计日志分表与数据安全规范
- 决策溯源:ADR 0002:生产就绪门禁与质量守卫