# 平台治理功能使用指南 > 版本:v1.1 > 日期:2026-08-13 > 适用版本:YG Zhilian v1.0+ > 更新说明:移除页面权限码设计,改为基于角色的简化权限模型 --- ## 目录 1. [快速入门](#1-快速入门) 2. [用户与权限管理](#2-用户与权限管理) 3. [GPU 算力分配](#3-gpu-算力分配) 4. [资源可见性与隔离](#4-资源可见性与隔离) 5. [审批流程管理](#5-审批流程管理) 6. [审计日志查询](#6-审计日志查询) 7. [常见问题与排查](#7-常见问题与排查) --- ## 1. 快速入门 ### 1.1 平台治理是什么? 平台治理是一套**多租户、多角色、细粒度权限控制**体系,用于在多人协作使用 AI 微调平台时,确保: - 每个用户只能看到和操作自己有权限的资源 - GPU 算力按需分配,避免资源争抢 - 高风险操作(删除、停止任务)有审批记录可追溯 - 所有操作都有审计日志 ### 1.2 三种内置角色 | 角色 | 能做什么 | 不能做什么 | |---|---|---| | **超级管理员 (admin)** | 全部操作;管理用户、分配 GPU、审批、查看全部资源 | — | | **操作员 (operator)** | 创建数据集/模型、训练/评测/推理任务 | 管理用户、分配 GPU、修改他人权限 | | **观察员 (viewer)** | 查看被授权的资源 | 创建或修改任何资源 | ### 1.3 入口在哪里? 所有治理功能集中在左侧导航栏的 **「系统设置」** 和 **「平台治理」** 分组下: ``` 系统设置 ├── 用户设置 ← 用户 CRUD + 角色权限 + 密码管理(仅 admin) ├── 平台性能 ← 系统监控 └── 查看日志 ← 日志查看 平台治理 ├── 租户管理 ← 组织/团队(仅 admin) ├── 项目空间 ← 项目级资源隔离(仅 admin) ├── 审批模板 ← 定义哪些操作需要审批(仅 admin) ├── 审批中心 ← 处理待审批请求(仅 admin) └── 审计日志 ← 查看所有操作记录(仅 admin) 算力资源 └── 算力节点 ← GPU 分配与管理(仅 admin) ``` > ⚠️ 以上菜单**只有 admin 用户能看到**。普通用户登录后不会出现这些入口。 > > **重要变更(v1.1)**:非 admin 用户**默认可以访问所有业务功能菜单**(模型训练、评测、推理、数据集、数据处理等),无需管理员单独分配权限。 --- ## 2. 用户与权限管理 ### 2.1 权限模型概述(v1.1 更新) 平台采用**基于角色的简化权限模型**: | 用户类型 | 可见菜单 | 说明 | |---------|---------|------| | **admin(管理员)** | **全部菜单** | 包括用户设置、平台治理、算力节点等管理功能 | | **非 admin 用户** | **除管理功能外的所有业务菜单** | 模型训练/评测/推理、数据集、数据处理、日志等 | > **核心原则**: > - 非 admin 用户**默认拥有所有业务功能的访问权限**,无需单独分配 > - 仅以下功能**仅管理员可见**: > - `用户设置`(用户 CRUD、角色管理) > - `平台治理`(租户管理、项目空间、审批模板/中心、审计日志) > - `算力节点`(GPU 分配) > > 资源级别的访问控制通过 **ACL(访问控制列表)** 实现,详见第 4 章。 ### 2.2 创建用户 **路径**:`用户设置` → `创建用户` 1. 以 admin 身份登录平台 2. 进入「用户设置」页面 3. 点击右上角「创建用户」按钮 4. 填写信息: - **账号**:登录用户名(如 `zhangsan`) - **显示名称**:如 `张三` - **密码**:初始密码(默认 `Platform@123`) - **角色**:选择 `admin` / `operator` / `viewer` 5. 点击保存 创建后用户可以立即用该账号登录,**无需额外分配页面权限**。 ### 2.3 管理员专属功能 以下功能**仅 admin 角色可见**,对其他用户隐藏: | 功能分组 | 包含菜单 | 路由前缀 | |---------|---------|----------| | 系统设置 - 用户设置 | 用户列表、创建用户、重置密码 | `/user-settings` | | 平台治理 - 租户管理 | 租户列表、配额设置 | `/tenants` | | 平台治理 - 项目空间 | 项目列表、成员管理、ACL | `/projects` | | 平台治理 - 审批模板 | 审批流程定义 | `/approval-templates` | | 平台治理 - 审批中心 | 待审批请求处理 | `/approval-instances` | | 平台治理 - 审计日志 | 操作记录查询与导出 | `/audit-logs` | | 算力资源 - 算力节点 | GPU 分配与管理 | `/compute` | ### 2.4 重置用户密码 **两种方式**: **方式一:管理员重置** 1. 在用户列表中找到目标用户 2. 点击「重置密码」 3. 输入新密码,确认 **方式二:用户自行修改** 1. 用户登录后在「用户设置」页面点击「修改密码」按钮 2. 输入旧密码 + 新密码(至少 6 位) 3. 确认修改 ### 2.5 删除用户 **路径**:`用户设置` → 用户列表 → 操作列「删除」 > ⚠️ 删除用户时会**级联清理**其所有关联数据: > - 该用户创建的数据集、基座模型、微调产物、评测任务 > - 该用户的 ACL 授权记录、GPU 分配记录 > - 该用户的审批实例、审计日志、项目成员关系、登录会话 > - **训练任务保留不删**(避免算力节点上的物理任务数据不一致) --- ## 3. GPU 算力分配 ### 3.1 为什么需要 GPU 分配? 当服务器有多张 GPU 卡(如 8×A800)时,需要指定**哪个用户能用哪张卡**: - 避免两个人同时选同一张卡导致训练冲突 - 按团队/项目隔离算力资源 - 控制每个用户的 GPU 配额 ### 3.2 分配 GPU(仅 admin) **路径**:`算力节点` → `GPU 分配` 标签页 1. 以 admin 登录,进入「算力节点」页面 2. 点击顶部的 **「GPU 分配」** 标签(只有 admin 可见) 3. 点击 **「分配 GPU」** 按钮 4. 填写: - **算力节点**:选择节点(如 `gpu-node-01`) - **GPU 序号**:卡号(0, 1, 2, ... 7) - **用户**:选择要分配给谁 5. 点「确认分配」 示例:把节点 `gpu-node-01` 的第 0、1 号卡分配给用户 `zhangsan`: ``` ┌─────────────────────────────────────┐ │ 分配 GPU [×] │ ├─────────────────────────────────────┤ │ 算力节点: [gpu-node-01 ▼] │ │ GPU 序号: [0 ▲] │ │ 用户: [zhangsan ▼] │ │ │ │ [取消] [确认分配] │ └─────────────────────────────────────┘ ``` 分配后的效果: | 用户 | 可用 GPU | |---|---| | admin | 全部 GPU(不需要显式分配) | | zhangsan | gpu-node-01 的 0、1 号卡 | | lisi | (未分配,不可用) | ### 3.3 撤销分配 在 GPU 分配列表中,每条记录右侧有「撤销」按钮,点击后确认即可移除该分配。 ### 3.4 用户视角:创建训练任务时的 GPU 选择 - **admin**:下拉列表显示全部可用 GPU - **被分配了 GPU 的用户**:只显示被分配给自己的卡 - **未分配任何 GPU 的用户**:显示提示「未分配 GPU,请联系管理员」,无法提交训练任务 --- ## 4. 资源可见性与隔离 ### 4.1 自动生效的隔离规则 无需手动配置,以下规则自动生效: | 资源类型 | admin 看到 | 普通用户看到 | |---|---|---| | **基座模型**(容器内注册的本地模型) | 全部 | **全部**(共享资源) | | **数据集** | 全部 | **自己创建的** + 被 ACL 授权的 | | **微调产物**(训练输出的模型) | 全部 | **自己训练的** + 被 ACL 授权的 | | **评测任务** | 全部 | **自己创建的** + 被 ACL 授权的 | | **推理/对比任务** | 全部 | **自己创建的** + 被 ACL 授权的 | ### 4.2 实际场景示例 假设有三个用户:**admin**、**zhangsan**(算法工程师)、**lisi**(标注员) ``` zhangsan 上传了数据集 ds_alpaca、ds_sharegpt zhangsan 训练出了模型 ft_qwen_001 lisi 上传了数据集 ds_label admin 注册了基座模型 Qwen3-1.7B ``` 各用户看到的资源: | 用户 | 数据集 | 基座模型 | 微调产物 | |---|---|---|---| | **admin** | ds_alpaca, ds_sharegpt, ds_label (3个) | Qwen3-1.7B | ft_qwen_001 | | **zhangsan** | ds_alpaca, ds_sharegpt (2个) | Qwen3-1.7B | ft_qwen_001 | | **lisi** | ds_label (1个) | Qwen3-1.7B | (无) | ### 4.3 ACL 资源授权(高级用法) 如果 zhangsan 想让 lisi 也能看到自己的数据集 `ds_alpaca`: > 此功能需要在资源详情页提供「资源授权」按钮(前端已预留接口),当前可通过 API 直接操作: ```bash # 授予 lisi 对 ds_alpaca 的读权限 curl -X PUT /modelTF/resources/dataset/ds_alpaca_id/acl \ -H "Authorization: Bearer platform-token-admin" \ -d '{ "acls": [ {"principal_type": "user", "principal_id": "lisi_id", "permission": "read"} ] }' ``` --- ## 5. 审批流程管理 ### 5.1 哪些操作会触发审批? | 操作 | 触发条件 | 处理方式 | |---|---|---| | 删除他人的数据集 | 非 admin 删除别人创建的数据集 | 创建审批实例 或 admin 直接执行 | | 删除他人的模型 | 非 admin 删除别人创建的模型 | 同上 | | 停止他人的训练任务 | 非 admin 停止别人发起的任务 | 同上 | | 归档/删除项目空间 | 存在待审批变更时 | 拒绝执行 | **核心规则**:admin 做任何操作都直接执行(旁路);普通用户操作他人资源时进入审批流程。 ### 5.2 审批流程示意 ``` 普通用户 lisi 尝试删除 zhangsan 的数据集 │ ▼ ┌───────────────────────┐ │ 后端检查:是 admin 吗? │ └──────┬────────────────┘ │ 否 ▼ ┌───────────────────────┐ │ 创建审批实例 │ │ status = pending │ │ 返回 202(待审批) │ └──────────┬────────────┘ │ ▼ ┌───────────────────────┐ │ admin 在「审批中心」看到 │ │ 这条待审批请求 │ │ 点击「通过」或「拒绝」 │ └──────────┬────────────┘ │ ┌─────┴─────┐ │ │ 通过 拒绝 │ │ ▼ ▼ 执行删除 不执行 +审计日志 +审计日志 ``` ### 5.3 管理审批 **路径**:`平台治理` → `审批中心` 1. 查看待审批列表(status=pending) 2. 点击某条记录查看详情 3. 决策:「通过」或「拒绝」 4. 决策结果自动执行对应操作并记录审计日志 **审批模板**(`平台治理` → `审批模板`):定义每种操作需要几步审批、每步谁来审。默认模板都是单步(admin 审批即可)。 --- ## 6. 审计日志查询 ### 6.1 什么是审计日志? 平台上所有**写操作**和**敏感操作**都会自动记录审计日志,包括: - 用户创建/删除/修改 - 权限变更 - GPU 分配/撤销 - 资源上传/删除 - 训练任务启动/停止 - 审批决策 ### 6.2 查询审计日志 **路径**:`平台治理` → `审计日志` 支持筛选条件: | 筛选项 | 说明 | |---|---| | 操作人 | 按用户 ID 过滤 | | 动作类型 | 如 `user.create`, `dataset.delete`, `gpu.assign` 等 | | 目标资源类型 | dataset / model / fine_tune_task 等 | | 时间范围 | 开始时间 ~ 结束时间 | ### 6.3 导出审计日志 审计日志页面底部有「导出 CSV」按钮,导出的文件包含当前筛选条件下的全部记录,可用于合规审计或问题追溯。 ### 6.4 日志保留策略 审计日志受**留存策略**控制(`平台治理` → 租户管理 → 绑定留存策略)。默认保留 30 天,超期自动清理。 --- ## 7. 常见问题与排查 ### Q1: 普通用户看不到某个菜单? 根据 v1.1 权限模型: 1. **业务菜单**(训练、评测、推理、数据集等):普通用户**默认全部可见**,无需分配 2. **管理菜单**(用户设置、租户管理、算力节点等):**仅 admin 可见**,这是设计如此 如果普通用户看不到业务菜单,请检查: - 用户是否正常登录(token 是否有效) - 用户状态是否为 `active`(未被停用) ### Q2: 用户创建训练任务时报错"无权使用所选 GPU" 说明该用户没有被分配所选择的 GPU 卡。解决方法: 1. admin 进入「算力节点」→「GPU 分配」标签页 2. 为该用户分配对应的 GPU 3. 用户刷新页面重新选择 GPU ### Q3: 删除用户后看板还显示残留数据? 正常情况下 `delete_user` 会级联清理关联数据。如果仍有残留: - **训练任务**:设计上保留不删(避免算力节点物理数据不一致),这是预期行为 - **登录时长排行**:可能来自旧的 session 记录(已修复:改用 INNER JOIN 过滤已删除用户) ### Q4: 审批实例一直 pending 没人处理? 审批实例需要 admin 在「审批中心」手动处理。如果长时间无人处理: - 可以在数据库中直接将 `approval_instances.status` 改为 `rejected` - 或者由 admin 直接以自身身份执行该操作(admin 有旁路权限) ### Q5: 如何查看当前所有 GPU 分配情况? ```bash # admin 调用接口 curl -H "Authorization: Bearer platform-token-admin" \ /modelTF/compute/gpu-assignments ``` 返回格式: ```json { "data": [ { "id": "ga_xxx", "node_name": "A800 训练节点", "gpu_index": 0, "display_name": "张三", "assigned_at": "2026-08-10T10:00:00" } ] } ``` ### Q6: 用户忘记密码怎么办? 两种方案: 1. **admin 重置**:在「用户设置」→ 用户列表 →「重置密码」 2. **用户自助修改**:用户登录后点击「修改密码」(需知道旧密码) 如果是完全忘记且不是 admin,只能由 admin 重置。 ### Q7: 为什么移除了「页面权限」功能?(v1.1 变更说明) 旧版本要求管理员为每个用户单独分配页面权限码,这导致: - 新用户创建后需要额外操作才能使用系统 - 权限配置复杂,容易出错 - 与实际使用场景不匹配(大多数用户需要访问大部分功能) **新模型(v1.1)**简化为: - 非 admin 用户**默认拥有所有业务功能的访问权限** - 仅管理员专属功能(用户管理、平台治理、算力节点)受角色限制 - 资源级别控制通过 ACL 实现,更灵活 --- ## 附录:API 快速参考 | 功能 | 方法 | 路径 | 鉴权 | |---|---|---|---| | 查看我的 GPU | GET | `/compute/my-gpus` | 登录用户 | | 查看 GPU 分配 | GET | `/compute/gpu-assignments` | admin | | 分配 GPU | POST | `/compute/gpu-assignments` | admin | | 撤销 GPU 分配 | DELETE | `/compute/gpu-assignments/{id}` | admin | | 修改自己的密码 | POST | `/users/me/password` | 登录用户 | | 查看审计日志 | GET | `/system/audit-logs` | admin | | 导出审计日志 | GET | `/system/audit-logs/export` | admin | | 查看审批列表 | GET | `/approvals` | 登录用户 | | 审批决策 | POST | `/approvals/:id/steps/:idx/decision` | 审批人 |