怎么用RBAC模型创建后台安全管理

怎么用RBAC模型创建后台安全管理,第1张

你看这个模型有不有用(自己看着你们上面讨论的 就去敲了一下)use master

go

if exists(select * from sysdatabases where name = 'HMS')

drop database HMS

go

------------------建库

create database HMS

on primary

(

name = 'HMS_data',

filename = 'D:\数据库\数据库存放包\HMS_data.mdf',

size = 5,

filegrowth=15%

)

log on

(

name = 'HMS_log',

filename = 'D:\数据库\数据库存放包\HMS_log.ldf',

size = 3,

filegrowth=10%

)

go

-----------------建表(不考虑项目表)

use HMS

go

-----建立用户信息表

create table users

(

uid varchar(10) primary key,--用户编号

uname varchar(20) not null,--用户姓名

upassword varchar(16) default('888888') not null,--用户密码

usex char(2) check(usex = '男' or usex = '女') not null,--用户性别

uage int check(uage>=16 and uage<=60) not null,--用户年龄

upid varchar(18) check(len(upid)=15 or len(upid)=18) not null,--用户身份z

uactive char(2) check(uactive = '是' or uactive = '女') not null,

uphono varchar(13) check(uphono like '____-_______' or uphono like '____-________' or len(uphono)=11 ),--联系电话

uaddress varchar(50) default('地址不详'),--家住地址

uremark varchar(100)--备注

)

go

---建立角色

create table roles

(

rid varchar(10) primary key,--角色编号

rname varchar(20) not null,--角色名称

rremark varchar(100),--角色备注

)

go

--建立资源表

create table resources

(

sid varchar(10) primary key,--资源编号

sname varchar(20) not null,--资源名称

sremark varchar(100),--资源备注

)

go

-----建立用户角色表

create table users_roles

(

urid int identity(1,1) primary key,--用户角色编号 自动增长

uruid varchar(10) not null,--外键 引用用户表的主键

urrid varchar(10) not null--外键 引用角色表的主键

)

go

--建立角色资源表

create table roles_resources

(

rrid int identity(1,1) primary key,--角色资源编号 自动增长

rrrid varchar(10) not null,--外键 引用角色表主键

rrsid varchar(10) not null--外键 引用资源表主键

)

go

--添加约束

alter table users

add

constraint ck_pass check(len(upassword)>=6 and len(upassword)<=16),

constraint df_usex default('男')for usex,

constraint df_uactive default('是') for uactive

go

alter table users_roles

add

constraint fk_users_roles_users_uid foreign key(uruid) references users(uid),

constraint fk_users_roles_roles_rid foreign key(urrid) references roles(rid)

go

alter table roles_resources

add

constraint fk_roles_resources_roles foreign key(rrrid) references roles(rid),

constraint fk_roles_resources_resources foreign key(rrsid) references resources(sid)

go 因该可以解决你的问题

MySQL安装完成后,要想将数据存储到数据库的表中,首先要创建一个数据库。创建数据库就是在数据库系统中划分一块存储数据的空间。在MySQL中,创建数据库的基本语法格式如下所示:

CREATE DATABASE 数据库名称

在上述语法格式中,“CREATE DATABASE”是固定的SQL语句,专门用来创建数据库。“数据库名称”是唯一的,不可重复出现。

例如下面我们创建一个名称为itcast的数据库,SQL语句如下所示:

CREATE DATABASE itcast

执行结果如下所示:

如果看到上述运行结果,说明SQL语句执行成功了。为了验证数据库系统中是否创建了名称为itcast的数据库,需要査看数据库。在MySQL中,查看数据库的SQL语句如下所示:

SHOW DATABASES

使用SHOW语句査看已经存在的数据库,执行结果如下所示:

从上述执行结果可以看出,数据库系统中存在5个数据库。其中,除了我们之前创建的itcast数据库外,其他的数据库都是在MSQL安装完成后自动创建的。

创建好数据库之后,要想査看某个已经创建的数据库信息,可以通过SHOW CREATE DATABASE语句查看,具体语法格式如下所示:

SHOW CREATE DATABASE数据库名称

查看创建好的数据库itcast的信息,SQL语句如下所示:

SHOW CREATE DATABASE itcast

上述执行结果显示出了数据库itcast的创建信息,例如,数据库itcast的编码方式为utf-8。

权限系统提的最多的就是RBAC(Role-Base Access Control基于角色的访问控制)。所谓角色,其实就是权限的集合,某个角色就是某几个权限的结合。其目的是为了简化授权和鉴权的过程。

RBAC模型的核心是在用户和权限之间引入了角色的概念。取消了用户和权限的直接关联,改为通过用户关联角色、角色关联权限的方法来间接地赋予用户权限(如下图),从而达到用户和权限解耦的目的。

将用户直接绑定到权限上去,如下图:

一个用户只充当一种角色,一种角色可以有多个用户担当。

一个用户可同时充当好几种角色,一种角色可以有多个用户担当。

如上图:对于左边的用户-角色对应,每个人只能同时拥有一种角色,但是同一个角色里边,可能会含有多个用户(如:李四和王麻子都是业务员);而右边的用户-角色对应,是在左边的基础上,增加了一个用户可拥有多种角色的情况(如:小马哥既是经理,也要负责财务的工作)。

一般公司的业务管理系统,都有数据私密性的要求:哪些人可以看到哪些数据,哪些人不可以看到哪些数据。这个时候,我们就需要把这些东西也考虑到你的权限体系内了。

假设上图是一家公司业务部门的组织架构图,公司要求你基于这个组织架构设计一个业务管理系统,并要求系统需要满足不同用户的数据私密性,比如:“张三”登录时,只能看到“张三”负责的数据;“张三”的领导登录时,能看到“团队A”的所有业务员负责的数据,但看不到其他团队业务员负责的数据等等。

在这种情况下,上一种权限体系就不适用了,但我们可以对其进行一些小改造后,即可达到数据管控的目的,如下图:

在“用户-角色-权限”的基础上,我们增加了用户与组织的关联关系,组织决定了用户的数据可视权限。但要想真正达到这个效果,我们还需要做2件事:

1、组织层级划分。如下图,我们需要对组织进行梳理,并划分层级。

2、数据可视权限规则制定。比如:上级组织职能看到下级组织员工负责的数据,而不能看到其他平级组织及其下级组织的员工数据等。

通过以上两点,系统就可以在用户登录时,自动判断要给用户展示哪些数据了!

第三种权限体系又是在第二种权限体系上进行优化的,增加了用户与岗位的关联关系,示意图如下:

增加岗位有以下几点好处:

1、识别用户的主要身份。一个人可能身兼多职(多个角色),但是他的主要职能是固定的,那怎么告诉系统用户的主要职能是什么呢?答案就是:通过岗位!拿上面的小马哥举例:小马哥虽然身兼经理和财务两种身份,但他的本职工作是“经理”,因此,他的系统岗位应该“经理”。当他登录时,系统会识别他的身份为“经理”,只不过这个“经理”刚好兼具了其他岗位的职能而已;

2、通过“组织-岗位”关联,快速甄别用户岗位。公司在不断地发展的过程中,系统的用户角色也会不断增加,当角色达到一定数量以后,管理员每新增一个用户都要花相当的时间去寻找角色。引入岗位后,可将组织和岗位、岗位和角色提前进行关联,配置账号时,管理员只要选定组织,系统就给出与该组织关联的岗位,而这些岗位,又是提前关联好角色的,选择起来,既方便又高效!

阿里云折扣快速入口


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9553680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存