# 资源权限管理说明

## 1. 目标

本文用于统一以下资源的权限管理口径：

- `DIG_EMPLOYEE`
- `AGENT`
- `MCP`
- `TOOLKIT`
- `KG_*`
- `OBJECT`
- `VIEW`

同时覆盖两类资源归属：

- `personal`
- `enterprise`

以及三类平台管理角色：

- 组织管理员
- 业务管理员
- 平台管理员

## 2. 核心原则

### 2.1 管理权与使用权分离

资源权限统一拆成两层：

- `ALLOW_MANAGE`
  - 可修改资源
  - 可删除资源
  - 可维护资源绑定关系
  - 可维护资源授权名单
- `AVAILABLE_USE`
  - 可在列表中看到资源
  - 可在业务配置中选择资源
  - 可实际使用资源

### 2.2 创建人优先兜底

任意资源创建或导入成功后，创建人默认应自动获得：

- `ALLOW_MANAGE`
- `AVAILABLE_USE`

### 2.3 企业资源避免锁在个人手里

企业资源不应只由创建人单点维护。对 `enterprise` 资源，建议组织管理员默认拥有管理权，用于：

- 资源维护
- 授权管理
- 人员流动后的接管

### 2.4 平台管理员走角色兜底

平台管理员建议通过角色天然拥有全局管理能力，不要求逐条资源落授权记录。

### 2.5 业务管理员不默认自动扩权

业务管理员默认不自动继承所有企业资源权限，建议通过显式授权控制，避免权限范围失控。

### 2.6 层级越高，默认越保守

资源按风险与影响范围分为三层：

- 基础层：`OBJECT`、`VIEW`
- 能力层：`KG_*`、`TOOLKIT`、`MCP`、`AGENT`
- 入口层：`DIG_EMPLOYEE`

越靠近最终用户入口，默认权限越保守。

## 3. 角色视角矩阵

| 角色 | personal 资源 | enterprise 资源 | 说明 |
|---|---|---|---|
| 普通用户 | 默认只能管理和使用自己创建的资源 | 默认不自动获得管理权和使用权 | 企业资源是否可见、可用，依赖显式授权 |
| 创建人 | 默认拥有 `ALLOW_MANAGE + AVAILABLE_USE` | 默认拥有 `ALLOW_MANAGE + AVAILABLE_USE` | 这是最基础的兜底规则 |
| 组织管理员 | 默认不接管 | 默认拥有本组织企业资源的 `ALLOW_MANAGE` | 不建议默认拥有 `AVAILABLE_USE` |
| 业务管理员 | 默认不接管 | 默认不自动继承 | 建议通过显式授权控制 |
| 平台管理员 | 全局可管理 | 全局可管理 | 建议靠角色兜底，不逐条落授权 |

## 4. 资源视角矩阵

| 资源层级 | 资源类型 | 默认管理策略 | 默认使用策略 | 风险等级 |
|---|---|---|---|---|
| 基础层 | `OBJECT`、`VIEW` | 创建人可管理；企业资源组织管理员可管理 | 不建议默认全员开放 | 中 |
| 能力层 | `KG_*`、`TOOLKIT`、`MCP`、`AGENT` | 创建人可管理；企业资源组织管理员可管理 | 建议显式授权 | 高 |
| 入口层 | `DIG_EMPLOYEE` | 创建人可管理；企业资源组织管理员可管理 | 必须显式授权 | 很高 |

## 5. 具体资源类型建议

### 5.1 `OBJECT` / `VIEW`

定位：

- 基础数据资产
- 通常被上层知识、工具、数字员工复用

建议：

- `personal`
  - 创建人拥有 `ALLOW_MANAGE + AVAILABLE_USE`
  - 其他人默认无权限
- `enterprise`
  - 创建人拥有 `ALLOW_MANAGE + AVAILABLE_USE`
  - 所属组织管理员拥有 `ALLOW_MANAGE`
  - 普通用户使用权通过 `AVAILABLE_USE` 单独控制

### 5.2 `KG_*`

定位：

- 知识能力资产
- 直接影响问答和检索结果

建议：

- `personal`
  - 仅创建人默认可管理、可使用
