RBAC基于角色的权限访问控制模型

RBAC

RBAC基于角色的访问控制,RBAC认为权限授权的过程可以抽象地概括为:Who是否可以对What进行How的访问操作

RBAC简介

基于角色的权限访问控制模型

在RBAC模型里面,有3个基础组成部分,分别是:用户、角色和权限。RBAC通过定义角色的权限,并对用户授予某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离(区别于ACL模型),极大地方便了权限的管理:

  • User(用户):每个用户都有唯一的UID识别,并被授予不同的角色
  • Role(角色):不同角色具有不同的权限
  • Permission(权限):访问权限
  • 用户-角色映射:用户和角色之间的映射关系
  • 角色-权限映射:角色和权限之间的映射

RBAC支持三个著名的安全原则:最小权限原则、责任分离原则和数据抽象原则

  • 最小权限原则:RBAC可以将角色配置成其完成任务所需的最小权限集合
  • 责任分离原则:可以通过调用相互独立互斥的角色来共同完成敏感的任务,例如要求一个计账员和财务管理员共同参与统一过账操作
  • 数据抽象原则:可以通过权限的抽象来体现,例如财务操作用借款、存款等抽象权限,而不是使用典型的读、写、执行权限

优点:

  • 简化了用户和权限的关系
  • 易扩展、易维护

缺点:

  • RBAC模型没有提供操作顺序的控制机制,这一缺陷使得RBAC模型很难适应哪些对操作次序有严格要求的系统

RBAC的3种模型

  • RBAC0,是最简单、最原始的实现方式,也是其他RBAC模型的基础
  • RBAC1基于RBAC0模型,引入了角色间的继承关系,即角色上有了上下级的区别。
  • RBAC2基于RBAC0模型的基础上,进行了角色的访问控制。

RBAC数据表设计

数据库 create database test default character set utf8mb4;

表和表之间的关系:1对1、1对多或者多对1、多对多

1对1实现方式

具体的实现方式有2种:共享主键和唯一外键。例如员工信息和登录账号

共享主键

create table if not exists tb_emps(
	id bigint primary key auto_increment comment '雇员编号',
	name varchar(32) not null comment '姓名',
	sex boolean default 1 comment '性别',
	education varchar(32),
	birth date comment '出生日期',
	hire_date date comment '入职日期',
	salary numeric(8,2) comment '月薪'
)engine=innodb default charset utf8 comment '雇员信息';

create table if not exists tb_users(
	id bigint primary key comment '用户编号',
	foreign key(id) references tb_emps(id) on delete cascade
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值