# Nullify **安全。透明。已清除。** Nullify 是一个开源、模块化的数据保留、删除和生命周期治理平台。它提供了一个集中式框架,用于发现数据、评估保留策略、执行受控的生命周期操作,并在分布式数据环境中维护可验证的审计记录。 Nullify 围绕规范优先的架构设计。核心模块提供数据生命周期治理所需的基础能力,而可选插件模块则通过额外的连接器、合规框架、智能、集成、存储系统和部署能力扩展 Nullify。 ## 规范 Nullify 为集中式数据生命周期管理定义了一种开源架构。 该规范建立在以下原则之上: - 集中式策略协调 - 分布式数据源支持 - 策略驱动的保留和删除 - 明确的授权和审批 - 试运行和验证工作流 - 不可变且可验证的审计 - 数据血统和来源 - 模块化连接器和集成 - 破坏性操作的人工监督 - 默认安全执行 - 厂商中立架构 - 本地、云、混合和联合部署 - 可扩展的插件架构 - 透明的策略评估 - 可复现的生命周期决策 Nullify 不要求组织将其数据迁移到专有的集中式存储库中。相反,该系统在现有数据环境中协调生命周期策略和操作。 ## 架构 Nullify 分为两个主要的架构层: 1. 核心模块 2. 可选插件模块 核心模块包含运行 Nullify 所需的基础功能。可选插件提供专门功能,同时不会使基础平台依赖于特定的数据库、云提供商、合规框架、AI 系统、通知平台或基础设施环境。 ### 核心架构 主要生命周期流程为: **发现 → 分类 → 策略评估 → 审批 → 调度 → 执行 → 验证 → 审计** 每个阶段都由一个可独立维护的核心模块表示。 ## 核心模块 ### 1. 数据发现模块 数据发现模块识别并清点由 Nullify 管理的数据资源。 功能包括: - 数据源注册 - 资源发现 - 数据集和对象清单 - 元数据收集 - 数据所有权元数据 - 创建和修改时间戳 - 访问元数据 - 存储位置跟踪 - 资源状态跟踪 - 数据源健康监控 - 发现调度 该模块为下游生命周期策略提供所需的清单,而无需将底层数据复制到 Nullify 中。 ### 2. 数据分类模块 数据分类模块为已发现的资源分配结构化元数据。 功能包括: - 数据类别分配 - 敏感度分类 - PII 分类 - 财务数据分类 - 健康数据分类 - 内部和公开分类 - 用户自定义分类 - 分类置信度 - 分类历史 - 手动分类 - 分类覆盖 分类结果成为策略评估过程的输入。 ### 3. 策略引擎模块 策略引擎是 Nullify 的核心决策组件。 功能包括: - 保留策略 - 删除策略 - 归档策略 - 匿名化策略 - 法律保留规则 - 例外规则 - 策略优先级 - 策略继承 - 策略版本控制 - 策略激活和过期 - 策略模拟 - 策略冲突检测 - 策略验证 - 策略回滚 策略应是声明式的且机器可读。 Nullify 应支持多种策略格式,同时维护规范化的内部策略模型。 ### 4. 生命周期决策模块 生命周期决策模块将策略评估转换为明确的生命周期决策。 支持的决策包括: - 保留 - 审查 - 归档 - 匿名化 - 删除 - 法律保留 - 例外 - 延迟 每个决策都应包含足够的元数据,以说明: - 做出了什么决策 - 影响了哪个资源 - 哪个策略产生了该决策 - 使用了哪个策略版本 - 决策何时创建 - 决策何时应执行 - 是否需要审批 ### 5. 审批与人工监督模块 Nullify 不应假设每个破坏性操作都可以完全自动化。 审批模块提供受控的人工监督。 功能包括: - 审批队列 - 多人审批 - 基于角色的审批 - 审批委托 - 审批过期 - 拒绝工作流 - 升级工作流 - 紧急保留 - 手动覆盖 - 审批历史 组织可以配置哪些操作需要人工审批,哪些可以自动执行。 ### 6. 调度模块 调度模块管理生命周期操作的执行时间。 功能包括: - 计划删除 - 计划归档 - 计划匿名化 - 批处理 - 优先级队列 - 维护窗口 - 资源感知调度 - 重试调度 - 依赖感知执行 - 工作负载平衡 - 执行限流 调度应将执行某项操作的决策与该操作的实际执行分离。 ### 7. 操作执行模块 操作执行模块对已注册的数据源执行经批准的生命周期操作。 支持的生命周期操作包括: - 删除 - 归档 - 匿名化 - 编辑 - 隔离 - 移动 - 过期 - 撤销访问 功能包括: - 试运行执行 - 执行前验证 - 执行确认 - 支持事务感知的操作(在支持的情况下) - 重试处理 - 失败检测 - 部分失败跟踪 - 执行状态 - 执行回执 - 幂等执行 - 安全执行控制 破坏性操作应根据已配置的策略要求明确授权。 ### 8. 验证模块 验证模块确认生命周期操作是否成功完成。 功能包括: - 删除验证 - 归档验证 - 匿名化验证 - 来源确认 - 副本验证 - 重试验证 - 失败操作检测 - 残留数据检测 - 验证报告 验证应区分: - 已请求 - 已授权 - 已调度 - 已执行 - 已验证 - 已失败 - 部分完成 ### 9. 审计与证据模块 审计与证据模块记录每个重要系统操作的完整生命周期。 功能包括: - 不可变审计事件 - 加密事件完整性 - 策略决策记录 - 审批记录 - 执行记录 - 验证记录 - 用户活动记录 - 配置历史 - 策略历史 - 审计导出 - 证据包 - 监管链记录 审计记录应能重建生命周期决策发生的原因以及之后发生的情况。 ### 10. 数据血统模块 数据血统模块跟踪数据资源之间的关系。 功能包括: - 来源血统 - 目标血统 - 转换血统 - 复制关系 - 复制关系 - 派生数据关系 - 父子关系 - 数据移动历史 - 生命周期传播 血统使 Nullify 能够识别可能也需要保留、归档、匿名化或删除的相关资源。 ### 11. 访问控制模块 访问控制模块保护管理和生命周期操作。 功能包括: - 基于角色的访问控制 - 基于属性的访问控制 - 权限管理 - 资源级权限 - 操作级权限 - 审批权限 - 管理分离 - 会话管理 - 身份验证集成 - 授权审计 破坏性操作应使用最小权限授权。 ### 12. 通知模块 通知模块提供系统和生命周期通知。 功能包括: - 策略违规警报 - 执行失败警报 - 审批通知 - 计划操作通知 - 验证失败 - 数据源故障 - 合规警报 - 管理通知 核心模块应公开通知接口,而投递机制保持可替换。 ### 13. API 模块 API 模块提供对 Nullify 的程序化访问。 功能包括: - REST API - GraphQL API - 身份验证 - 授权 - 资源管理 - 策略管理 - 生命周期管理 - 审计查询 - 报告 - 插件管理 - 管理操作 API 应公开稳定的版本化接口。 ### 14. 仪表盘模块 仪表盘提供主要的管理界面。 功能包括: - 数据清单 - 保留状态 - 待处理操作 - 策略状态 - 审批队列 - 执行状态 - 验证状态 - 审计历史 - 策略冲突 - 合规指标 - 系统健康 - 插件状态 仪表盘应提供可见性,而无需用户直接与底层数据库或执行系统交互。 ### 15. 报告模块 报告模块将生命周期数据转换为运营和合规报告。 功能包括: - 保留报告 - 删除报告 - 策略报告 - 审计报告 - 例外报告 - 法律保留报告 - 执行报告 - 验证报告 - 数据清单报告 - 合规证据包 支持的导出格式应包括: - JSON - CSV - PDF - 结构化机器可读证据格式 ### 16. 多租户模块 多租户模块允许 Nullify 在多个组织环境中运行。 功能包括: - 组织隔离 - 租户特定策略 - 租户特定管理员 - 租户特定审计记录 - 租户特定连接器 - 租户特定保留规则 - 租户特定报告 - 租户级配置 租户边界应在授权和数据访问层强制执行。 ### 17. 联合模块 联合模块协调多个 Nullify 安装实例。 功能包括: - 多集群协调 - 联合策略 - 分布式执行 - 区域生命周期执行 - 跨环境审计协调 - 集中可见性 - 本地执行 - 联合验证 联合应允许组织保留对数据的本地控制,同时集中协调生命周期治理。 ## 可选插件模块 插件扩展 Nullify,而不会扩大核心平台的依赖要求。 插件应使用已记录的接口和 API,并且应可独立安装、升级、启用和禁用。 ### 数据源插件 可选连接器可包括: - PostgreSQL - MySQL - MariaDB - Microsoft SQL Server - Oracle Database - MongoDB - Redis - Elasticsearch - OpenSearch - Snowflake - BigQuery - Databricks - Apache Cassandra - S3 兼容存储 - Google Cloud Storage - Azure Blob Storage - 网络文件系统 - 对象存储系统 - 自定义 REST API ### 云提供商插件 可选集成可包括: - AWS - Microsoft Azure - Google Cloud - Cloudflare - DigitalOcean - 其他 S3 兼容基础设施 云插件应保持可选,以便 Nullify 保持厂商中立。 ### 合规插件 可选的合规策略包可包括: - GDPR - CCPA - CPRA - HIPAA - GLBA - FERPA - PCI DSS - SOX - 区域性隐私要求 - 组织特定合规框架 合规插件应提供策略模板和映射,而不是将法规要求硬编码到核心引擎中。 ### AI 与智能插件 AI 功能应保持可选。 可能的插件包括: - 敏感数据分类 - PII 检测 - 文档分类 - 实体识别 - 保留建议 - 策略冲突分析 - 策略优化 - 异常检测 - 删除失败分析 - 合规辅助 - 自然语言策略创建 AI 生成的建议应始终受策略控制和人工监督的约束。 ### 工作流插件 可选工作流集成可包括: - Apache Airflow - Dagster - Temporal - Kubernetes Jobs - GitLab CI/CD - 其他工作流编排平台 ### 事件总线插件 可选事件集成可包括: - Apache Kafka - RabbitMQ - NATS - Redis Streams - MQTT - 云事件系统 ### 身份插件 可选身份验证和身份集成可包括: - LDAP - Active Directory - OAuth - OpenID Connect - SAML - 企业身份提供商 ### 通知插件 可选通知集成可包括: - 电子邮件 - Slack - Microsoft Teams - Webhooks - PagerDuty - 其他通知服务 ### 存储插件 Nullify 可支持用于审计记录、证据、元数据和系统状态的可选存储后端。 可能的插件包括: - PostgreSQL - SQLite - MariaDB - S3 兼容对象存储 - MinIO - 分布式数据库 - 企业存储系统 ### 部署插件 可选部署模块可提供: - Docker - Docker Compose - Kubernetes - Helm - Terraform - Ansible - 云部署模板 ## 安全架构 安全是核心要求,而非可选插件。 Nullify 应提供: - 传输中加密 - 静态加密 - 最小权限授权 - 安全凭据处理 - 密钥管理集成 - 身份验证 - 授权 - 审计日志 - 加密审计完整性 - 速率限制 - API 安全 - 管理分离 - 安全插件隔离 - 配置验证 - 安全默认值 Nullify 绝不应要求将明文凭据存储在应用程序配置中。 ## 安全删除架构 由于删除具有潜在破坏性,Nullify 将生命周期决策与执行分离。 推荐的生命周期为: 1. 发现资源 2. 分类资源 3. 评估适用策略 4. 生成生命周期决策 5. 检查例外和法律保留 6. 在需要时请求审批 7. 调度操作 8. 执行操作 9. 验证结果 10. 记录证据 11. 更新生命周期状态 12. 报告结果 试运行模式应允许组织在执行破坏性操作之前评估预期结果。 ## 法律保留与例外 Nullify 必须支持阻止自动删除的生命周期例外。 示例包括: - 法律保留 - 调查 - 活跃争议 - 监管保全要求 - 安全调查 - 组织例外 - 临时保留延期 根据已配置的策略层级,法律保留或已批准的例外应优先于普通删除策略。 ## 策略冲突检测 Nullify 应识别策略产生冲突生命周期决策的情况。 示例包括: - 删除与保留冲突 - 删除与法律保留冲突 - 归档与删除冲突 - 保留期限冲突 - 组织策略冲突 - 司法管辖区策略冲突 系统应解释冲突并识别哪些策略导致了该冲突。 ## 透明度 每个重要的生命周期决策都应可解释。 Nullify 应提供包含以下内容的决策记录: - 资源 - 数据分类 - 适用策略 - 策略版本 - 策略评估 - 例外 - 审批要求 - 最终决策 - 执行状态 - 验证状态 - 相关审计事件 这创建了从策略定义到生命周期结果的可审计链条。 ## 技术架构 Nullify 旨在规范层面保持技术中立。 参考实现可使用: - Python - FastAPI - React - PostgreSQL - Open Policy Agent - Apache Airflow - Dagster - Docker - Kubernetes - MinIO - Apache Kafka - RabbitMQ - NATS 这些技术是实现选择,而非 Nullify 规范的强制性要求。 ## 模块化设计 Nullify 遵循模块化架构,以便组织仅部署其所需的功能。 核心平台应提供: - 发现 - 分类 - 策略评估 - 生命周期决策 - 审批 - 调度 - 执行 - 验证 - 审计 - 血统 - 访问控制 - 通知 - API - 仪表盘 - 报告 - 多租户 - 联合 可选功能应通过插件交付。 该架构防止核心平台与特定厂商、云提供商、数据库、AI 系统、合规框架或基础设施平台紧密耦合。 ## 插件要求 插件应: - 使用已记录的接口 - 维护独立配置 - 声明依赖 - 提供健康检查 - 支持启用和禁用操作 - 提供清晰的错误报告 - 遵守 Nullify 授权 - 发出适当的审计事件 - 避免绕过核心策略评估 - 保持与受支持 API 版本的兼容性 - 包含文档 - 包含测试 插件不得规避生命周期策略或授权控制。 ## 可观测性 Nullify 应公开以下操作遥测: - 数据发现 - 策略评估 - 队列深度 - 计划操作 - 执行性能 - 执行失败 - 验证失败 - API 性能 - 插件健康 - 数据源健康 - 系统健康 可选的可观测性插件可集成外部监控和日志平台。 ## 可靠性 Nullify 应支持: - 重试 - 幂等操作 - 故障恢复 - 队列持久化 - 执行检查点 - 健康检查 - 服务恢复 - 备份和还原 - 灾难恢复 - 部分失败处理 失败的删除绝不应被静默报告为成功。 ## 部署模型 Nullify 应支持: - 本地开发 - 单服务器部署 - Docker 部署 - Kubernetes 部署 - 本地部署 - 云部署 - 混合部署 - 多区域部署 - 联合部署 组织应能够在不依赖专有托管服务的情况下运行 Nullify。 ## 功能路线图 ### 核心 - [ ] 数据发现 - [ ] 数据分类 - [ ] 策略引擎 - [ ] 生命周期决策 - [ ] 审批工作流 - [ ] 调度 - [ ] 操作执行 - [ ] 试运行模式 - [ ] 执行验证 - [ ] 审计与证据 - [ ] 数据血统 - [ ] RBAC - [ ] ABAC - [ ] 通知 - [ ] REST API - [ ] GraphQL API - [ ] 仪表盘 - [ ] 报告 - [ ] 多租户 - [ ] 联合 ### 安全 - [ ] 传输中加密 - [ ] 静态加密 - [ ] 安全凭据管理 - [ ] 密钥管理集成 - [ ] 加密审计完整性 - [ ] 最小权限授权 - [ ] 管理分离 - [ ] 安全插件架构 ### 治理 - [ ] 策略版本控制 - [ ] 策略回滚 - [ ] 策略模拟 - [ ] 策略冲突检测 - [ ] 法律保留 - [ ] 生命周期例外 - [ ] 策略优先级 - [ ] 保留建议 - [ ] 合规报告 ### 可靠性 - [ ] 幂等执行 - [ ] 重试管理 - [ ] 故障恢复 - [ ] 执行检查点 - [ ] 健康监控 - [ ] 备份和还原 - [ ] 灾难恢复 ### 可选插件- [ ] SQL 连接器 - [ ] NoSQL 连接器 - [ ] 对象存储连接器 - [ ] 云提供商连接器 - [ ] 合规策略包 - [ ] AI 分类 - [ ] AI 合规顾问 - [ ] 工作流集成 - [ ] 事件总线集成 - [ ] 身份集成 - [ ] 通知集成 - [ ] 可观测性集成 - [ ] 附加存储后端 - [ ] 部署集成 --- ## 开源开发 Nullify 旨在作为一个社区驱动的开源项目进行开发。 贡献者可以通过以下方式参与: - 开发核心模块 - 创建插件 - 构建连接器 - 编写策略包 - 改进文档 - 创建测试 - 报告缺陷 - 提升安全性 - 开发集成 - 提出规范改进建议 模块化架构允许贡献者在不修改基础生命周期引擎的情况下扩展 Nullify,只要功能可以作为插件实现。 ## 设计目标 Nullify 的设计目标包括: - 透明而非不透明的生命周期自动化 - 策略驱动的治理而非手动流程 - 模块化架构而非单体依赖 - 供应商中立而非平台锁定 - 可验证证据而非不可验证声明 - 人工监督而非不受控自动化 - 开源可扩展性而非专有集成 - 集中治理与分布式执行 - 安全删除而非不受控销毁 --- ## 规范品牌许可(SBL) ### 标准 - 完全符合 AGPL-3.0+ 的系统 - 对网络部署强制执行 Copyleft - 必需署名: - Roxanne Ardary - https://www.roxanneardary.com/ ### 可选 - **规范品牌许可(SBL)** - 免署名的商业部署 - 定价基于规模、使用量和部署范围 - [https://roxanneardary.com/nullify/](https://roxanneardary.com/nullify/) --- ## 📄 许可证与声明要求 **Nullify** 根据 **GNU Affero 通用公共许可证 v3.0 或更高版本(AGPL-3.0+)** 发布。 贡献本项目即表示您同意您的贡献也将根据该许可证发布。 请注意以下事项: - 所有贡献必须符合 **AGPL-3.0+** 条款。 - 根据许可证的**第 7 节**,所有再分发、分支和衍生作品必须保留对: **Roxanne Ardary** 和 **[roxanneardary.com](https://www.roxanneardary.com/)** 的署名。 - Nullify 规范在保留署名的情况下可自由使用。可根据请求协商规范品牌许可。 - 项目的 **notice.md** 文件记录署名要求和贡献者致谢。 任何添加新贡献者或修改署名的更新也应更新 `notice.md`。 - 提交拉取请求时,请确保任何新文件在适用之处保留署名头。 - 本软件的网络部署版本也必须完全符合 AGPL-3.0+ 要求,包括在许可证适用时公开源代码修改。 有关完整的法律细节,请参阅 AGPL-3.0+ 许可证和项目的 `notice.md` 文件。 **Open Arsenal Hub** [https://gitlab.com/Roxanne_Ardary/open-arsenal-specs](https://gitlab.com/Roxanne_Ardary/open-arsenal-specs)