- `enterprise`
  - 创建人拥有 `ALLOW_MANAGE + AVAILABLE_USE`
  - 所属组织管理员拥有 `ALLOW_MANAGE`
  - 普通用户不默认开放使用权

说明：

- 第三方知识库即使前端屏蔽库级增删改，后台仍保留管理授权概念

### 5.3 `TOOLKIT` / `MCP` / `AGENT`

定位：

- 高风险能力资产
- 可直接影响调用结果、动作执行和外部能力接入

建议：

- `personal`
  - 仅创建人默认可管理、可使用
- `enterprise`
  - 创建人拥有 `ALLOW_MANAGE + AVAILABLE_USE`
  - 所属组织管理员拥有 `ALLOW_MANAGE`
  - 普通用户不默认开放使用权

### 5.4 `DIG_EMPLOYEE`

定位：

- 最终用户入口资源
- 一旦可用，往往间接放开其绑定的知识、工具、对象、视图等能力

建议：

- `personal`
  - 创建人拥有 `ALLOW_MANAGE + AVAILABLE_USE`
  - 其他人默认不可见、不可用
- `enterprise`
  - 创建人拥有 `ALLOW_MANAGE + AVAILABLE_USE`
  - 所属组织管理员拥有 `ALLOW_MANAGE`
  - 普通用户不默认获得 `AVAILABLE_USE`
  - 必须显式授予使用权

结论：

- `DIG_EMPLOYEE` 是最应保守对待的资源类型
- 即使是企业数字员工，也不建议默认组织内全员可用

## 6. 自动补权规则

| 触发场景 | 补权对象 | 权限 | 建议 |
|---|---|---|---|
| 任意资源创建或导入成功 | 创建人 | `ALLOW_MANAGE` | 必选 |
| 任意资源创建或导入成功 | 创建人 | `AVAILABLE_USE` | 必选 |
| 企业资源创建或导入成功 | 所属组织管理员 | `ALLOW_MANAGE` | 建议开启 |
| 个人资源创建或导入成功 | 组织管理员 | 不补 | 建议保持 |
| 企业 `DIG_EMPLOYEE` 创建成功 | 普通用户 | 不自动补 `AVAILABLE_USE` | 必须保持 |
| 业务管理员 | 不自动补 | 无 | 通过显式授权处理 |

## 7. 推荐落地顺序

### 第一步：补齐基础兜底

所有资源在创建或导入后，自动给创建人补：

- `ALLOW_MANAGE`
- `AVAILABLE_USE`

### 第二步：补齐企业资源的组织兜底

对 `enterprise` 资源，自动给所属组织管理员补：

- `ALLOW_MANAGE`

### 第三步：单独收严 `DIG_EMPLOYEE`

对 `DIG_EMPLOYEE` 保持更保守的默认策略：

- 不默认给普通用户补 `AVAILABLE_USE`
- 必须走显式授权

### 第四步：业务管理员走显式授权

不建议自动按角色批量放权，先按明确业务边界逐步授权。

## 8. 推荐的第一版执行口径

如果当前希望先快速落一版稳定方案，建议采用下面这组最小规则：

1. 所有资源创建/导入成功后，自动给创建人补：
   - `ALLOW_MANAGE`
   - `AVAILABLE_USE`
2. 企业资源创建/导入成功后，自动给所属组织管理员补：
   - `ALLOW_MANAGE`
3. 平台管理员走角色兜底，不逐条落授权。
4. `DIG_EMPLOYEE` 即使是企业资源，也不默认给普通用户补：
   - `AVAILABLE_USE`
5. 业务管理员先不自动补权，避免权限范围失控。

## 9. 一句话总结

推荐统一采用以下权限管理模型：

- 基础层：`OBJECT`、`VIEW`
- 能力层：`KG_*`、`TOOLKIT`、`MCP`、`AGENT`
- 入口层：`DIG_EMPLOYEE`

并遵循：

- 管理权与使用权分离
- 创建人先获得基础权限
- 企业资源由组织管理员兜底管理
- 平台管理员全局兜底
- 业务管理员通过显式授权接入
- 层级越高，默认权限越保守
