您好,欢迎来到六九路网。
搜索
您的当前位置:首页数据库原理-实验3-数据库的安全性

数据库原理-实验3-数据库的安全性

来源:六九路网


一、 实验目的

1. 掌握Windows 认证模式下数据库用户帐号的建立与取消方法; 2. 掌握混合模式下数据库用户帐号的建立与取消方法; 3. 掌握数据库用户权限的设置方法;

4. 熟悉数据库数据库用户帐号的权限分配、回收等方法; 5. 了解数据库角色的分类、作用及使用方法。

二、 实验环境

SQL Server 企业版

三、实验学时

2学时

三、 实验原理:

1。 Microsoft® SQL Server™ 可以在两种安全(身份验证)模式: (1)Windows 身份验证模式(Windows 身份验证)

Windows 身份验证模式使用户得以通过 Microsoft Windows NT® 4.0 或 Windows® 2000 用户帐户进行连接。

(2)混合模式(Windows 身份验证和 SQL Server 身份验证)

混合模式使用户得以使用 Windows 身份验证或 SQL Server 身份验证与 SQL Server 实例连接.在 Windows 身份验证模式或混合模式下,通过 Windows NT 4。0 或 Windows 2000 用户帐户连接的用户可以使用信任连接.

2. SQLServer的安全机制

(1)服务器级别所包含的安全对象主要有登录名、固定服务器角色等。其中登录名用于登录数据库服务器,而固定服务器角色用于给登录名赋予相应的服务器权限。SQL Server 中的登录名主要有两种:第一种是Windows登录名,第二种是SQL Server登录名。Windows登录名对应Windows验证模式,该验证模式所涉及的账户类型主要有Windows本地用户账户、Windows域用户账户、Windows组.SQL Server登录名对应SQL Server验证模式,在该验证模式下,能够使用的账户类型主要是SQL Server账户。

(2)数据库级别所包含的安全对象主要有用户、角色、应用程序角色、证书、对称密钥、非对称密钥、程序集、全文目录、DDL事件、架构等。用户安全对象是用来访问数据库的.如果某人只拥有登录名,而没有在相应的数据库中为其创建登录名所对应的用户,则该用户只能登录数据库服务器,而不能访问相应的数据库.

(3)架构级别所包含的安全对象主要有表、视图、函数、存储过程、类型、同义词、聚合函数等。架构的作用简单地说是将数据库中的所有对象分成不同的集合,这些集合没有交集,每一个集合就称为一个架构。数据库中的每一个用户都会有自己的默认架构。这个默认架构可以在创建数据库用户时由创建者设定,若不设定则系统默认架构为dbo。数据库用户只能对属于自己架构中的数据库对象执行相应的数据操作.至于操作的权限则由数据库角色所决定。一个数据库使用者,想要登录服务器上的SQL Server数据库,并对数据库中的表执行数据更新操作,则该使用者必须经过如下图所示的安全验证.

3。数据库的存取控制:授权和撤销权限 (1)GRANT

在安全系统中创建项目,使当前数据库中的用户得以处理当前数据库中的数据或执行特定的 Transact—SQL 语句

语法:

1)语句权限:

GRANT { ALL | statement [ ,。.。n ] } TO security_account [ ,..。n ]

2)对象权限:

GRANT

