项目级数据范围定义:项目生命周期、项目内数据隔离、跨项目数据共享边界

1. 边界定义

项目级数据范围位于部门级和子项目级之间,是权限粒度最常聚焦的执行单元。边界受项目生命周期动态调整,并在跨项目协作时产生共享边界。

  • 时间边界:从项目立项、开发/实施、运维、到项目终止的数据生命周期。
  • 空间边界:项目内所有数据资产(数据库、文件、消息队列、配置)的集合。
  • 协作边界:与外部项目共享的数据集及权限策略的交叉点。
边界类型定义典型问题
时间边界项目从启用到停用的时间段项目终止后未清理残留数据
空间边界项目拥有的物理/逻辑存储范围项目间误写对方存储
协作边界跨项目的数据共享接口共享粒度过粗导致越权

2. 分层架构

项目级数据隔离采用三层结构:

  1. 存储层:物理或逻辑分离(独立数据库/Schema/表前缀)。
  2. 访问层:基于策略引擎的强制访问控制(MAC),按项目标签过滤请求。
  3. 共享层:提供受控的跨项目数据交换区域,支持临时授权、视图或数据复制。
最佳实践:推荐使用逻辑隔离(如每个项目一个PostgreSQL Schema)配合共享层的数据网关,兼顾安全与运维效率。

3. 组件职责

组件职责部署位置
项目数据仓库存储项目内所有结构化和非结构化数据每个项目独立Schema/集群
权限策略引擎根据项目上下文(项目ID、角色)裁决数据访问集中式或边车代理
共享数据网关管理跨项目授权、数据脱敏、审计日志网络边缘(API Gateway侧)
生命周期管理器项目创建时初始化数据库,终止时清理数据并撤销授权控制平面

4. 数据流与控制流

  • 数据流:用户请求 → 权限策略引擎(校验项目ID) → 项目数据仓库(返回数据)。跨项目共享时,数据流经共享网关执行脱敏和行级过滤。
  • 控制流:项目创建 → 自动化创建Schema、角色、配额;项目启用共享 → 设置共享边界策略;项目终止 → 销毁数据并回收权限。
  • 信任链路:项目内部服务间通过内部Token(包含项目ID)互信;跨项目通信必须通过共享网关,网关验证双方项目ID并执行授权策略。

5. 选型权衡

隔离方案优势劣势适用场景
独立数据库物理隔离,安全性最高运维成本高,资源利用率低金融、医疗等强监管
Schema隔离逻辑隔离,管理方便需依赖数据库多租户能力大多数企业级项目
表前缀/行级过滤共享实例,无需额外创建行级过滤性能开销大,不安全轻量级、内部试验项目
风险点:
  • 生命周期失效:项目终止后未彻底清理,导致数据泄露或残留授权。
  • 共享边界误配:跨项目授权过大,导致A项目可读取B项目核心数据。
  • 性能瓶颈:共享网关成为单点故障或吞吐瓶颈。
  • 策略冲突:项目内隔离策略与共享策略叠加产生死锁或异常行为。

6. 落地步骤

  1. 定义项目标识:统一使用UUID或业务编码作为项目ID,注入所有数据写入上下文。
  2. 设计存储结构:选择Schema隔离,为每个项目创建独立Schema,应用层通过连接字符串或JDBC中的前缀路由。
  3. 实现权限策略:基于RBAC + 项目ID的ABAC规则,确保所有数据库查询自动附加 WHERE project_id = ? 条件。
  4. 建立共享网关:配置共享数据暴露为REST API View,网关校验请求者项目ID和目标项目ID的授权关系。
  5. 自动化生命周期:通过CI/CD Pipeline在项目创建时执行初始化脚本,项目终止时执行清理脚本并撤销所有共享策略。
-- 初始化项目时的SQL示例(PostgreSQL)
CREATE SCHEMA IF NOT EXISTS project_abc;
GRANT USAGE ON SCHEMA project_abc TO app_role;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA project_abc TO app_role;
-- 跨项目共享视图示例
CREATE VIEW shared_data_view AS
SELECT * FROM project_abc.orders WHERE is_public = true;

7. 验收标准

验收项验证方法通过条件
项目内数据隔离使用项目A的Token查询项目B的Schema返回403或空结果
数据生命周期终止项目后检查Schema及所有关联共享授权Schema和授权记录均被删除
跨项目共享边界从项目A通过共享网关查询项目B的公开数据只能看到标记为public的行
性能基准在共享网关压力下模拟1000qps延迟<50ms,无错误
项目级数据范围与隔离结构图 项目创建 开发/实施 运维 项目终止 项目内部隔离区 用户请求 权限策略引擎 项目数据仓库 (Schema) 跨项目共享边界 共享数据网关 脱敏/行级过滤 审计日志 项目B 公开数据视图 生命周期管理器控制项目创建/终止,同时移除共享网关中的授权策略 生命周期管理器