实验六 SJK安全性语言

embedded/2024/12/22 23:44:12/

实验题目

实验六 SJK安全性语言

实验时间

2023.5.3

实验地点

软件工程基础实验室

实验课时

2

实验目的

​掌握自主存取控制权限的定义和维护方法。

实验要求

​定义用户、角色,分配权限给用户、角色,回收权限,以相应的用户名登录数据库验证权限分配是否正确。选择一个应用场景,使用自主存取控制机制设计权限分配

实验步骤

及内

 (1)创建用户

MYSQL的用户创建语句格式如下:

CREATE USER user_account IDENTIFIED BY password;

其中user_account的格式是username@hostname。

为学生管理,教务管理的人员A,B创建用户标识和用户口令。

CREATE USER A IDENTIFIED BY "123456";

CREATE USER B IDENTIFIED BY "123456";

CREATE USER C IDENTIFIED BY "123456";

为学生X,教师Y创建用户标识和用户口令。

CREATE USER X IDENTIFIED BY "123456";

CREATE USER Y IDENTIFIED BY "123456";   /*计网课程的教师*/

(2)创建角色并分配权限

创建学生角色,可以对个人信息,选课情况及课程情况进行查询。

CREATE ROLE StudentRole;

/*只能查询自己的信息,需要借助视图实现*/

CREATE VIEW v_student

AS

SELECT *

FROM aas.student

WHERE concat(sname,'@localhost') = USER();

GRANT SELECT

ON aas.v_student

TO StudentRole;

/*只能查询自己的选课信息,同样使用视图实现*/

CREATE VIEW v_sc

AS

SELECT *

FROM aas.student NATURAL JOIN aas.sc

WHERE concat(sname,'@localhost') = USER();

GRANT SELECT

ON aas.v_sc

TO StudentRole;

/*查询课程情况*/

GRANT SELECT

ON aas.course

TO StudentRole;

创建教师角色,可以查询学生信息,查询自己任课课程的选课信息和全部课程信息,可以更新选课信息中的成绩字段。

CREATE ROLE TutorRole;

/*可以查询全部学生信息*/

GRANT SELECT

ON aas.student

TO TutorRole;

/*可以查询自己任课的课程选课情况,并修改成绩,借助视图实现*/

CREATE VIEW v_tsc

AS

SELECT *

FROM aas.sc NATURAL JOIN aas.course

WHERE concat(Tname,'@localhost') = USER();

GRANT SELECT,UPDATE(grade)

ON aas.v_tsc

TO TutorRole;

/*可以查询所有课程信息*/

GRANT SELECT

ON aas.course

TO TutorRole;

为学生管理,教务管理的人员创建角色,相应的对学生信息,选课信息和课程信息有全部的权限,对其他表有查询权限。其中,教务管理人员可以为其他人分配权限。

/*学生管理角色*/

CREATE ROLE StudentSuperviserRole;

GRANT ALL PRIVILEGES

ON aas.student

TO StudentSuperviserRole;

GRANT SELECT

ON aas.sc

TO StudentSuperviserRole;

GRANT SELECT

ON aas.course

TO StudentSuperviserRole;

/*教务管理角色*/

CREATE ROLE AffairMangerRole;

GRANT ALL PRIVILEGES

ON aas.sc

TO AffairMangerRole

WITH GRANT OPTION;

GRANT ALL PRIVILEGES

ON aas.course

TO AffairMangerRole

WITH GRANT OPTION;

GRANT SELECT

ON aas.student

TO AffairMangerRole;

(3)给用户分配权限

为用户X,Y分配学生,教师角色的权限;为用户A,B,C分配学生管理角色,教务管理角色的权限。

GRANT StudentRole TO X;

GRANT TutorRole TO Y;

GRANT StudentSuperviserRole TO A;

GRANT AffairMangerRole TO B;

GRANT AffairMangerRole TO C;

(4)回收角色或用户的权限

回收教师查询学生信息的权限。回收教务管理人员C的权限。

REVOKE SELECT ON student

FROM TutorRole;

REVOKE AffairMangerRole FROM C;

(5)验证权限分配的正确性

首先以用户名X登录数据库,X具有学生角色的权限,即可以查询自己的信息和选课信息以及所有课程信息。

/*登录后首先要激活角色,选择模式aas*/

SET ROLE ALL;

use aas;

/*查询个人信息*/

select *

from v_student;

/*查询选课信息*/

SELECT *

FROM v_sc NATURAL JOIN course;

实验结果及分析

经检验,实验基本达到预期效果。通过本次实验,进一步熟悉了自主存取控制权限的方法,使用SQL语句进行了角色的创建,权限的分配,以及将角色权限分配给用户。在实验中,学习到MYSQL的角色的使用需要在用户登录后先进行激活,才能正常使用。实验的最后使用不同用户进行登录,对所分配权限的正确性进行了验证。


http://www.ppmy.cn/embedded/28601.html

相关文章

java-函数式编程-函数对象

定义 什么是合格的函数?无论多少次执行函数,只要输入一样,输出就不会改变 对象方法的简写 其实在类中,我们很多参数中都有一个this,被隐藏传入了 函数也可以作为对象传递,lambda就是很好的例子 函数式接口中…

js判定-矩形内是否包含指定点

场景:使用JavaScript计算,一个由四个点(x1,y1),(x2,y2),(x3,y3),(x4,y4)逆时针顺序组成的矩形可以旋转。给定一个点(x,y),判断该点是否…

opencv_17_翻转与旋转

一、图像翻转 1)void flip_test(Mat& image); 2)void ColorInvert::flip_test(Mat& image) { Mat dst; //flip(image, dst, 0); //上下翻转 flip(image, dst, 1); //左右翻转 // flip(image, dst, -1); //180度翻转 imsho…

Pyspark+关联规则 Kaggle购物篮分析案例

数据集地址:Market Basket Analysis | Kaggle 我的NoteBook地址:pyspark Market Basket Analysis | Kaggle 零售商期望能够利用过去的零售数据在自己的行业中进行探索,并为客户提供有关商品集的建议,这样就能提高客户参与度、改…

自定义SpringBoot的starter

案例需求:自定义redis-stater。要求当导入redis坐标时,SpringBoot自动创建Jedis的Bean。 实现步骤: 1、创建redis-spring-boot-autoconfigure模块 2、创建redis-spring-boot-starter模块,依赖redis-spring-boot-autoconfigure的…

大语言模型在专业领域的应用——法律场景下的大语言模型

法律场景下的大语言模型 构建法律相关的大语言模型数据资源总结在法律领域,相关从业人员需要参与合同咨询、审查、案件判决等日常重复性任务。这些任务需要耗费大量的人力成本,亟需面向法律领域的人工智能技术辅助完成这些工作,从而减轻从业人员的工作负担。大语言模型具有优…

jenkins汉化不完全问题解决

jenkins安装完Localization:Chinese(Simplified)中文语言包后,发现是出现汉化不完全或者部分汉化的情况,如下图: 解决方法: 启动命令中指定语言 -Duser.languageen_US.UTF-8 或者 -Duser.languageC.UTF-8原因分析:安…

Android 11 bindService 流程分析

我们可以使用bindService来跨进程通信,其使用方法如下 Intent intent new Intent("xxx"); intent.setPackage("xxx"); boolean result bindService(intent,new ServiceConn(),BIND_AUTO_CREATE);private class ServiceConn implements Servi…