# M2 用户、角色与权限 — 需求分析

| 项 | 值 |
|---|---|
| 模块 | M2 用户、角色与权限 |
| 域 | A 基座 |
| 主要角色 | Admin / 全员 |
| 成熟度 | 🟡 已起草待细化 |
| 关联模块 | 全模块（数据范围与功能权限） |
| 逻辑设计(LDD) | [ldd/M2（数据模型/RBAC·ABAC 机制/范围映射/SSO·供给集成）](../ldd/M2-用户角色与权限-设计.md) |
| 上级文档 | [需求分析总纲](../需求分析总纲.md) |

> 本文档只描述**做什么/为什么/规则/验收（What/Why）**；数据模型、RBAC/ABAC 机制、数据范围映射、SSO/供给集成等**实现（How）见设计文档**。

## 目标（Why）
统一身份，按三角色（TAM/PS/CSM）做功能与数据范围治理。

## 候选需求（待细化）
| 编号 | 需求 | 优先级 |
|---|---|---|
| FR-IAM-01 | Google + 飞书 SSO，按 email 合并唯一 User。 | P0 |
| FR-IAM-02 | 角色（对齐总纲 §1.4，动态可配）：`CS_Director / TAM / TAM_Leader / PSE / PS_Leader / CSM / Sales / SA / Admin / Ops / Customer_External`。**PM = 项目级负责人指派**（某 PSE/PS_Leader 被指为该项目 PM，非全局角色）；**Manager = Leader 角色（TAM_Leader/PS_Leader/CS_Director）+ Region 属性**（非独立角色）；RE = PSE 工作模式（非独立角色）。 | P0 |
| FR-IAM-03 | **RBAC 管功能**（能否立项、审批、配置等）：动作字典按 `模块:对象:操作` 命名；角色×动作**基线矩阵**（见 LDD），随各模块 FSD 细化。 | P0 |
| FR-IAM-04 | **ABAC 管数据范围**：TAM/CSM 见自己客户；PSE 见参与项目；**Leader（TAM_Leader/PS_Leader/CS_Director）见本 Region**；**Sales 见自己商机/客户；SA/Presale 见参与客户；Ops/Admin 见全局（治理）**；Customer_External 仅见自己相关项目/交付物。 | P0 |
| FR-IAM-05 | 权限变更**即时生效**（**每请求服务端解析** RBAC/ABAC，JWT 仅承载身份、权限可缓存+失效）并留审计；越权访问拦截与日志。 | P1 |
| FR-IAM-06 | **用户供给（Provisioning）**：与 HR/IdP 同步，员工入职自动开通、离职/转岗自动回收权限（SCIM 或等价）。 | P1 |
| FR-IAM-07 | **多角色并集**：一人多角色（如 TAM 兼 CSM）时，功能权限与数据范围取**并集**。 | P0 |
| FR-IAM-08 | **外部账号**：Customer_External 由 **TAM 或该客户项目负责人（PM）邀请**开通；数据范围**仅限自己相关项目/交付物**，受限只读 + 签署。 | P1 |

## 已敲定
- 多角色权限**并集叠加**（FR-IAM-07）。
- 外部账号由 **TAM 或项目负责人（PM）邀请、仅见自己项目**，受限只读 + 签署（FR-IAM-08）。
- **角色枚举对齐总纲 §1.4**；**PM = 项目级负责人指派、Manager = Leader+Region、RE = PSE 工作模式**，均**不新增全局角色**（T3）。
- **权限即时生效 = 每请求服务端解析**（JWT 仅身份，RBAC/ABAC 实时算、可缓存+失效）（T3）。

## 验收标准（关键）
- 同一 email 经 Google 与飞书两条 SSO 登录的归并正确率=100%（不产生重复账号）。
- RBAC（功能权限）与 ABAC（数据范围）可分别独立配置并生效，互不耦合、可各自验证通过。
- 多角色用户可访问的功能与数据 = 各角色并集，并集正确率=100%（无遗漏、无越权）。
- 各角色数据范围符合定义（TAM/CSM 自己客户、PSE 参与项目、Leader 本 Region、Sales 自己商机、SA 参与客户、Ops/Admin 全局、Customer_External 自己相关项目/交付物），越界可见记录数=0。
- 非 TAM/项目负责人（PM）发起的外部账号开通阻断率=100%；外部账号可执行的非只读/签署写操作数=0。
- 权限变更**即时生效**（每请求服务端解析，无需重登）；越权访问拦截率=100% 且 100% 记日志（可审计）。

## 遗留待确认
（无未决项）
