mega icon indicating copy to clipboard operation
mega copied to clipboard

[r2cn] 从 monorepo 仓库读取到每一层级的 Cedar 配置,回显到 CL 的 reviewers 列表

Open benjamin-747 opened this issue 1 month ago • 5 comments

[任务] 从 monorepo 仓库读取到每一层级的 Cedar 配置,回显到 CL 的 reviewers 列表

[任务分值] 30 分

[背景描述]

当前 Mega 系统 已经集成了 Cedar 策略引擎,用于实现基于策略的访问控制和审批规则。 在集成前,CL(Change List)的 reviewers 逻辑主要由用户在 UI 中手动指定,缺乏标准化的权限与规则来源。

在引入 Cedar 后,我们希望能让 代码仓库自身携带权限策略文件(如 .cedar 文件), 实现类似于 “代码即策略(Policy-as-Code)” 的机制,让审批流程能随仓库结构和代码变化而动态调整。

/ (根)
├── service_a/
│   ├── .cedar
│   └── src/...
├── service_b/
│   ├── submodule/
│   │   └── .cedar
│   └── src/...
└── common/

系统应能从对应 CL 涉及的目录中读取每一层的 Cedar 配置文件,并根据策略内容解析出应参与审核的人员列表(reviewers),在 UI 中自动展示。

[需求描述]

  1. Cedar 文件加载机制 • 当 CL 创建时,Mega 后端根据该 CL 涉及的文件路径: • 从变更文件路径的上层目录开始逐级查找 .cedar 文件; • 直到仓库根目录或无更多配置文件为止; • 累积这些策略文件并进行合并解析; • 读取方式可通过已有的 git tree/blame 模块,从对应 commit 获取文件内容(支持 tag / branch)。

  2. 策略解析 • Cedar 文件中包含的策略可定义 reviewer 角色,例如:

    permit(action == "code:review", principal, resource)
        when { resource.path.startsWith("service_a/") }
        to ["alice", "bob"];
    

    • 系统应能提取出策略中涉及的 principal(用户或角色)信息。

  3. 与 CL 关联 • 解析得到的 reviewers 列表应: • 存储在数据库中(cl_reviewers 表); • 并在前端 CL 页面回显; • 与手动添加的 reviewers 区分(例如标识为“由策略推荐”)。

  4. 策略合并规则 • 下层目录的 .cedar 文件优先级高于上层; • 如果多层策略文件都定义了相同的路径 reviewer,后者覆盖前者; • 允许多策略叠加(同一 CL 可以汇总多个 reviewer)。

  5. 前端展示 • CL 页面 reviewers 区域新增 “System Required” 标签; • System Required 的 reviewers 无法被移除。

[代码标准]

  1. 所有 PR 提交必须签署 Signed-off-by 和 使用 GPG 签名,即提交代码时(使用 git commit 命令时)至少使用 -s -S 两个参数,参考 Contributing Guide
  2. 所有 PR 提交必须通过 GitHub Actions 自动化测试,提交 PR 后请关注 GitHub Actions 结果;
  3. 代码注释均需要使用英文;

[PR 提交地址] 提交到 mega 仓库的 main 分支 `` 目录;

[开发指导]

  1. 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;

[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。

  1. Quanyi Ma [email protected]
  2. Tianxing Ye [email protected]

[备注]

  1. 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务r2cn 开源实习计划 - 学生注册与审核

benjamin-747 avatar Nov 13 '25 02:11 benjamin-747

任务创建成功。

r2cn-bot[bot] avatar Nov 13 '25 02:11 r2cn-bot[bot]

/request-assign

AidCheng avatar Nov 13 '25 09:11 AidCheng

认领成功:等待导师审核,请及时联系导师进行审核。

r2cn-bot[bot] avatar Nov 13 '25 09:11 r2cn-bot[bot]

/intern-approve

benjamin-747 avatar Nov 13 '25 10:11 benjamin-747

认领审核成功:已将该任务分配给学生。

r2cn-bot[bot] avatar Nov 13 '25 10:11 r2cn-bot[bot]