MemoraX Code 在团队协作中的记忆权限分离

文章导读
如果团队共用一个 MemoraX Code 实例,同时要求不同成员只能看到自己的记忆,又要保留公共项目知识,核心做法是把权限控制从“实例级”下沉到“令牌 + 空间 + 成员映射”。MemoraX Code 的访问控制不是默认全员可见,通常需要先确认当前部署版本是否开放了本地策略配置,再按成员维度拆分令牌和空间。这个过程不需要改业务代码,但要改配置和请求头,并且要专门做一次越权验证。
📋 目录
  1. 了解 MemoraX Code 的默认权限模型
  2. 为每位成员创建独立访问令牌
  3. 配置共享项目空间和私有空间
  4. 调试请求头中的权限上下文
  5. 验证越权访问被拒绝
A A

如果团队共用一个 MemoraX Code 实例,同时要求不同成员只能看到自己的记忆,又要保留公共项目知识,核心做法是把权限控制从“实例级”下沉到“令牌 + 空间 + 成员映射”。MemoraX Code 的访问控制不是默认全员可见,通常需要先确认当前部署版本是否开放了本地策略配置,再按成员维度拆分令牌和空间。这个过程不需要改业务代码,但要改配置和请求头,并且要专门做一次越权验证。

适用场景:多人共用同一实例,需要私有记忆与公共项目知识隔离。操作动作:生成独立令牌、创建私有与共享空间、编辑成员映射、用请求头携带令牌。验证方式:用低权限令牌访问高权限记忆资源,检查是否返回 403。风险边界:权限分离只控制 MemoraX Code 应用层访问,不替代数据库加密和网络传输安全,具体字段名需结合实际环境确认。

了解 MemoraX Code 的默认权限模型

先不要急着配置,确认实例默认策略是“允许所有登录用户读取全部记忆”还是“按空间隔离”。不同部署方式差异很大:企业版一般自带空间隔离,本地版往往默认开放。建议打开应用目录下的访问控制文档或配置模板,找出三个关键字段:令牌字段、空间字段、成员映射字段,并记录在本地。这个步骤决定了后续配置是只加策略,还是需要同时调整实例启动参数。

判断是否需要自定义,可以看一个简单现象:成员 A 能否在界面上直接搜到成员 B 创建的私有记忆。如果能看到,说明默认模型是全局可见,必须按本页步骤调整;如果看不到,也要继续做令牌分离,避免成员用他人令牌越权。

为每位成员创建独立访问令牌

身份区分依赖令牌,不能所有人共用同一个管理员 token。MemoraX Code 一般提供命令行生成令牌的方式,常用的参数包括令牌名称、过期时间和关联用户。可以用类似下面的命令为成员生成令牌:

memorax token create `--user` alice `--expires-in` 30d `--scope` private:read,private:write,shared:read,shared:write

建议为每个成员生成单独令牌,并在令牌描述里写清用途。到期时间根据团队节奏来定:短期项目可以设 30 天,长期固定成员可以设 180 天。不要把到期时间设为永久,至少保留一个续期提醒。

这里需要替换的是用户名、有效期和作用域列表。作用域是后续权限判断的重要依据,如果当前版本不支持细分作用域,至少也要做到每个用户一个令牌,方便单独吊销。

MemoraX Code 在团队协作中的记忆权限分离

配置共享项目空间和私有空间

空间是隔离的基础单元。建议按两层建立空间:一个是共享项目空间,所有成员可读写;另一个是私有空间,命名带成员标识,只允许本人访问。先打开 MemoraX Code 配置文件,找到类似 spaces 和 members 的映射关系,然后按下面的模板修改:

spaces:
  shared-project:
    name: "公共项目"
    access: shared
  private-alice:
    name: "Alice 私有"
    access: private
  private-bob:
    name: "Bob 私有"
    access: private

members:
  - user: alice
    token: "token-alice-value"
    spaces: [shared-project, private-alice]
  - user: bob
    token: "token-bob-value"
    spaces: [shared-project, private-bob]

把上面的示例替换成实际用户名和令牌值。注意每个成员只能出现在自己有权限的空间里,不要把私有空间互相加入。如果配置格式是数组或 JSON,保持一致。修改后重启服务或调用配置重载接口,使映射生效。

这一步完成后,基础隔离已经建立:Alice 的私有空间只有 Alice 能看到,但共享空间所有人都能看到。需要验证的是,MemoraX Code 在读取记忆时,是否会把空间归属和令牌用户绑定。

调试请求头中的权限上下文

所有权限判断最终都要靠请求头里的令牌。MemoraX Code 一般使用 Authorization 头传入 token,也可能要求额外的 X-MemoraX-Space 头指定空间。建议先查一下实际接收的请求头字段,然后用 curl 模拟不同身份访问同一个资源,看返回是否不同。下面是一个通用调试流程:

MemoraX Code 在团队协作中的记忆权限分离
# 访问共享空间,使用 Alice 的令牌
curl -H "Authorization: Bearer token-alice-value" \
     -H "X-MemoraX-Space: shared-project" \
     https://memorax.example.com/api/v1/memories/123

# 访问同一资源,使用 Bob 的令牌
curl -H "Authorization: Bearer token-bob-value" \
     -H "X-MemoraX-Space: shared-project" \
     https://memorax.example.com/api/v1/memories/123

如果两个请求都返回同一份记忆内容,说明令牌至少被正确识别;如果 Bob 返回 403,说明权限上下文已经生效。继续用 Alice 的令牌访问 private-bob 空间:

curl -H "Authorization: Bearer token-alice-value" \
     -H "X-MemoraX-Space: private-bob" \
     https://memorax.example.com/api/v1/memories/456

这一步能快速看出空间隔离是否真的绑定了用户。返回内容如果是 Alice 自己的记忆,说明空间字段被忽略了,需要检查服务端是否强制校验空间归属。

验证越权访问被拒绝

最后一步是模拟越权场景。用一个低权限令牌尝试读取高权限项目记忆,这里的关键是确认返回状态码。低权限令牌可以是新生成的临时 token,只给读 public 空间权限,然后去访问 shared-project 的私有记忆;或者用一个成员的令牌访问另一个成员的私有空间。预期结果是 403,但也要区分 401 和 403 的含义:401 表示令牌无效,403 表示令牌有效但权限不足。

# 低权限 token 尝试读取高权限项目记忆
curl -H "Authorization: Bearer token-readonly" \
     -H "X-MemoraX-Space: shared-project" \
     https://memorax.example.com/api/v1/memories/789

如果返回 403,说明隔离有效;如果返回 200,说明配置有遗漏,重点检查 members 映射是否错误地给了低权限 token 太宽的空间列表。另外可以尝试不带 X-MemoraX-Space 头访问,看服务端是否使用默认空间,这种默认行为也可能造成越权。

做完这些验证后,可以把测试结果记录下来,作为后续成员变更时的回归检查项。权限分离不是一次配置就结束,新增成员或调整空间时,要重新走一遍低权限 token 访问流程,确保 403 仍然成立。