🌇基于Casbin的RBAC权限认证
type
status
date
slug
summary
tags
category
icon
password
Blocked by
Blocking
AI summary
RBAC是什么
RBAC(Role-Based Access Control),基于角色的访问控制。RBAC 是一种权限管理模型,用户并不直接拥有具体的权限,而是通过角色与权限建立关系,简化了用户与权限的直接映射关系,提供了灵活、高效的权限管理方案。基本流程如下:
- 用户(User):系统中的主体,例如管理员、普通用户等。
- 角色(Role):权限的抽象集合,例如管理员角色可以管理用户,普通用户只能访问自己的数据。
- 权限(Permission):具体的操作,例如读取、写入、删除资源等。
- 资源(Resource):需要进行访问控制的对象,例如系统中的文件、API、数据表等。
RBAC 的优势:
- 易管理:用户与权限的绑定通过角色完成,减少直接管理用户权限的复杂性。
- 灵活性:角色的权限可以动态调整,满足复杂场景需求。
定义rbac_model.conf
数据库表
在 Casbin 中,
g
代表 "grouping" 或 "group",用于定义 RBAC 模型中的角色继承关系。- ptype = 'p'
- p 表示 "policy"(策略)
- 用于定义具体的权限规则
- 例子:
p, admin, /api/posts, write
表示 admin 角色可以写帖子
- ptype = 'g'
- g 表示 "group"(组)或角色继承
- 用于定义用户和角色的关系
- 例子:
g, alice, admin
表示用户 alice 属于 admin 组
示例go代码
安装Casbin
最佳实践
- 在casbin_rule表中只存储角色级别的权限
- 具体的资源(如帖子)的所有权在业务代码汇中判断
- 不用为每一个具体的资源都建立casbin规则,直接复用申明好的角色即可
Prev
k8s架构简介
Next
2024年终总结
Loading...