数据安全性实验演示

实验准备

本实验准备软件:Azure Data Studio 和 MS SQLserver Manger Sudio

修改服务器的身份验证模式

修改服务器的身份验证模式为“SQL Server和Windows身份验证模式”。
打开MS SQLserver Manger Sudio
右键服务器->属性
在这里插入图片描述
点击“安全性”,并勾选图中两个选项:
在这里插入图片描述
关闭MS SQLserver Manger Sudio

实验背景

期末考试结束了,小晨作为DBMS管理员,既要保证老师能够正确输入成绩,又要保证学生只能查看成绩,还要确保各个角色的用户权限的正确性,小晨陷入了沉思……

实验结构:

  • 数据库Score:拥有所有学生的成绩
    • 表ScoreA:A班成绩
    • 表ScoreB:B班成绩
  • 每个表的属性列有:学号、姓名、科目、成绩
  • 数据库角色:
    • 老师Kong:A班班主任,拥有查看所有学生成绩并且对A班有所有权限
    • 老师Ling:教B班的DS老师,只拥有查看学生成绩和修改B班DS成绩的权限
    • 老师Meng:年级主任,拥有对数据库查看和修改数据的权限,但不具有删除的权限
    • 学生Student:只能查看自己的成绩
  • 老师可以授予学生一定的权限

实验步骤

创建数据库、表

CREATE DATABASE Score
go

USE Score;

-- ABCD四个班
CREATE TABLE A(
id int PRIMARY KEY,
name VARCHAR(30) NOT NULL,
course VARCHAR(30) NOT NULL,
sorce VARCHAR(30) NOT NULL
);
CREATE TABLE B(
id int PRIMARY KEY,
name VARCHAR(30) NOT NULL,
course VARCHAR(30) NOT NULL,
sorce VARCHAR(30) NOT NULL
);

随便设置一些数据,导入:

20190001	张日成	数据结构	80
20190001	张日成	面向对象	80
20190001	张日成	编译原理	100
20190001	张日成	PHP程序设计	80
20190010	椰子片	数据结构	100
20190010	椰子片	C++程序设计	100
20190010	椰子片	计算机网络	100
20190010	椰子片	操作系统	100
20190020	陈小聪	数据结构	89
20190020	陈小聪	编译原理	70
20190020	陈小聪	软件工程	90
20190020	陈小聪	动画设计	100

20192002	宋白	数据结构	98
20192002	宋白	计算机网络	97
20192002	宋白	操作系统	78
20192003	吴京牛	数据结构	59
20192003	吴京牛	操作系统	56
20192003	吴京牛	计算机系统	78
20192004	宋大宝	数据结构	20

导入后查看数据:

SELECT * FROM A
select * from B

在这里插入图片描述

创建数据库角色

首先需要创建服务器对象:

create login K with password = '123456';
create login L with password = '123456';
create login M with password = '123456';
create login S with password = '123456';

紧接着,创建数据库对象

use Score
go
create user Kong for login K
create user Ling for login L
create user Meng for login M
create user Student for login S

授予权限

授予老师的权限

-- 授予老师Kong权限
-- 查看所有学生成绩
use Score
grant select on A to Kong
with grant option
grant select on B to Kong
with grant option

GRANT ALTER,DELETE,INSERT on A to Kong -- 授予kong老师对A班至高无上的权力
-- 授予Ling老师的权限
use Score
grant select on A to Ling
with grant option
grant select on B to Ling
with grant option

GRANT update("成绩"),alter  on B to Ling  -- ling老师只能修改成绩
-- 年级主任
use Score
GRANT SELECT,ALTER,UPDATE ON A TO Meng
with grant option
GRANT SELECT,ALTER,UPDATE ON B TO Meng
with grant option

授予学生权限

验证权限

-- 使用Kong登录,验证kong老师的权限
use Score
select * FROM B
SELECT * FROM A

use Score
insert into A("学号","姓名","课程","成绩")
values (20190033,'张大成','计算机网络','80')

-- 报错
use Score
insert into B("学号","姓名","课程","成绩")
values (20190063,'张小成','计算机网络','80')
-- 使用Ling登录
use Score
select * FROM B
SELECT * FROM A
-- 成绩清空
UPDATE B SET "成绩"=0
-- 报错
UPDATE B SET "学号"=0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zeker62

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值