一、概念解释
先来看看权限系统设计常见的一些概念:ACL、DAC、MAC、ABAC 和 RBAC。
1. 访问控制列表 (ACL)
ACL 是一组规则,用于指定哪些用户被授予或拒绝访问特定资源的权限。
- 优点 - 易于理解。
- 缺点 - 易出错,维护成本高
2. DAC(自主访问控制)
这是基于 ACL 的。它通过对象的所有者组确定访问策略来授予或限制对象访问。
- 优点 - 简单且灵活。Linux 文件系统支持 DAC。
- 缺点 - 权限控制分散,对象所有者组拥有过多权限。
3. MAC(强制访问控制)
资源所有者和资源都具有分类标签。不同的标签被授予不同的权限。
- 优点 - 严格且直接。
- 缺点 - 不灵活。
4. ABAC(基于属性的访问控制)
根据资源所有者、操作、资源和环境的属性来评估权限。
- 优点 - 灵活
- 缺点 - 规则可能很复杂,实现起来很困难。它不常用。
5. RBAC(基于角色的访问控制)
根据角色评估权限
- 优点 - 分配角色灵活。
二、现代权限系统的主流设计方法
现代主流权限系统主要是基于RBAC模型与ABAC模型。
下面这个表格能帮你快速把握IAM、RBAC和ABAC的核心关系与区别。
| 特性 | IAM (身份识别与访问管理) | RBAC (基于角色的访问控制) | ABAC (基于属性的访问控制) |
|---|---|---|---|
| 定位 | 一套完整的管理体系与框架,包含策略、流程和技术 | IAM体系中的一种访问控制模型(如何授权) | IAM体系中的一种访问控制模型(如何授权) |
| 核心逻辑 | 管理数字身份的全生命周期(创建、验证、授权、审计) | 通过角色 这一中间层,将权限批量分配给用户 | 通过动态评估属性(用户、资源、环境)来实时决定访问权限 |
| 关键概念 | 4A支柱:账号管理、认证、授权、审计 | 用户-角色-权限的映射关系 | 主体、客体、环境属性的组合策略 |
| 主要优势 | 实现集中、统一的安全管控,满足合规要求 | 简化权限管理,易于理解和实施,适合角色固定的组织 | 权限粒度极细,灵活性高,能适应复杂多变的访问场景 |
🔐 IAM:顶层框架
IAM是一套完整的业务流程和管理手段,其核心可概括为四大支柱:
管理:负责数字身份的创建、维护和销毁(如员工入职离职)。
认证:验证用户身份的真实性,常见手段包括多因素认证和单点登录。
授权:在认证后,根据策略决定用户具体能访问什么。RBAC和ABAC都是实现授权的具体方法。
审计:记录和监控访问行为,用于安全分析和合规性检查。
👥 RBAC:以角色为核心
RBAC的核心思想是引入“角色”作为连接用户和权限的桥梁。管理员首先根据 job functions 定义角色(如“经理”、“开发人员”),并为每个角色分配权限;然后将用户指派给相应的角色,从而间接获得所有权限。这种模型大大简化了权限管理,尤其适用于组织结构清晰、角色相对稳定的企业。在Kubernetes等现代平台中,RBAC被广泛用于控制用户和服务账户对集群资源的访问。
🧩 ABAC:动态且精细
ABAC提供了更精细的动态控制。它授权的依据是各种属性,这些属性可以来源于用户、访问的资源、甚至操作发生的环境。例如,一条ABAC策略可以是:“允许部门=财务的用户在工作时间=9:00-17:00且IP地址=内部网络时操作=编辑``资源类型=财务报表”。ABAC非常适合云环境、零信任架构等需要复杂策略的场景。
💡 如何选择适合的模型?
你可以根据组织的具体需求来选择或组合使用这些模型:
追求简单与清晰:如果组织角色固定,权限需求不复杂,RBAC是不错的选择,因为它易于管理和审计。
需要灵活与精细控制:如果需要根据多种条件(如时间、地点、设备状态)进行动态授权,ABAC更能满足要求。
混合策略:在实践中,许多企业采用混合模式。例如,用RBAC进行基础的权限分配,同时对某些敏感资源再应用ABAC策略进行更严格的管控。
希望这些解释能帮助你更好地理解访问控制。如果你对特定场景(比如云平台或内部办公系统)下的应用有更具体的问题,我很乐意继续探讨。