资源预览内容
第1页 / 共124页
第2页 / 共124页
第3页 / 共124页
第4页 / 共124页
第5页 / 共124页
第6页 / 共124页
第7页 / 共124页
第8页 / 共124页
第9页 / 共124页
第10页 / 共124页
亲,该文档总共124页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据库原理与应用,第六章数据库保护技术,第6章 数据库的安全保护,6.1.1 安全控制 6.1.2 SQL Server的安全控制6.1.3 管理SQL Server登录帐户6.1.4 管理数据库用户6.1.5 管理权限6.1.6 角色,6.1.1 安全控制,安全控制:在数据库应用系统的不同层次提供对有意损害行为的安全防范。1. 安全控制模型 2. 数据库权限的种类及用户分类,1. 安全控制模型,2. 数据库权限的种类及用户的分类,权限的种类系统维护权操作权数据库对象权限:创建、修改、删除数据操作权:增、删、改、查用户的分类系统管理员对象拥有者普通用户,6.1.2 SQL Server的安全控制,三个认证过程第一个是验证用户连接到SQL Server数据库服务器的资格。第二个是验证用户是否是数据库的合法用户。第三个是验证用户是否具有操作许可。,SQL Server用户来源和认证模式,1用户来源 Windows授权用户 SQL授权用户 2认证模式混合模式 Windows Only授权模式3.设置安全验证模式使用企业管理器,6.1.3 管理SQL Server登录帐户,建立登录帐户 修改登录帐户的属性 删除登录帐户,建立登录帐户,展开“安全性”,单击“登录”节点。右击内容窗格中的空白处,从弹出式菜单中选择“新建登录”命令。,修改登录帐户的属性,展开“安全性”,单击“登录”节点。在右边的内容窗格中,右击想要修改密码的登录帐户,从弹出的菜单中选择“属性”命令。可以进行如下更改:更改密码更改默认数据库更改显示给用户所使用的语言,删除登录帐户,展开“安全性”节点,单击“登录”节点。在右边的内容窗格中,右击想要删除的登录帐户,从弹出的菜单中选择“删除”命令或按Delete键。,6.1.4 管理数据库用户,建立数据库用户 删除数据库用户,单击要建立数据库用户的数据库节点,右击“用户”,在弹出的菜单上选择“新建数据库用户”命令。,展开要删除用户的数据库。单击“用户”,然后在右边的内容窗格中右击想要删除的数据库用户,从弹出的菜单中选择“删除”命令。,6.1.5 管理权限,SQL Server权限种类权限的管理,SQL Server权限种类,对象权限 是指用户对数据库中的表、视图等对象中数据的操作权。语句权限 相当于数据定义语言(DDL)的语句权限,这种权限专指是否允许执行:CREATE TABLE、 CREATE VIEW等与创建数据库对象有关的操作。隐含权限 指由SQL Server预定义的服务器角色、数据库角色、数据库拥有者和数据库对象拥有者所具有的权限。,权限的管理,授予权限:允许用户或角色具有某种操作权。收回权限:废除类似于拒绝,不允许用户或角色具有某种操作权,或者收回曾经授予的权限。但是,废除权限是删除已授予的权限,并不妨碍用户、组或角色从更高级别继承已授予的权限。拒绝权限:拒绝某用户或角色具有某种操作权,既使用户或角色由于继承而获得这种操作权,也不允许执行相应的操作。,使用企业管理器管理数据库用户权限,展开“数据库”节点并展开要设置权限的数据库,单击“用户”节点。在内容窗格中右击要设置权限的数据库用户,从弹出的菜单中选择“所有任务”下的“管理权限”命令 。,授予权限,拒绝权限,收回权限,使用企业管理器管理语句权限,展开“数据库”,右击要设置语句权限的数据库,从弹出的菜单中选择“属性”,在弹出的窗口中,选择“权限”标签页。,使用Transact-SQL语句管理对象权限,GRANT:授予权限;REVOKE:收回权限;DENY:拒绝权限。,语法格式,授权语句 GRANT 对象权限名 , ON 表名 | 视图名 | 存储过程名 TO 数据库用户名 | 用户角色名 , 收权语句 REVOKE 对象权限名 , ON 表名 | 视图名 | 存储过程名 FROM 数据库用户名 | 用户角色名 , 拒绝语句DENY 对象权限名 , ON 表名 | 视图名 | 存储过程名 TO 数据库用户名 | 用户角色名 , ,示例,例1为用户user1授予Student表的查询权。 GRANT SELECT ON Student TO user1例2为用户user1授予SC表的查询权和插入权。 GRANT SELECT,INSERT ON SC TO user1例3收回用户user1对Student表的查询权。 REVOKE SELECT ON Student FROM user1例4拒绝user1用户具有SC表的更改权。 DENY UPDATE ON SC TO user1,使用Transact-SQL语句管理语句权限,授权语句 GRANT 语句权限名 , TO 数据库用户名 | 用户角色名 , 收权语句 REVOKE 语句权限名 , FROM 数据库用户名 | 用户角色名 , 拒绝语句 DENY 语句权限名 , TO 数据库用户名 | 用户角色名 , ,示例,例1授予user1具有创建数据库表的权限。 GRANT CREATE TABLE TO user1例2授予user1和user2具有创建数据库表和视图的权限。 GRANT CREATE TABLE, CREATE VIEW TO user1, user2例3收回授予user1创建数据库表的权限。 REVOKE CREATE TABLE FROM user1例4拒绝user1创建视图的权限。 DENY CREATE VIEW TO user1,6.1.6 角色,为便于对用户及权限的管理,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为角色(Role)。SQL Server 2000中,角色分为: 固定的服务器角色固定的数据库角色用户自定义的角色,固定的服务器角色,添加固定的服务器角色的成员,展开“安全性”节点,单击“服务器角色”,在右边的内容窗格中,在要添加成员的固定的服务器角色上右击鼠标,在弹出的菜单中选择“属性”命令。单击“添加”按钮。,删除固定的服务器角色成员,选择要删除的登录帐户,单击“删除”按钮。,固定的数据库角色,添加固定的数据库角色的成员,展开“数据库”节点,展开要操作的数据库,单击“角色”,右击右边内容窗格中要添加成员的数据库角色在弹出的菜单中选择“属性”命令。 单击“添加”。,删除数据库角色的成员,选择要删除的用户,单击“删除”按钮。,用户自定义的角色,用户自定义的角色属于数据库一级的角色。用户可以根据实际的工作职能情况定义自己的一系列角色,并给每个角色授予合适的权限。 用户自定义的角色的成员可以是数据库的用户,也可以是用户定义的角色。,建立用户自定义的角色,展开“数据库”,并展开要添加用户自定义角色的数据库。右击“角色”节点,选择“新建数据库角色”命令。,为用户定义的角色授权,展开要操作的用户自定义角色所在的数据库。右击“角色”节点,在右边的内容窗格中,右击要授予权限的用户自定义的角色,在弹出的菜单中选择“属性”命令。单击“权限” 按钮。除public和用户自定义角色可以修改权限外其余标准角色权限均不能修改,添加和删除用户自定义角色的成员,同固定的数据库角色添加和删除成员的过程。,6.2 数据完整性保护,6.2.1 数据完整性基本概念 6.2.2 实现声明完整性 6.2.3 实现过程完整性,6.2.1 数据完整性基本概念,数据的完整性是为了防止数据库中存在不符合语义的数据。这些加在数据库数据之上的语义约束条件就是数据完整性约束条件。这些约束条件作为表定义的一部分存储在数据库中。DBMS检查数据是否满足完整性条件的机制就称为完整性检查。,完整性约束条件的作用对象,列级约束对数据类型的约束对数据格式的约束对取值范围或取值集合的约束对空值的约束元组约束元组中各个字段之间的联系的约束,如:开始日期小于结束日期。关系约束是若干元组之间、关系之间的联系的约束。,实现数据完整性的方法,一种是在定义表时声明数据完整性,称为声明完整性,另一种是在服务器端编写触发器来实现,称为过程完整性。在执行对数据的增、删、改操作时,数据库管理系统自动检查用户定义的完整性约束条件。,6.2.2 实现声明完整性,1主码约束每个表只能有一个PRIMARY KEY约束;用PRIMARY KEY约束的列取值不能有重复,而且不允许有空值;添加主码约束的语法格式:ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY ( , n ),例:对雇员表和工作表添加主码约束,ALTER TABLE 雇员表 ADD CONSTRAINT PK_EMP PRIMARY KEY (雇员编号)ALTER TABLE 工作表 ADD CONSTRAINT PK_JOB PRIMARY KEY (工作编号),2UNIQUE约束,用于限制在一个列中不能有重复的值。用在事实上具有惟一性的属性列上,比如每个人的身份证号码、驾驶证号码等均不能有重复值。注意:允许有一个空值;在一个表中可以定义多个UNIQUE约束;可以在一个列或多个列上定义UNIQUE约束。,添加UNIQUE约束,添加UNIQUE约束的语法格式为: ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE( , n )例为雇员表的“电话”列添加UNIQUE约束。ALTER TABLE 雇员表 ADD CONSTRAINT UK_SID UNIQUE(电话),3外码约束,实现引用完整性。外码所引用的列必须是有PRIMARY KEY约束或UNIQUE约束的列。添加FOREIGN KEY约束的语法格式为:ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY() REFERENCES 引用表名(),示例,例为雇员表的工作编号添加外码引用约束。ALTER TABLE 雇员 ADD CONSTRAINT FK_job_id FOREIGN KEY (工作编号)REFERENCES 工作表 (工作编号),4DEFAULT约束,用于提供列的默认值。只有在向表中插入数据时才检查DEFAULT约束。添加DEFAULT约束的语法格式为:ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 列名例定义雇员表的工资的默认值为1000。ALTER TABLE 雇员 ADD CONSTRAINT DF_SALARYDEFAULT 1000 FOR 工资,CHECK约束,用于限制列的取值在指定的范围内,使数据库中存放的值都是有意义的。系统在执行INSERT语句和UPDATE语句时自动检查CHECK约束。CHECK约束可约束同一个表中多个列之间的取值关系。添加CHECK约束的语法格式为:ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (逻辑表达式),示例,例1限制雇员的工资必须大于等于200。ALTER TABLE 雇员 ADD CONSTRAINT CHK_SalaryCHECK ( 工资 = 200 )例2限制工资表的最低工资小于等于最高工资。ALTER TABLE 工作 ADD CONSTRAINT CHK_Job_Salary CHECK( 最低工资 = 最高工资 ),
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号