企业级 IAM 权限中心(RBAC / ABAC)完整详解
下面我给你一份企业级 IAM 权限中心(RBAC / ABAC)完整详解,内容会从理念到底层模型、从技术架构到工程落地、从运维治理到实际企业痛点全覆盖。
风格保持你喜欢的清晰易懂 + 高度体系化。
🧩 一、什么是 IAM?
IAM(Identity and Access Management,身份与访问管理)是企业统一管理“人 / 服务 / 设备”访问企业资源的基础设施。它负责:
- “谁”(身份 Identity)
- “能访问什么”(资源 Resource)
- “在什么条件下”(策略 Policy)
- “执行哪些操作”(权限 Action)
- “在什么上下文中”(环境 Environment)
IAM 是支撑所有 SaaS、业务系统、多端应用的底层基础能力。你平台的 UMS + Passport 实际上就是 IAM 的基础构件。
🧱 二、IAM 权限模型总览
IAM 实现逻辑上分为三种主要模型:
- RBAC(Role-Based Access Control)基于角色的访问控制
- ABAC(Attribute-Based Access Control)基于属性的访问控制
- ReBAC(Relationship-Based Access Control)基于关系的访问控制 → 新趋势(Google Zanzibar)
你 asked for RBAC + ABAC,我们重点讲这两个。
🎭 三、RBAC 详解(角色模型)
RBAC 的核心理念: 👉 权限不是直接赋给用户,而是通过角色进行的。
用户 → 角色 → 权限
1. RBAC 核心概念
- User:用户
- Role:角色(一个行为合集)
- Permission:权限(资源 + 操作)
- Resource:资源(菜单、按钮、接口、数据…)
2. RBAC 的优点
- 易理解
- 易维护
- 改动成本低
- 企业中最常用(阿里、腾讯、字节做后台权限大多是 RBAC)
3. RBAC 的缺点
- 无法表达复杂条件(如 “工单只能操作自己创建的”)
- 无法表达动态场景(如 “仅限 9:00-18:00 访问”)
- 随着业务扩大,角色爆炸(角色 200+)
🧬 四、ABAC 详解(属性模型)
ABAC 的核心理念: 👉 基于属性(Attributes)做权限判断,而不是角色。
属性来自四类:
- 用户属性:部门、岗位、级别、地区、标签
- 资源属性:数据所属部门、创建者、类型
- 操作属性:读、写、审批、删除
- 环境属性:时间、地点、IP、设备、风险等级
ABAC 的 Policy 结构:
允许 user 如果:
user.department == resource.department
AND resource.owner == user.id
AND env.time in [08:00, 20:00]
AND action == "update"
这套逻辑类似 AWS IAM 的 Policy、Google IAM Policy。
ABAC 的优点
- 灵活、表达力强
- 消除角色爆炸
- 能适配复杂数据权限(多维)
ABAC 的缺点
- 学习成本高
- 开发复杂度高
- 需要策略引擎(类似 OPA、Casbin、Cedar)
🏗 五、RBAC & ABAC 如何组合?
很多企业采用:
方案 A:RBAC + ABAC 叠加模式(最主流)
步骤:
- RBAC 控安全边界 → “你有没有访问这个模块的资格”
- ABAC 控数据级权限 → “你在这个模块中能看到哪些数据”
示例:CRM 权限控制
| 检查步骤 | 方式 | 含义 |
|---|---|---|
| 你能否进入 CRM? | RBAC | 是否有 CRM 角色 |
| 你能否查看客户? | RBAC | 是否有客户查看权限 |
| 你能看到哪些客户? | ABAC | 仅限自己 / 本部门 / 全公司? |
方案 B:用角色定义粗粒度权限,用 ABAC 做细粒度过滤
角色 = 授权入口 ABAC = 行为范围边界
🗃 六、权限资源模型(统一资源树)
IAM 支持的资源类型:
- 菜单(Menu)
- 页面(Page)
- 按钮(Button)
- 接口(API)
- 域(Domain)
- 数据行(Row)
- 数据列(Column)
最典型的资源树:
系统
└── 模块
└── 菜单
├── 按钮
├── 操作
└── 接口
🧠 七、策略引擎(Policy Engine)
ABAC 或 RBAC+ABAC 必须有策略引擎,例如:
- OPA(Open Policy Agent)
- Casbin(RBAC/ABAC/ReBAC)
- AWS Cedar(最先进的,支持关系模型)
- Google Zanzibar(关系图)
策略引擎负责:
- 解析规则(Policy)
- 加载运行时上下文(attributes)
- 决策(Allow / Deny)
- 返回授权结果
🏛 八、IAM 平台核心模块
一个标准的 IAM 权限中心包含以下能力:
1. 身份(Identity)
- 用户
- 组织(部门树)
- 岗位/职级
- 用户属性(labels)
2. 资源(Resource)
- UI 资源(菜单、按钮)
- API 资源
- 数据资源(表、列、行)
3. 授权(Permission)
- RBAC:角色分配
- ABAC:策略(Policy)
- 混合授权模型
4. 认证(Passport / SSO)
- JWT(你已有)
- OAuth2
- OIDC
- MFA
5. 审计(Audit)
- 访问日志
- 管理日志
- 授权链路追踪
6. 风险控制(Risk)
- 登录地识别
- 设备指纹
- IP 黑白名单
- 异常行为拦截
🧵 九、数据级权限模型(企业重点)
ABAC 最常应用在数据权限,比如:
- 自己的数据
- 本部门数据
- 下属部门数据
- 指定范围的数据
- 全部数据
常用的表达式(ABAC)
resource.owner == user.id
resource.department_id == user.department_id
resource.dept_id in user.manage_depts
env.ip in user.allowed_ips
env.time between 9:00 and 20:00
🧳 十、一个完整的 ABAC Policy 示例
以一个“项目管理系统”为例:
需求: 项目经理可查看自己负责的项目; 部门经理可查看本部门所有项目; 访问仅限公司网络。
ABAC Policy:
effect = "allow"
when action == "read"
AND (
(user.role == "project_manager" AND resource.owner == user.id)
OR
(user.role == "department_manager" AND resource.dept_id == user.department_id)
)
AND env.ip in ["10.0.0.0/8"]
🧨 十一、IAM 如何演进?(你的 SSO 平台参考)
你的 UMS + Passport 已经有了基础。
下面是 IAM 进阶路线图:
阶段 1(已完成)
✔ 用户、角色、权限 ✔ 登录、鉴权、Token ✔ RBAC
阶段 2(3–6 个月)
🔸 菜单 + API + 按钮权限树 🔸 动态策略引擎(Casbin / 自研) 🔸 数据级权限(ABAC) 🔸 多维属性(用户/资源/环境)
阶段 3(6–12 个月)
🔸 关系图授权(Zanzibar) 🔸 多租户(Tenant) 🔸 SSO 协议 OAuth2 / OIDC 🔸 MFA 🔸 API Gateway 鉴权插件(Nginx/Kong)
阶段 4(12–24 个月)
🔸 企业级策略中心 🔸 动态风险控制 🔸 行为分析(UEBA) 🔸 权限全链路可观测性 🔸 权限变更回溯 + 沙箱授权
🧩 十二、实际企业中的痛点与最佳实践
1. 角色爆炸 → ABAC 化
用“条件”替代“角色”,消除重复角色。
2. 各系统权限不统一 → IAM 统一适配层
业务系统只要实现两套接口:
- 查询用户权限
- 调用 IAM 做鉴权
其余逻辑全由 IAM 托管。
3. 数据权限复杂 → Attribute 化
部门 → 多部门 组织树 → 管理范围 主管 → 下属递归
🧭 十三、如果你要实现 IAM,我建议的技术选型
- 策略引擎:Casbin / OPA / Cedar
- 权限 Store:MySQL / PostgreSQL
- 关系图模型:Neo4j / TiDB / RedisGraph(如未来做 ReBAC)
-
服务架构:
- IAM 后端(Java)
- 前端控制台(Vue)
- SPI Hook(给各业务系统使用)
🎯 十四、最终总结(一句话)
RBAC 控入口权限,ABAC 控边界权限,二者组合才能适配现代企业的复杂场景。 IAM 是企业数字化的“身份证公司”,是所有系统的安全底座。
- 企业级 IAM 权限中心(RBAC / ABAC)完整详解
- 🧩 一、什么是 IAM?
- 🧱 二、IAM 权限模型总览
- 🎭 三、RBAC 详解(角色模型)
- 🧬 四、ABAC 详解(属性模型)
- 🏗 五、RBAC & ABAC 如何组合?
- 🗃 六、权限资源模型(统一资源树)
- 🧠 七、策略引擎(Policy Engine)
- 🏛 八、IAM 平台核心模块
- 🧵 九、数据级权限模型(企业重点)
- 🧳 十、一个完整的 ABAC Policy 示例
- 🧨 十一、IAM 如何演进?(你的 SSO 平台参考)
- 🧩 十二、实际企业中的痛点与最佳实践
- 🧭 十三、如果你要实现 IAM,我建议的技术选型
- 🎯 十四、最终总结(一句话)
