[能源/化工]项目九公司管理数据库系统的安全性管理
首页
第_9_次(单元)课 授课时间: 课程名称 SQL SERVER数据库设计 专业班级 层次
5 学时 授课教师 职称 课 型(大、小)
项目九 公司管理数据库系统的安全性管理 授课题目(章、节)
授课方式 理论课;实验课
教材及主要参考书 SQL Server 2000 数据库
教学目的与要求:
1(能正确使用SQL Server2000的安全管理机制
2(能正确设置SQL Server2000的身份验证
。
3(会创建和管理数据库用户。
4(会正确设置理数据库权限
教学过程设计(内容、时间安排、教学方法等):
理论课3学时
实验课2学时
教学重点、难点:
, 安全管理机制
, 会创建和管理数据库用户
教研室审阅意见:
教研室主任签名:
年 月 日
基 本 内 容
项目九 公司管理数据库系统的安全性管理 一、教学目标
终极目标:利用SQL Server2000提供的安全机制实现公司管理数据库系统的安全管理。
促成目标:
1(能正确使用SQL Server2000的安全管理机制
2(能正确设置SQL Server2000的身份验证方法。
3(会创建和管理数据库用户。
4(会正确设置理数据库权限。
二、工作任务
数据安全性一直是困扰数据库设计者的一个重要问题,本项目主要完成companyinfo数据库系统的安全管理设置。具体任务如下:
1( 设置SQL Server2000登录的身份验证模式为“SQL Server 和windows”
混合身份验证模式。
2( 添加一个帐户名为liyan的windows身份验证的登录帐户,然后再删除
该帐户。
3( 添加帐户名分别为arlin、abc和wangjun的SQL Server登录帐户,然后
再删除名称为abc的登录帐户。
4( 设置和删除数据库用户,要求如下:
, 将任务3中设置的SQL Server登录帐户“arlin”映射为companyinfo
数据库的用户,用户名为“李平”,即给数据库companyinfo添加一个
名为“李平”的数据库用户。
, 将任务3中设置的SQL Server登录帐户“wangjun”映射为
companyinfo数据库的用户,用户名为“王军”;然后再删除“王军”这
个数据库用户及其登录帐户“wangjun”。
5( 设置数据库用户“李平”对表P_order的相关列具有修改操作的权限。 三、相关实践知识
(一) 按照任务1的要求,设置SQL Server2000登录的身份验证模式为“SQL Server 和windows”混合身份验证模式。
其操作步骤如下:
1( 在企业管理器中,展开SQl Server服务器组。
2( 右击要设置身份验证的服务器,并在打开的快捷菜单中选择“属性”。
3( 单击“安全性”选项卡。
4( 在“身份验证”下,选择“SQl Server和Windows”,如图9-1所示。
5( 在“审核级别”的单选内容中,选中用户访问SQL Server的级别。其含
义如下:
, “无”:表示不执行审核。
, “成功”:表示只审核成功的登录尝试。
, “失败”:表示只审核失败的登录尝试。
, “全部”:表示审核成功的和失败的登录尝试。
6、单击“确定”按钮,完成任务1的设置。
说明:当改变设置后~必须停止并重新启动SQl Server服务器~设置才会生效。
(二) 按照任务2要求,添加一个名为liyan的windows身份验证的登录帐户,然后再删除该帐户。
1(添加一个名liyan的windows身份验证的登录帐户
方法一:利用企业管理器实现
其操作步骤如下:
(1) 在企业管理器中,展开SQl Server服务器组中相应的服务器。 (2) 展开“安全性”,右击【登录】|【新建登录】命令。 (3) 在打开的“新建登录”对话框的“名称”框中,输入要被授权访问SQL Server的Windows帐户名称,其
为“域名\帐户名”,本任务中输入“YANGLIN\liyan”。
说明:当前使用的计算机的域名是“YANGLIN”。
(4) 在“身份验证”下,单击“Windows身份验证”。 (5) 可选(数据库和语言):选择用户登录到SQL Server实例后所连接的默认数据库和显示用户的信息所默认的语言。
单击“确定”按钮,完成任务2中liyan帐户的设置。
说明:添加了新的登录帐户后~在企业管理器中展开SQL Server服务器相应的服务器~选择“安全性”|“登录”~则可以查看已存在的帐户。 方法二:利用Transact-SQL命令实现
在查询分析器中执行如下命令即可。
EXEC sp_grantlogin 'YANGLIN\liyan'
2(利用企业管理器,删除已设置的登录帐户liyan。
方法一:利用企业管理器实现
要删除已创建的登录帐户:首先在如图9-10所示的窗口中,用鼠标右键单击要删除的帐户,在打开的快捷菜单中选择“删除”,接着将弹出是否确实删除的消息提示对话框,在消息提示框中,用鼠标单击“是”按钮即可完成帐户的删除。
方法二:利用Transact-SQL命令实现
在查询分析器中执行如下命令,即可删除Windows NT/2000帐户YANGLIN\
liyan。
EXEC sp_revokelogin 'YANGLIN\liyan'
(三)按照任务3的要求,添加arlin、abc和wangjun的SQL Server登录帐户,然后再删除名称为abc的登录帐户。
1( 利用企业管理器实现添加SQL Server登录帐户arlin。
利用企业管理器添加SQL Server登录帐户方法同任务2,只是在图9-3的对话框中选择“SQL Server身份验证”和用户密码,然后单击“确定”按钮。用同样的
方法创建名为abc和wangjun的SQL Server登录帐户。
说明:需要确保新添加的帐户拥有对默认数据库的访问权限~其设置方法
后述。
注意:在SQL Server身份验证的登录帐户,任务3,与windows身份验证
的登录帐户,任务2,设置时~其帐户名称输入格式的区别。前者只需输入
“帐户名”~而后者必须一“域名\帐户名”的格式输入。
2(用Transact-SQL命令删除SQL Server登录帐户“abc”。
在查询分析器中执行如下命令,即可删除SQL Server登录帐户“abc”。
EXEC sp_droplogin 'abc'
注意:任务2和任务3删除Windows NT/2000登录帐户liyan和SQL Server
登录帐户abc时命令是的区别。
(四) 按照任务4要求,给companyinfo数据库添加数据库用户“李平”。 1(利用企业管理器实现,其操作步骤如下:
(1) 在企业管理器中,展开SQl Server服务器组中相应的服务器。 (2) 展开“数据库”文件夹,然后展开将授权用户或组访问的数据库companyinfo,右击【用户】|【新建数据库用户】命令。
(3) 在打开的“数据库用户属性”对话框中的“登录名”框中,键入或选择将授权访问数据库的SQL Server登录名arlin;“用户名”列表框中输入“李平”, 如图9-4所示。
(4) 在“数据库角色”列表框中,除public(默认)外,还可选择其他数据库角色成员。如图9-4所示。
单击“确定”按钮,即可完成数据库用户 “李平”的添加。 2(用Transact-SQL命令给companyinfo数据库添加名为“王军”的用户。 在查询分析器中执行如下SQL命令:
USE companyinfo
EXEC sp_qrantdbaccess 'wangjun', '王军'
3(删除数据库用户“王军”及其登录帐户wangjun的。 (1)删除数据库用户“王军”
, 在企业管理器中,展开SQl Server服务器组中相应的服务器。 , 展开“数据库”文件夹,然后展开将删除用户或组访问的数据库
companyinfo。
, 单击“用户”对象,在“详细信息”窗格中,右击要删除的数据库用户
“王军”,然后单击“删除”。
, 确认删除。此时只是删除了数据库用户,登录并没有删除, (2)删除名为“wangjun”的登录。
操作同任务3中“abc”的删除,在此从略。
(五) 按照任务5要求,给数据库用户“李平”设置对表P_order的列具有修
改操作的权限。
方法一:通过设置数据库用户的属性,实现用户权限的设置 操作步骤如下:
1( 在企业管理器中,展开SQl Server服务器组中相应的服务器。 2( 展开“companyinfo”文件夹,单击“用户”,在右边的窗格会显示
companyinfo数据库的所有用户。如图9-5所示。
图9-5 用户属性快捷菜单
3(右击“李平”,在打开的快捷菜单中执行“属性”,如9-5所示;
4(在打开的“数据库用户属性”对话框中的“权限”选项卡中,可以进行对象的权限设置。
5(在 “权限”选项卡中,单击“列”按钮,可以设置“列权限”,然后单击“确定”按钮。
方法二:通过设置数据库对象的权限,设置用户的权限。
操作步骤如下:
1(展开服务器组,然后展开服务器,展开要进行权限设置的数据库,选中表对象。
2(右击要进行权限设置的表P_order表,执行【所有任务】|【管理权限】命令,
3( 在图9-9所示的对话框中,进行对象权限的设置,还可以单击“列”,进
一步对列权限进行设置,其操作同方法一。然后单击 “确定”按钮。
说明:用户权限的设置还可以通过Transact-SQL命令的方法实现~有关
内容详见本项目相关理论知识。
四、相关理论知识
一个网络数据库系统,其数据安全的重要性是显而易见的。SQL Server 2000
数据库的安全性通过以下几个方面得以保证。SQL Server 2000数据库的数据安全机制:
, 网络系统的安全性:可以通过在网络系统边界安装防火墙系统得以实施。
, 服务器的安全性:保证运行SQL Server 2000的服务器本身及其操作系统
的安全。
, SQL Server 2000登录安全性:允许哪些用户登录。
, 数据库的安全性:规定用户登录以后可以使用哪些数据库。
, 数据库对象的安全性:规定用户登录某一数据库后,可以操作哪些数据
库对象以及怎样操作。
数据安全性主要通过 SQL Server 2000的登录安全性、数据库和数据库对象
的安全性几个方面实现,对于其它方面的安全性讨论请参考其它方面的安全性书籍。
(一)SQL Server 2000的登录身份验证模式
1(SQL Server 2000可以在两种安全(身份验证)模式下工作:
, Windows 身份验证模式:Windows身份验证模式使用户得以通过
Windows NT/2000用户帐户进行连接。即被授权连接SQL Server2000的
Windows NT/2000用户帐户或组帐户在连接SQL Server 2000时不需要提
供登录帐户和密码,因为SQL Server 2000认为Windows NT/2000已经对
该用户作了身份验证。
, “SQL Server和Windows” 混合模式身份验证:混合模式使用SQL
Server
登录模式验证时,系统管理员创建一个帐户和密码,并把它
们存储在SQL Server 2000系统数据库中。当用户想要连接到SQL Server
2000上时,必须提供一个已存在的SQL Server登录帐户和密码。
一般推荐使用Windows 身份验证的主要原因有:一是可以提高管理效率;二是可以加快登录速度。
说明:如果将SQL Server安装在Windows9X操作系统上~将只能使用SQL Server身份验证模式~因为Windows9X不支持Windows NT/2000帐户验证方式。 2(帐户信息的查看
在SQL Server 2000企业管理器的树型目录中展开服务器下的“安全性”,选择“登
录”,可以查看当前服务器所有的登录帐户信息。
,对于每一个服务器登录帐户,列出了该帐户的“名称”、“类型”、“服务器访问权限”、“默认数据库”以及“默认语言”。下面详细介绍各项的含义。
帐户的类型有三种,分别是“Windows用户”帐户、“Windows组”帐户和“标准” 帐户。
, “名称”栏信息
对于SQL Server帐户,“名称”列直接显示用户帐户名称。如SQL Server帐户sa。
对于Windows NT用户帐户,帐户名采用“计算机名称(或域名)\用户名(或组名)”的形式表示。
对于Windows NT/2000内建本地组,其帐户名中使用BUILTIN代替计算机名(或域名)。
, “服务器访问”栏信息:显示了是否允许该用户登录服务器,取值可以
是“许可”或“拒绝”。
, “默认数据库”栏信息:是指用户登陆SQL Server 2000后首先连接的数
据库,默认master数据库。
, “默认语言”栏信息:定义了SQL Server使用何种语言为用户显示信息。
3(SQL Server 2000的登录身份验证模式的设置方法。
详见本项目“相关实践知识”。
(二)SQL Server数据库的安全性
用户成功登录SQL Server 2000服务器后,并不自动拥有对所有数据库的访问权限,管理员必须在数据库中为用户建立一个用户帐户,才能使该用户访问数据库。
一台服务器有了一套服务器登录帐户列表外,每个数据库中都有一套相互独立的数据库用户列表。每个数据库用户都和服务器登录帐户存在着一种映射关系。系统管理员可以将一个服务器登录帐户映射到用户需要访问的每一个数据库中的一个用户帐户和角色上。一个登录帐户在不同的数据库中可以映射成不同的用户,从而拥有不同的权限。
在每个SQL Server 2000数据库中,都有两个默认的用户帐号:dbo和guest。dbo代表数据库拥有者,guest用户是为那些没有属于自己的用户帐户的SQL Server 2000登录者作为默认的用户,访问具有guest用户的数据库。
SQL Server 2000数据库用户的添加方法常利用SQL Server企业管理器工具实现,详见本项目“相关实践知识”。
(三)数据库对象的安全性
创建一个数据库对象时,创建者将自动拥有对该数据库对象的操作权限。当一个非数据库拥有者想访问数据库中的对象时,必须事先由数据库拥有者赋予该用户对指定对象的操作权限。
权限用来指定授权用户可以使用的数据库对象和这些授权用户可以对这些数据库对象执行的操作。
通常权限分为三种类型:对象权限、语句权限和暗示性权限。 1(权限的种类
(1) 对象权限:用户对数据库对象进行操作的权限,具体包括:
, 针对表和视图的操作:SELECT、INSERT、UPDATE和DELETE
语句。
, 针对表和视图的行的操作:INSERT和DELETE语句。
, 针对表和视图的列的操作:SELECT和UPDATE语句。
, 针对存储过程和用户定义的函数的操作:EXECUTE语句。
(2) 语句权限:指用户是否具有权限来执行某一语句。
, BACKUP DATABASE:备份数据库
, BACEUP LOG:备份事务日志
, CREATE DATABASE:创建数据库
, CREATE DEFAULT:创建默认
, CREATE INDEX:创建索引
, CREATE PROCEDURE:创建存储过程
, CREATE RULE:创建
, CREATE TABLE创建表
, CREATE VIEW创建视图
(3) 暗示性权限:指系统预定义的固定服务器角色成员、数据库拥有者和数据库对象拥有者所拥有的权限。例如sysadmin固定服务器角色成员可以在服务器范围内做任何操作,dbo可以对数据库做任何操作,dbo可以对其拥有的数据库对象做任何操作,它不需要明确的赋予权限。
说明:暗示性权限不能明确地赋予和撤消。
2(权限的设置
权限的设置有两种方法,一是利用企业管理器实现(详见本项目的相关实践知识);二是利用Transact-SQL语句来实现。权限管理的Transact-SQL语句如下:
(1) GRANT
GRANT 语句用来授予语句权限和对象权限。
(2) DENY
拒绝用户帐户上的权限:
, 删除以前授予用户、组或角色的权限。
, 停用从其它角色继承的权限。
, 确保用户、组或角色将来不继承更高级别的组或角色的权限。 (3) REVOKE
删除以前在当前数据库内的用户上授予或拒绝的权限。
【例9.1】将companyinfo数据库中,名为customer表的SELECT权赋予dbAdmin角色。
程序清单如下:
USE companyinfo
GRANT SELECT ON TO dbAdmin
【例9.2】假设companyinfo数据库已拥有一个名为sa1的数据库用户,且该用户
已具有对customer表的SELECT权限,写出拒绝sa1对customer表的SELECT权限的命令。
程序清单如下:
USE companyinfo
DENY SELECT ON customer TO sa1
【例9.3】假设companyinfo数据库已拥有一个名为sa2的数据库用户,写出授予据库用户sa2对customer表的“客户ID”和“公司名称”字段的修改权的命令。 程序清单如下:
USE companyinfo
GRANT UPDATE(客户ID,公司名称) ON customer TO sa2 【例9.4】假设companyinfo数据库已拥有一个名为sa3的数据库用户,写出授予据库用户sa3可以在companyinfo数据库中的建表权的命令。
程序清单如下:
USE companyinfo
GRANT CREATE TABLE TO sa3
五、拓展知识
(一)关于角色的概念
角色是SQL Server 7.0版本引进的新概念,它代替了以前版本中组的概念,利用角色,SQL Server 管理者可以将某一组用户设置为某一角色,这样只要对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了管理员的工作量。SQL Server提供了通常管理工作的预定义服务器角色和数据库角色。用户还可以创建自己的数据库角色,以便表示某一类进行同样操作的用户。当用户需要执行不同操作时只需要加入不同的角色中即可,不必对该用户反复授权许可或回收许可。
(二)服务器角色
服务器角色是根据SQL Server的管理任务以及这些任务的重要性等级把具有SQL Server管理职能的用户划分为不同的用户组,每一组所具有的管理SQL Server的权限都是内置的,即不可修改、删除和添加,只能向其中加入用户或其它角色。服务器角色存在于各个数据库之中,要加入用户,该用户必须有登录帐户,以便加入到角色中。
1(SQL Server系统提供的固定服务器角色有8种,其含义如下:
, system administrators 表示系统管理员可执行任何动作。
, security administrators 表示管理登入账户。
, server administrators 表示设置SQL Server的各项参数。
, setup administrators 表示有关replication(复制)的设置与管理扩
充预存程序。
, process administrators 表示管理SQL Server所有执行中的程序。
, disk administrators 表示管理资料库文件。
, database administrators 表示建立和更改资料库属性。
, bulk insert administrators 表示对可执行bulk insert操作的管理。
2(利用企业管理器向固定服务器角色添加成员的步骤如下:
(1) 展开服务器组,然后展开服务器。
(2) 展开“安全性”,然后单击“服务器角色”。
(3) 在“详细信息”窗格中,如图9-11,右击setup Administrators角色,
然后单击“属性”。
(4) 在“常规”选项卡中单击“添加”按钮,然后单击要添加的登陆用户。 (三)数据库角色
和服务器一样,数据库中也引进了角色的概念。数据库角色为某一用户
或某一组用户授予不同级别的管理或访问数据库以及数据库对象的权限,这
些权限是数据库专有的,并且还可以使一个用户具有属于同一数据库的多个
角色,SQL Server提供了两种数据库角色,即固定数据库角色和用户自定义的数据库角色。
1(SQL Server提供的固定数据库角色见表9-1所示。
表9.1 固定数据库角色
db_accessadmin 在数据库中添加或删除Windows用户或SQL Server
用户
db_backupoperator 有备份数据库的权限
db_datareader 查看来自数据库中所有用户表的全部数据 db_datawriter 添加、更改或删除来自数据库中所有用户表的数据 db_ddladmin 添加、修改或除去数据库中的对象(运行所有DDL) db_denydatareader 拒绝选择数据库数据的权限
db_denydatawriter 拒绝更改数据库数据的权限
db_owner 进行所有数据库角色的活动,以及数据库中的其他维
护和配置活动,该角色的权限跨越所有其他固定数据
库角色
db_securityadmin 管理SQL Server 2000 数据库角色的角色和成员,并
管理数据库中的语句和对象权限
利用企业管理器配置数据库角色的方法的操作步骤如下: (1) 在企业管理器中,双击用户容器,通过右键菜单打开指定用户的属
性,可以看到数据库角色列表,选中想要赋予用户的角色,单击“确
定”按钮。
(2) 也可以打开角色容器,通过双击,打开想赋予的角色的属性,单击
“添加”按钮,把指定用户加入这个角色,然后再单击“确定”按钮。
2(创建用户定义的数据库角色
在公司里,也经常用到来自不同级别,不同部门的用户,为了对一些用
户赋予相同的权限,我们可以自定义一些新数据库角色,然后把用户添加到该角色中,这样,这些用户便获得了该角色相应的访问权限。 利用企业管理器创建用户自定义数据库角色的步骤如下:
(1) 展开服务器组,然后展开服务器。
(2) 展开“数据库”文件夹,然后展开要在其中创建角色的数据库。 (3) 右击“角色”,然后单击“创建数据库角色”命令。 (4) 在图9-12所示的“名称”框中输入新角色的名称。 (5) 单击“添加”将成员添加到“标准角色”列表来,然后单击要添
加的一个或多个用户。只有选定的数据库中的用户才能被添加到该角
色中。
3(查看角色以及删除角色及其成员
创建和使用数据库时,可能需要查找有关SQL Server数据库角色或固定
服务器角色的信息,可以根据需要查看当前数据库中有哪些角色,或者
列出固定服务器角色。
, 查看角色信息:查看的方法和向数据库角色和固定服务器角色添加成
员的方法相似。
, 查看角色成员信息:在查看角色后,在“详细窗格”中,查看角色的
属性,就可以查看成员信息。
删除角色及其成员:删除角色的方法就是在“角色”的详细窗格中,右击该角色,
选择“删除”,确定删除即可。删除用户帐户则要在角色的属性窗口中,删除用
户。
作业:
实践题:1-5
复习思
考题、
作业题
数据库备份
下次课 预 习 要 点
效果较好
实 施 情况及 分 析
注:教案按授课次数或单元填写。重复课可不另填写教案。允许特色设计。