Skip to content

数据隔离

数据隔离

为保障用户知识资产安全,构建一个支持数据隔离的知识库与 RAG(检索增强生成)系统,满足不同层级用户的访问权限需求,实现数据的安全共享和隔离。权限层级划分(个人,部门,所有人)

权限模型设计

权限级别权限说明权限范围
个人(PERSONAL)仅本人可见当前用户本人
部门(DEPARTMENT)本部门成员可见当前用户所属部门所有成员
所有人(ALL)全体用户可见系统内所有用户

数据库模型设计

1.知识库文档结构

1.1 关于数据隔离的核心字段
字段说明
documentId文档唯一标识
ownerUserId文档创建者/归属用户 ID
ownerDepartmentId文档所属部门 ID
accessLevel访问级别(PERSONAL/DEPARTMENT/ALL)
content文档原文内容| URL(本地 Minio)

1.2 向量数据库元数据设计

索引文档内容生成的向量,存储于向量数据库(如 Chroma)。每条向量附带元数据:

n userId

n departmentId

n accessLevel

2 数据隔离与访问控制

2.1 文档访问控制

n 个人级别:仅当 ownerUserId 与当前用户 ID 匹配时, 当前用户可访问。

n 部门级别:当 ownerDepartmentId 与当前用户所属部门匹配,并且文档的访问级别允许部门访问时,用户可访问。

n 所有人级别:访问级别为“所有人”的文档对所有用户开放。

2.2 向量检索访问控制

向量数据库查询支持元数据过滤,检索时根据当前用户的身份构造元数据过滤条件,如:

{"accessLevel": "ALL"},
{"accessLevel": "DEPARTMENT", "departmentId": "当前用户所属部门ID"},
{"accessLevel": "PERSONAL", "userId": "当前用户ID"}