精编安全生产实验三实现数据库的安全性与数据的完整性.docx
《精编安全生产实验三实现数据库的安全性与数据的完整性.docx》由会员分享,可在线阅读,更多相关《精编安全生产实验三实现数据库的安全性与数据的完整性.docx(9页珍藏版)》请在冰点文库上搜索。
精编安全生产实验三实现数据库的安全性与数据的完整性
【安全生产】实验三实现数据库的安全性与数据的完整性
xxxx年xx月xx日
xxxxxxxx集团企业有限公司
Pleaseenteryourcompany'snameandcontentv
实验三实现数据库的安全性与数据的完整性
一、实验目的
1.了解SQLServer2000的身份验证方法。
2.掌握合法登录帐户的设置。
3.掌握用户的权限管理方法。
4.掌握实体完整性与参照完整性的实现方法。
5.掌握域完整性的实现方法。
二、实验内容
1.Windows和SQLServer2000身份验证的比较。
2.设置登录帐户。
3.设置数据库用户权限。
4.参照完整性
5.实体完整性
6.域完整性
三、实验准备
1.登录模式
a)SQLServer和Windows:
指定用户可以使用SQLServer身份验证和Windows身份验证连接到SQLServer。
b)仅Windows:
指定用户只能使用Windows身份验证连接SQLServer。
2.权限验证
当验证了用户的身份并允许其登录到SQLServer2000实例之后,在用户必须访问的每个数据库中都要求单独的用户帐户。
在每个数据库中都要求用户帐户可防止用户连接到SQLServer实例并访问服务器上的所有数据库
3.角色
利用角色,SQLServer管理者可以将某些用户设置为某一角色,这样只对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了管理员的工作量。
SQLServer提供了用户通常管理工作的预定义服务器角色和数据库角色。
服务器角色
●系统管理员:
拥有SQLServer所有的权限许可。
●服务器管理员:
管理SQLServer服务器端的设置。
●磁盘管理员:
管理磁盘文件。
●进程管理员:
管理SQLServer系统进程。
●安全管理员:
管理和审核SQLServer系统登录。
●安装管理员:
增加、删除连接服务器,建立数据库复制以及管理扩展存储过程。
●数据库创建者:
创建数据库,并对数据库进行修改
数据库角色
●public:
维护全部默认许可。
●db_owner:
数据库的所有者,可以对所拥有的数据库执行任何操作。
●db_accessadmin:
可以增加或者删除数据库用户、工作组和角色。
●db_addladmin:
可以增加、删除和修改数据库中的任何对象。
●db_securityadmin:
执行语句许可和对象许可。
●db_backupoperator:
可以备份和恢复数据库。
●db_datareader:
能且仅能对数据库中的任何表执行select操作,从而读取所有表的信息。
●db_datawriter:
能够增加、修改和删除表中的数据,但不能进行select操作。
●db_denydatareader:
不能读取数据库中任何表中的数据。
●db_denydatawriter:
不能对数据库中的任何表执行增加、修改和删除数据操作。
4.实体完整性
把表中的每行看做一个实体,它要求所有行都具有惟一标识通过建立索引、PRIMARYKEY约束、UNIQUE约束以及列的IDENTITY来实现。
例1:
CREATEtableemployee
(job_idsmallintPRIMARYKEY,
job_namechar(20)notnull
)
例2:
CREATEtablestudent
(snamechar(10),
Snointnotnull,
Primarykey(sno)
)
例3:
createtableii
(aintnotnullIDENTITY(1,3),
bchar
)
5.参照完整性
维护被参照表与参照表之间的数据一致性,通过主键(PRIMARYKEY)和外键(FOREIGNKEY)约束实现。
使用FOREIGNKEY约束需注意:
FOREIGNKEY约束只参照同一个数据库中的其它表,跨数据库表的参照只能通过触发器来实现。
例:
CREATEtablePR
(idintnotnullprimarykey,
Namechar(10)
)
CREATEtableFR
(idintnotnullReferencesPR(id),
Scoreintnotnull)
6.域完整性(用户定义)
要求表中指定列的数据具有正确的数据类型、格式和有效的数据范围。
通过默认值、CHECK、规则等约束实现
例1:
CHECK约束
CREATEtableexample
(idintnotnull,
Scoreintnotnullcheck(score>=0andscore<=100)
)
例2:
对计算列使用表达式
CREATETABLEmytable
(
lowint,
highint,
myavgAS(low+high)/2
)
四、实验步骤
1.数据库安全性的实现
(1)练习1:
创建用户(本部分练习请参看课本P137-143)
A.创建一个testlogin数据库
B.新建登录wangming,liyong,liuxing,yanglan,并设定密码,服务器角色设为“系统管理员”数据库访问为testlogin。
[提示]
1.SQLServer默认的用户登录帐号:
Sa、builtin\administrators
2.新建登录(注意身份验证模式),对“服务器角色”及“数据库访问”的设定。
(2)练习2:
数据库用户权限管理(注:
部分操作还可以通过企业管理器实现)
给定两个关系模式
E(职工)(职工号,姓名,年龄,职务,工资,部门号)
P(部门)(部门号,名称,经理名,地址,电话)
用SQL语言中的GRANT和REVOKE语句,完成以下授权定义或存取控制功能:
a)用户wangming对表E有SELECT权力
b)用户liyong对P有INSERT和DELETE权力
c)把对表E的查询权力授予用户liuxing,并给liuxing有再授权的权力
d)用户liuxing对表P的字段(地址,电话)有修改的权力
e)用户yanglan具有从每个部门职工中SELECT最高工资、最低工资,平均工资的权力,不能查看每个人的工资(可以用视图)
f)对上述每一种情况,撤销各用户所授予的权力。
[提示]
用户(或应用程序)使用数据库的方式称为权限。
权限有几种:
●读权限:
允许用户读数据,但不能修改数据
●插入权限:
允许用户插入新的数据,但不能修改数据
●修改权限:
允许用户修改数据,但不能删除数据
●删除权限:
允许用户删除数据
Transaction_SQL语句使用grant、revoke和deny三种命令来实现管理权限
GRANT权限依赖于所授予的语句权限和权限中涉及的对象。
sysadmin角色中的成员可在任何数据库中授予任何权限。
对象所有者可为他们所拥有的对象授予权限。
db_owner或db_securityadmin角色的成员可授予其数据库中任何语句或对象上的任何权限。
2.数据完整性的实现
1)练习3:
请通过数据完整性策略实现数据的完整性。
(见下述每个表的说明部分)
表1学生情况表XSQK的结构
列名
数据类型
长度
是否允许为空值
默认值
说明
学号
Char
6
N
主键
姓名
Char
8
N
性别
Bit
2
N
出生日期
smalldatetime
4
N
专业名
Char
10
N
所在系
Char
10
N
联系电话
char
13
Y
表2课程表KC的结构
列名
数据类型
长度
是否允许为空值
默认值
说明
课程号
Char
3
N
主键
课程名
Char
20
N
教师
Char
10
开课学期
Tinyint
1
学时
Tinyint
3
60
学分
Tinyint
2
N
表3成绩表XS_KC的结构
列名
数据类型
长度
是否允许为空值
默认值
说明
学号
Char
6
N
参考XSQK表的学号
课程号
Char
3
N
参考KC表的课程号
成绩
int
4
0-100
2)练习4:
根据表4及表5,完成以下题目:
a)在部门表和员工表的结构中标注主关键字。
b)确定在部门表和员工表中共有的属性。
c)指出哪个表中的属性是外关键字。
d)确定哪个表是主表,哪个表是从表。
e)部门表和员工表是如何通过关键字实施数据完整性的。
f)用SQL语句建立符合上述数据的表,并实现数据的完整性。
表4部门表
部门代码
部门名
负责人
地点
0001
生产部
李华江
浙江杭州
0002
销售部
张丽
浙江宁波
0003
市场部
王欣
浙江温州
表5员工表
员工代码
姓名
家庭住址
联系电话
邮政编码
部门代码
200001
王华
杭州
86960986
310006
0001
200002
李想
富阳
85438769
310010
0003
200003
张丽
杭州
67893542
310017
0002
200004
李华江
萧山
82849873
310101
0001
谢谢阅读!
!
!
随心编辑,值得下载拥有!
专业│专注│精心│卓越