{ ALL [ PRIVILEGES ] | permission [ ,...n ] } {

[ ( column [ ,。.。n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,。..n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } }

TO security_account [ ,。..n ] [ WITH GRANT OPTION ] [ AS { group | role } ]

(2)REVOKE

删除以前在当前数据库内的用户上授予或拒绝的权限。 语法

语句权限:

REVOKE { ALL | statement [ ,.。.n ] } FROM security_account [ ,。。。n ] 对象权限:

REVOKE [ GRANT OPTION FOR ]

{ ALL [ PRIVILEGES ] | permission [ ,。。。n ] } {

[ ( column [ ,..。n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } }

TO | FROM }

security_account [ ,..。n ] [ CASCADE ]

[ AS { group | role } ]

五、实验内容及步骤

以系统管理员身份登录到SQL Server服务器,在SQL Server2005界面中实现以下操作,并写出6—8题的程序代码;

1. 在当前计算机中增加一个用户zhang和cheng,密码为secret.使此用

户通过winows NT模式下登录SQL Server服务器,登录名分别为zhang和cheng;(对象资源管理器—安全性—登录名—单击右键“新建登录

名\"然后如下图: 单击确定)

(在登录名下面就会出现新的用户登录名zhang和cheng,重新启动SQL Server

Management Studio,就可以使用“SQL Server身份验证”方式使用登录名和密码,成功连接SQL Server Management Studio。)

2. 新建以混合模式登录SQL Server服务器的用户登录名为stu1、stu2和

stu3,登录密码为secret,默认登录数据库为stu;(和第一题相同的做法,只不过在新建登录名时将默认数据库设置为stu,然后设置用户映射为“Stu”数据库。)

3. 将帐号zhang添加为数据库stu的用户,用户名为zhang;(右键单击账

号“zhang”-属性—用户映射—设置如下图)

4. 在数据库stu中创建用户stu1、stu2和stu3,登录帐号分别为stu1、

stu2和stu3;(同步骤三)

5. 给数据库用户zhang赋予创建数据库的权限;

(数据库stu—安全性—右键单击数据库用户“zhang”—属性—安全对象—单击“添加”—特定类型的所有对象—确定-数据库—确定. 在权限设置中在“Create database”后面的授予中打勾,确定。)

6. 给数据库用户stu1赋予对sc表进行插入、修改、删除操作权限; (对象资源管理器—数据库“Stu\"-安全性—用户stu1-属性-安全对象—添加—特定类型的所有对象—确定-表—确定. 选择表sc,在权限设置中在“Delete、Insert、Update”后面的授予中打勾—确定.)

7. 给数据库用户stu2和stu3赋予对student表、course表所有操作权

限及查询sc的操作权限,并允许再授权给其他用户;(对象资源管理器-数据库“Stu”—安全性-用户stu2—属性—安全对象—添加—特定类型的所有对象-确定-表-确定. 选择表student,在权限设置中所有的授予和具有授予权限中打勾;表course执行相同的操作;对于表sc,在去权限设置Select的授予和授予权限中打勾;确定.)

对于用户stu3执行与stu2相同的操作。

8. 收回数据库用户stu2对student表和course表的删除操作的权限;

(只要在用户stu2的安全对象设置中把student表和course表的设置权限中的Delete中的授予中的对号去掉就可以了。)

revoke delete on student from stu2 cascade

revoke delete on course from stu2 cascade

9. 若一个小组共5个成员,他们对数据库stu具有相同的操作权限,具体

权限如下:

1) 对于student、course表只能进行数据查询; 2) 只能对student表中sname进行更改; 3) 对于sc表只能进行修改、删除或插入;

(先将登录名中的账号“cheng”的用户映射设置为数据库stu,然后执行 对象资源管理器—数据库stu-安全性—角色—数据库角色-新建数据库角色—角色名称为“NEW”,所有者为“dbo\"—角色成员-添加—浏览—选择五个数据库用户—确定—确定。)

数据库角色“NEW”—属性—安全对象—添加—特定类型的所有对象—确定—表—确定. 对于表student和表course在权限设置中在“Selete”后面的授予中打勾; 对于表sc在权限设置中在“Delete、Insert、Update”后面的授予中打勾; 同时在表student权限设置中在“Update”后面的授予中打勾,然后点击“列权限”,在列Sname后面的授予中打勾,确定.

10. 将登录帐号cheng同时拥有服务器角色serveradmin 和 securityadmin的权限;

登录名cheng—属性—服务器角色—选择服务器角色serveradmin 和 securityadmin—确定。

11. 删除服务器角色sysadmin的成员stu2和stu3;

安全性-服务器角色sysadmin—属性-选择角色成员stu2-单击删除按钮-选择角色成员stu3-单击删除按钮-确定。

六、样例模板

一.用户的创建(用户包括操作系统用户、服务器用户和数据库用户)

1. 创建操作系统用户u1、u2

以管理员的身份登录到Windows,打开“控制面板”(Win7)中的“用户账户”,创建操作系统用户u1、u2。

2. 创建数据服务器用户 GUI方式(SQL Server2008为例):以DBA的身份登录到SQL Server Management Studio,在对象资源管理器中选择“安全性”,右击“登录名”,在弹出的快捷菜单中选择“新建登录名”菜单选项,在“新建登录名”窗口中单击“搜索\"按钮添加Windows用户u1,选择“Windows身份验证模式\",单击“确定\"按钮完成。

(1) 命令方式:

use master

create login [LISHUO—PC\from windows

(2) 同样的方式将操作系统用户u2、u3加入到数据服务器。

3. 创建数据库用户

以系统管理员身份登录到数据库服务器,分别以GUI方式和命令方式创建数据库用户

(1) GUI方式(SQL Server2008为例):选中stu_end数据库,单击“安

全性”,在其“用户”节点下右击,在弹出的快捷菜单中选择“新建用户”菜单项,在“数据库用户\"窗口中输入要新建的数据库用户名和登录名,单击“确定”按钮。

(2) 命令方式:

use stu_end go

create user stu_end_login01 for login [LISHUO—PC\p":{"h":18,"w":45.179,"x":593.025,"y":1093.668,"z":48},"ps":null,"s":{"letter-spacing":"0.044] go

(3)查看stu_end_login01的属性,此用户除了拥有默认架构外,没有分配相应权限.

(3) 切换到操作系统用户u1,以u1的身份登录到SQL Server Management

Studio,

这时可以使用命令打开数据库stu_end。如下图:

此时,以stu_end数据库用户stu_end_login01访问数据库stuinfo,访问被拒接。

一、 数据库角色管理

这里只讨论固定数据库角色.

1. 以界面方式为固定数据库角色添加成员: 在stu_end数据库中展开“安全性”角色数据库角色,选择“db.owner”,在弹出的快捷菜单中选择“属性”菜单项,进入“数据库角色属性”窗口,单击“添加”按钮.

2. 命令方式:使用系统的存储过程 use stu_end go

sp_addrolemember 'db_owner’,'stu_end_login01’

此时,可以访问数据库的数据库对象,如下图:

select * from s

update s set sage=25 where sname=’胡海燕 ' select * from s

切换到DBA,取消stu_end_login01的所有的角色,此时只能打开数据库,而不能访问数据库对象,如下图:

二、 数据库的权限管理

1. 以用户u2登陆数据服务器,并访问数据库stu_end

2. 以系统管理员的身份登录,为操作系统用户u2登录数据库stu_end创建登录名stu_end_login02

2. 切换到用户u1,为用户u2分配访问权限

use stu_end go

grant select,delete on s to stu_end_login02

4。 切换到用户u2,可以看到学生表s对用户u2可见

5. 执行访问的权限

6。 执行未授权的权限

update s set sage=30 where sname='丁蕾' go

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务