🌇基于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 模型中的角色继承关系。
  1. ptype = 'p'
      • p 表示 "policy"(策略)
      • 用于定义具体的权限规则
      • 例子:p, admin, /api/posts, write 表示 admin 角色可以写帖子
  1. ptype = 'g'
      • g 表示 "group"(组)或角色继承
      • 用于定义用户和角色的关系
      • 例子:g, alice, admin 表示用户 alice 属于 admin 组
 

示例go代码

安装Casbin
 
 

最佳实践

  • 在casbin_rule表中只存储角色级别的权限
  • 具体的资源(如帖子)的所有权在业务代码汇中判断
  • 不用为每一个具体的资源都建立casbin规则,直接复用申明好的角色即可
 
Prev
k8s架构简介
Next
2024年终总结
Loading...
Article List