第 8 章 数据库系统的安全性管理
-
Upload
drake-ayers -
Category
Documents
-
view
81 -
download
6
description
Transcript of 第 8 章 数据库系统的安全性管理
![Page 1: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/1.jpg)
2005年 9月 第 1页
第 8 章 数据库系统的安全性管理 教学内容: SQL Server 安全控制机制 SQL Server 登录账户管理 SQL Server 管理数据库用户 SQL Server 管理权限 SQL Server 角色管理 SQL Server 安全性管理的途径
![Page 2: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/2.jpg)
2005年 9月 第 2页
8.1 SQL Server 安全控制机制 8.1.1 数据库系统的安全控制模型
用户数据库
应用程序
数据库
数据库管理系统
操作系统
身份验证 文件操作控制操作权限控制 加密/冗余
![Page 3: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/3.jpg)
2005年 9月 第 3页
8.1.2 数据库权限和用户分类 对数据库管理系统正常运行而进行的维护权限 对数据库中的对象和数据的操作权限
对数据库对象的权限 对数据库数据的操作权
用户按其操作权限的大小可分为 数据库系统管理员 数据库对象拥有者 普通用户
![Page 4: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/4.jpg)
2005年 9月 第 4页
8.1.3 SQL Server 的安全机制 建立在认证和访问许可机制上的
身份验证 访问权验证 操作权验证
SQL Server 登录账户的来源有两种:Windows 授权用户:来自于 Windows 的用户或组;SQL 授权用户:来自于非 Windows 的用户,我们也将这种用户称为 SQL 用户。
![Page 5: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/5.jpg)
2005年 9月 第 5页
1 . Windows 身份验证模式
![Page 6: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/6.jpg)
2005年 9月 第 6页
2 . SQL Server 身份验证模式 用户在连接 SQL Server 时必须提供登录名和登录密码,这些登录信息存储在系统
表 syslogins 中,与 NT 的登录账号无关 。
![Page 7: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/7.jpg)
2005年 9月 第 7页
3 .混合验证模式
![Page 8: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/8.jpg)
2005年 9月 第 8页
8.1.4 设置 SQL Server 的认证模式
![Page 9: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/9.jpg)
2005年 9月 第 9页
8.2 管理 SQL Server 登录账户 有两类登录账户
一类是由 SQL Server 自身负责身份验证的登录账户;另一类是登录到 SQL Server 的 Windows
NT/2000 网络账户,可以是组账户或用户账户。
![Page 10: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/10.jpg)
2005年 9月 第 10页
8.2.1 系统的登录账户
![Page 11: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/11.jpg)
2005年 9月 第 11页
8.2.2 管理登录账户
![Page 12: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/12.jpg)
2005年 9月 第 12页
2 .使用系统存储过程管理登录账户 sp_addlogin :创建新的使用 SQL Server 认证模式的登录账号; sp_revokelogin :删除账户,但不能删除系统管理者 SA 以及当前连接到 SQL Server 的登录。 如果与登录相匹配的用户仍存在数据库 sysusers 表中,则不能删除该登录账号。 sp_addlogin 和 sp_droplogin 只能用在 SQL Server 认证模式下。 sp_denylogin :拒绝某一用户连到 SQL Server 上。 sp_granlogin :设定 windows 用户或组成员为 SQL Server 用户。
sp_granlogin 和 sp_revokelogin 只有使用于 NT 认证模式下对NT 用户或用户组账号做设定,而不能对 SQL Server 维护的登录账号进行设定。
sp_droplogin :删除登录 SQL Server 账户,禁止该用户访问。 sp_helplogins :用来显示所有登录到 SQL Server 账户的信息。
![Page 13: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/13.jpg)
2005年 9月 第 13页
8.3 管理数据库用户 8.3.1 数据库用户简介
数据库用户用来指出哪一个人可以访问哪一个数据库。 用户对数据的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的,用户账号总是基于数据库的。 用户账号和登录账号
用户账号只表明该账号通过了 NT 认证或 SQL Server 认证,但不能表明其可以对数据库数据和数据对象进行某种或某些操作,所以一个登录账号总是与一个或多个数据库用户账号(这些账号必须分别存在相异的数据库中)相对应,这样才可以访问数据库。
![Page 14: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/14.jpg)
2005年 9月 第 14页
8.3.2 管理数据库用户
![Page 15: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/15.jpg)
2005年 9月 第 15页
2.使用系统存储过程管理数据库用户 SQL Server 利用以下系统过程管理数据库用户
sp_adduser 、 sp_granddbaccess :创建新数据库用户。sp_dropuser 、 sp_revokedbaccess :删除数据库用户。sp_helpuser :查看用户和数据库角色的信息。
![Page 16: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/16.jpg)
2005年 9月 第 16页
8.4 管理权限 1 .对象权限 对象权限是指用户对数据库中的表、视图、存储过程等对象的操作权,如:
对表和视图,可以使用 SELECT 、 INSERT 、 UPDATE 和 DELETE权限。 对于表和视图的字段;可以使用 SELECT 和 UPDATE 权限。 对于存储过程;可以使用 EXECUTE 权限。
2 .语句权限 语句权限相当于数据定义语言( DDL )的语句权限,这种权限专指是否允许执行下列语句:
CREATETABLE 、 CREATEPROCEDURE 、 CREATEVIEW 等与创建数据库对象有关的操作。3 .隐含权限 隐含权限是指由 SQL Server 预定义的服务器角色、隐含权限相当于内置权限,而不再需要明确地授予这些权限。例如,数据库拥有者自动地拥有对数据库进行一切操作的权限。
![Page 17: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/17.jpg)
2005年 9月 第 17页
8.4.2 权限的管理 权限的管理包含如下三个内容;
授予权限( GRANT ):允许用户或角色具有某种操作权。收回权限( REVOKE ):不允许用户或角色具有某种操作权,或者收回曾经授予的权限。拒绝访问( DENY ):拒绝某用户或角色具有某种操作权,既使用户或角色由于继承而获得这种操作权,也不允许执行相应的操作。
![Page 18: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/18.jpg)
2005年 9月 第 18页
1 .使用企业管理器管理对象权限
![Page 19: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/19.jpg)
2005年 9月 第 19页
2 .使用企业管理器管理语句权限
![Page 20: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/20.jpg)
2005年 9月 第 20页
8.5 管理角色 具有相同权限的用户就称为角色。 角色分为:
系统预定义的固定角色用户根据自己的需要定义的用户角色
系统角色又根据其作用范围的不同而被分为:固定的服务器角色,是为整个服务器设置的固定的数据库角色,是为具体的数据库设置的。
![Page 21: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/21.jpg)
2005年 9月 第 21页
8.5.1 固定的服务器角色 固定服务器角色 描述
sysadmin 在 SQL Server 中进行任何活动。该角色的权限跨越所有其它固定服务器角色。serveradmin 配置服务器范围的设置。setupadmin 添加和删除链接服务器,并执行某些系统存储过程(如 sp_serveroption )。securityadmin 管理服务器登录。processadmin 管理在 SQL Server 实例中运行的进程。dbcreator 创建和改变数据库。diskadmin 管理磁盘文件。bulkadmin 执行 BULK INSERT 语句
![Page 22: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/22.jpg)
2005年 9月 第 22页
1 .查看固定的服务器角色
![Page 23: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/23.jpg)
2005年 9月 第 23页
2 .添加固定的服务器角色的成员
![Page 24: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/24.jpg)
2005年 9月 第 24页
8.5.2 固定的数据库角色 固定数据库角色 描述
db_owner 进行所有数据库角色的活动,以及数据库中的其它维护和配置活动。该角色的权限跨越所有其它固定数据库角色。db_accessadmin 在数据库中添加或删除 Windows NT 4.0 或 Windows 2000 组和用户以及 SQL Server 用户。db_datareader 查看来自数据库中所有用户表的全部数据。db_datawriter 添加、更改或删除来自数据库中所有用户表的数据。db_ddladmin 添加、修改或除去数据库中的对象(运行所有 DDL )。db_securityadmin 管理 SQL Server 2000 数据库角色的角色和成员,并管理数据库中的语句和对象权限。db_backupoperator 有备份数据库的权限。db_denydatareader 拒绝选择数据库数据的权限。db_denydatawriter 拒绝更改数据库数据的权限。
![Page 25: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/25.jpg)
2005年 9月 第 25页
8.5.3 用户自定义角色 为某些数据库用户设置相同的权限,但这些权限不等同于预定义的数据库角色所具有的权限。 用户自定义的数据库角色具有以下几个优点:
SQL Server 数据库角色可以包含 NT 用户组或用户;在同一数据库中用户可以具有多个不同的自定义角色,这种角色的组合是自由的,而不仅仅是 public 与其它一种角色的结合;角色可以进行嵌套,从而在数据库实现不同级别的安全性。
![Page 26: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/26.jpg)
2005年 9月 第 26页
用户定义的数据库角色有两种类型 标准角色
它通过对用户权限等级的认定而将用户划分为不同的用户组,使用户总是相对于一个或多个角色,从而实现管理的安全性。 应用程序角色
让某些用户只能通过特定的应用程序间接地存取数据库中的数据(比如通过 Microsoft Excel ) 而不是直接地存取数据库数据时,我们就应该考虑使用应用程序角色。
![Page 27: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/27.jpg)
2005年 9月 第 27页
1 .创建用户自定义的角色
![Page 28: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/28.jpg)
2005年 9月 第 28页
2 .为用户定义的角色授权
![Page 29: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/29.jpg)
2005年 9月 第 29页
8.6 SQL Server 安全性管理的途径 使用视图作为安全机制 使用存储过程作为安全机制
![Page 30: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/30.jpg)
2005年 9月 第 30页
8.6.1 使用视图作为安全机制 1.使用行级、列级别安全性的视图 例 8-1 : 在该例中某一销售点只能查看它自己的销售信息。我们使用 pubs 数据库中的 sales 表。 首先创建视图:
USE pubsCREATE VIEW vwSpecificsale AS
SELECT ord_num, ord_date, qty, payterms, title_id FROM salesWHERE stor_id = ‘7067’
当执行 SELECT * FROM vwSpecificsale 时只显示stor_id = ‘7067’ 的部分数据,把其他的数据屏蔽了,来保证其他数据安全。
![Page 31: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/31.jpg)
2005年 9月 第 31页
2 .视图与权限结合 将访问视图的权限授予给用户,这样即使该用户不具有访问视图所引用的基本表的权限,但其仍可以从中查看相应的数据信息。
![Page 32: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/32.jpg)
2005年 9月 第 32页
8.6.2 使用存储过程作为安全机制 让该用户具有存储过程的 EXEC 权限就可以了。当然要确保该存储过程中包含了查询语句。比如可创建下面的存储过程:
create procedure selsales asselect * from sales
然后将存储过程的 EXEC 权限授予用户,当用户执行该存储过程时就可以查看到相应信息。
![Page 33: 第 8 章 数据库系统的安全性管理](https://reader035.fdocument.pub/reader035/viewer/2022082211/568130f5550346895d971c02/html5/thumbnails/33.jpg)
2005年 9月 第 33页
8.7 小 结 SQL Server 2000 将权限的认证过程分为三步:第一步是验证用户是否是合法的服务器的登录账户;第二步是验证用户是否是要访问的数据库的合法用户;第三步是验证用户是否具有适当的操作权。