数据库系统的安全性机制

实训预习

SQL的数据控制(包括安全性控制和完整性控制)是通过DCL(数据控制语言)来实现的。DCL通过对数据库用户的授权和收权命令来实现有关数据的存取控制,以保证数据库的安全性。数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。

1.        数据库系统的安全性机制

(1)    操作系统的安全性

在用户使用客户计算机通过网络实现对SQL Server服务器的访问时,用户首先要获得客户计算机操作系统的使用权。

一般来说,在能够实现网络互连的前提下,用户没有必要向SQL Server 服务器的主机进行登录,除非SQL Server 服务器就运行在本地计算机上。SQL Server 可以直接访问网络端口,所以可以实现对 Windows NTWindows 2000 Server 安全体系以外的服务器及其数据库的访问。

操作系统的安全性是操作系统管理员或网络管理员的任务。由于SQL Server 采用了集成Windows NT 网络安全性的机制,所以使得操作系统安全性的地位得到提高,但同时也加大了管理数据库系统安全性的灵活性和能度。

(2)    服务器的安全性

SQL Server 的服务器安全性建立在控制服务器登录账号和口令的基础上。SQL Server采用了标准的SQL Server 登录和集成Windows 2000/NT登录两种方法。无论是哪种登录方式,用户在登录时提供的登录账号和口令决定了用户能否获得SQL Server 的访问权`,以及在获得访问权后用户在访问SQL Server进程时可以拥有的权利。设计和管理合

理的登录方式是SQL Server  DBA 的重要任务,在SQL Server 安全体系中,DBA 可以发挥主动性的第一道防线。

SQL Server 事先设计了许多固定的服务器角色,可供具有服务器管理员资格的用户分配使用权利,拥有固定服务器角色的用户可以拥有服务器级的管理权限。

(3)    数据库的安全性

在用户通过SQL Server 服务器的安全性检查以后,将直接面对不同的数据库入口。这是用户接受的第三次安全性检查。

在建立用户的登录账号信息时,SQL Server会提示用户选择默认的数据库。以后用户每次连接上服务器后,都会自动转到默认的数据库上,对任何客户来说, Master 数据库的门总是打开的,如果在设置登录账号时没有指定默认的数据库,则对用户的权限将局限在 Master 数据库以内。

默认情况下,只有数据库的拥有者才可以访问该数据库的对象,数据库的拥有者可以给别的用户分配访问权,以便让别的用户也拥有针对该数据库的访问权利,在SQL Server中并不是所有的权利都可以自由转让和分配。

(4)    表和列级的安全性

数据库对象的安全性是核查用户权限的最后一个安全等级。在创建数据库对象的时候,SQL Server自动将该数据库对象的拥有权赋予该对象的创建者。对象的拥有者可以实现该对象的完全控制。

默认情况下,只有数据库的拥有者可以在该数据库下进行操作。当一个非数据库拥有者的用户想访问数据库里的对象时,必须事先由数据库的拥有者赋予该用户某指定对象的指定操作权利,例如一个用户想访问数据库中的信息,则它必须在成为数据库的合法用户的前提下,获得由数据库拥有者分配的针对表的访问许可。

管理服务器的安全性

2.        服务器登录账户

登录账户是基于服务器使用的用户名。为了访问SQL Server系统,用户必须提供正确的登录账号。在SQL Server 系统中,有两类登录账号:一类是SQL Server自身的登录账号,另一类是Windows服务器的登录账号。当用户使用Windows的账号时,由操作系统确认用户的登录账号或组账号,这些Windows系统的登录账号或组账号可以直接访问SQL Server系统,不必提供SQL Server的登录账号和口令。当用户使用SQL Server自身验证模式时,由SQL Server系统确认用户的登录账号和口令。

登录账号的信息是系统级的信息,存储在master数据库的sysxlogins系统表中。

SQL Server有一个默认的登录账号sasa是系统管理员(System Administrator)的简称,是一个特殊的登录账号。该帐号在SQL Server系统中拥有全部的权限,即可移执行所有的操作。

另外,所有的Windows管理员Administrators也拥有SQL Server系统的全部权限,其对应的SQL Server系统中的登录账号分别是BUILTIN / AdministratorsAdministrator

3.      安全认证模式

SQL Server的认证模式有两种:Windows认证模式和混合认证模式。Windows认证模式只允许使用Windows的登录账号,用户不能指定SQL Server的登录账号。混合认证模式既允许使用Windows的登录账号,又允许使用SQL Server的登录账号。

(1)      交换安全认证模式

SQL Server企业管理器中展开服务器组。

右键单击要设置安全认证模式的服务器,在弹出的快捷菜单中选择属性,出现SQL Server属性(配置)对话框,如图5-1所示。

5-1  SQL Server属性(配置)对话框

选择安全性选项卡,将身份验证模式改为WindowsSQL ServerWindows。系统将出现对话框,提示是否重新启动SQL Server服务以使更改有效,如图5-2所示。

5-2  SQL Server服务重启对话框

单击(Y)按钮,过一会儿,SQL Server服务将重新启动,更改生效。

(2)      创建登录账户

使用企业管理器来创建SQL Server账户的步骤如下:

SQL Server企业管理器中展开服务器组,选择安全性/登录。单击鼠标右键,在弹出的快捷菜单中选择新建登录命令,如图5-3所示。

5-3  新建登录窗口

打开SQL Server登录属性对话框,在身份验证栏中选中SQL Server身份验证单选按钮,在名称栏中输入登录账号的名称:SQLUser1,在密码栏中输入该登录账号的密码:s1。在数据库下拉框中选择该登录账号对应的默认数据库Test。如图5-4所示。单击确定按钮。

5-4  添加SQL Serve账号对话框

使用相同的方法创建SQL Server身份验证的登陆账号:SQLUser2,密码:s2Windows身份验证的登陆账号:WinUser,密码:w

在企业管理器的 安全性/登录栏中即可看到这三个登录账号已存在。

(3)      管理数据库用户账号

数据库用户帐号是基于数据库使用的账号,与登录账号相对应。一个登录账号可以使用一个特定的或一个默认的数据库用户账号。

SQL Server 系统的每一个数据库中,都有两个默认的用户账号:dboguestDbo用户表示是数据库的所有者,拥有在数据库中执行所有操作的权限。Guest用户是一个特殊的用户帐号,它可以与任意的在该数据库中没有对应用户账号的登录账号对应。

使用企业管理器添加一个数据库用户的步骤如下:

在企业管理器中,展开服务器组,再展开服务器。

展开数据库文件夹,再展开要添加的数据库。用鼠标单击用户目录,在弹出的快捷菜单中选择新建数据库用户命令,如图5-5所示。

5-5  新建数据库用户

打开如图5-6所示的新建数据库用户对话框。

5-6 新建数据库用户对话框

从登录名下拉列表框中选择登录账号SQLUser1。在用户名框中输入用户名User1,如图5-7所示。

5-7  输入登录名和用户名

单击“确定”按钮。

使用相同的方法创建数据库用户User2,对应的登陆账号为SQLUser2             

以登陆账号SQLUser1登录SQL Server查询分析器,在查询分析器中输入下列脚本:Select * From Student,运行并查看结果(系统提示无Select权限),如图5-8所示。

5-8 查询分析器的输出结果窗口

使用同样的方法可以验证登陆账号SQLUser2对应的数据库用户User2也没有对Test数据库中Student表的查询权限。

(4)      表和列级的安全性

用户若要进行任何涉及更改数据库定义或访问数据的活动,则必须有相应的权限,对象的权限包括:SELECTINSERTUPDATE DELETE 等。

(5)      授予权限

可以使用GRANT语句授权给安全性,允许这些账号对数据库或数据库中数据执行授权的操作。

语法格式为:

GRANT  ALL [ PRIVILEGES ] | <权限1> [权限2……,权限n ]

         ON <1 |视图1> [ ON <2 |视图2>……<n |视图n> ]

         TO <数据库用户1> [数据库用户2 ……,数据库用户n ]

[ WITH GRANT OPTION ]

ALL表示授予所有可用的权限。对于语句权限,只有 Sysadmin 角色成员可以使用 ALL。对于对象权限,Sysadmin Db_owner 角色成员和数据库对象所有者都可以使用 ALL

WITH GRANT OPTION表示可以将指定的对象权限授予其他用户。

授予用户User1Test数据库中Student表的Select权限。

以系统管理员的身份登录查询分析器,在查询分析器中输入下列脚本:Grant Select On Student To User1。运行并查看结果,如图5-9所示。

5-9授予权限窗口

断开SQLServer查询分析器连接,重新以登录账号SQLUser1登录,在查询分析器中输入下列脚本,运行并查看结果如图5-10所示(此时可查询Student表,但不能查询Course表,原因是只给SQLUser1分配了对Student表的查询权限)。

Use Test

Go

Select * From Student

Go

Select * From Course

Go

5-10  查询分析器的输出结果窗口

断开SQLServer查询分析器连接,重新以登录账号SQLUser2登录,在查询分析器中输入与上面相同的脚本,运行并查看结果如图5-11所示(此时既不能查询Student表,也不能查询Course表,原因是没有给SQLUser2分配任何权限)。

Use Test

Go

Select * From Student

Go

Select * From Course

Go

5-11  查询分析器的输出结果窗口

(6)      收回权限。

收回以前在当前数据库用户上授予或拒绝的权限使用REVOKE语句。

语法格式为:

REVOKE  ALL [ PRIVILEGES ] | <权限1> [权限2……,权限n ]         

     ON <1 |视图1> [ ON <2 |视图2>……<n |视图n> ]

         FROM  <数据库用户1> [数据库用户2 ……,数据库用户n ]

[ CASCADE ]

CASCADE:应用在授予权限时使用了WITH GRANT OPTION的情况。如果该用户又将被授予的权限授予了其他用户,则使用CASCADE关键字将撤消所有这些已经授予的权限。

通过收回权限,可以禁止用户使用权限,但是不禁止该用户从其他角色中继承这种权限。

收回用户User1Test数据库中Student表的Select权限。

以系统管理员的身份登录查询分析器,在查询分析器中输入下列脚本,运行并查看结果,如图5-12所示。

Use Test

Go

Revoke Select On Student From User1

Go

如图5-12  收回权限窗口

断开SQLServer查询分析器连接,重新以登录账号SQLUser1登录,在查询分析器中输入下列脚本,运行并查看结果如图5-13所示(此时既不能查询Student表,也不能查询Course表,原因是登录账号SQLUser1Student表的查询权限已经被收回

)。

Use Test

Go

Select * From Student

Select * From Course

 Go

5-13 查询分析器窗口

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值