SQL安全,管理备份与恢复2精编版[41页].docx





《SQL安全,管理备份与恢复2精编版[41页].docx》由会员分享,可在线阅读,更多相关《SQL安全,管理备份与恢复2精编版[41页].docx(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、最新资料推荐项目9: CJGL数据库的安全管理对任何企业组织来说,数据的安全性最为重要。安全性主要是指允许那些具有相应的数据访问权限的用户,能够登录到SQL Server并访问数据以及对数据库对象实施各种权限范围内的操作。但是要拒绝所有的非授权用户的非法操作。因此安全性管理与用户管理是密不可分的。SQL Server 2005 提供了内置的安全性和数据保护。SQL Server 2005 的安全性管理是建立在认证(Authentication) 和访问许可(permission) 两者机制上的认证,是指来确定登录SQL Server 的用户的登录账号和密码是否正确以此来验证其是否具有连接SQL
2、 Server 的权限,但是通过认证阶段并不代表能够访问SQL Server 中的数据用户,只有在获取访问数据库的权限之后才能够对服务器上的数据库进行权限许可下的各种操作,主要是针对数据库对象,如表、视图、存储过程等。这种用户访问数据库权限的设置是通过用户帐号来实现的,同时在SQL Server 中角色作为用户组的代替物大大地简化了安全性管理。能力目标: 能够配置服务器的身份验证模式; 能够创建并配置登录账户; 能够为登录账户配置数据库访问许可; 能够为数据库用户指定数据访问权限; 能够通过角色设置批量实现用户权限管理。知识目标: 熟悉SQL Server 2005的安全机制; 掌握服务器登录
3、账户的管理方法; 掌握数据库用户的权限管理方法; 理解角色的作用;工作任务: 服务器登录账户管理; 数据库用户管理。任务1:服务器登录账户管理【任务描述】:用户要访问数据库,必须具备登录SQL Server服务器的权限,可以通过两种途径登录服务器:一是通过Windows系统用户身份;二是通过有效的SQL Server账户身份。用户如果不通过默认账户登录,则必须为其创建登录账户。 子任务1:创建登录账户Win_User,通过Windows身份验证,并映射到CJGL数据库;子任务2:创建登录账户Sql_User,通过SQL Server身份验证,并映射到CJGL数据库;【预备知识】1、SQL Se
4、rver 2005身份验证机制安全身份验证用来确认登录SQL Server的用户的登录账号和密码的正确性,由此来检验该用户是否具有连接SQL Server服务器的权限。任何用户在使用SQL Server服务器之前,必须经过身份验证。SQL Server 2005提供了两种身份验证模式,分别是Windows身份验证和SQL Server身份验证。1.1 Windows身份验证SQL Server服务器运行于Windows服务器之上,而Windows作为网络操作系统,本身具备管理登录、验证用户是否合法的能力,因此Windows身份验证模式就是用户通过自己合法的Windows账户和口令进行验证,只要
5、用户具备登录操作系统的权限,即可连接SQL Server服务器1.2 SQL Server身份验证启用该模式通常也称为“混合验证模式”,该认证模式下,用户连接SQL Server服务器必须提供登录名和密码,这些登录信息存储在系统表syslogins中,与Windows账号无关。注意:如果SQL Serve服务器启用了混合验证模式,则不但可以通过SQL Server账号登录,也可以请求Windows验证,然后通过Windows账户登录。Windows身份验证安全性要比SQL Server验证高的多,因为SQL Server服务器相比,操作系统具有更高的安全机制。【任务实施】子任务1:创建登录账户
6、Win_User,通过Windows身份验证,并映射到CJGL数据库;1、创建Windows系统账户,账户名为Win_User,步骤如下:(1)在“桌面”右键单击,选择“管理”,打开计算机管理窗口;(2)展开“本地用户和组”节点,右键单击“用户”,选择“新用户”命令,如下所示:(3)然后在弹出的新用户对话框中输入用户名及密码,如下所示:(4)单击“创建”按钮。2、将SQL Serve身份验证方式改为“Windows验证”:(1)以系统管理员账户登录SQL Server服务器,如下所示:(2)在服务器节点上右键单击,选择“属性”,如下所示:(3)在弹出的服务器属性窗口中,选择“安全性”节点,然后
7、在右边选中“Windows身份验证模式”,如下所示:(4)更改后,必须重启服务器才能是设置生效,如下所示:(5)单击“确定”后,在服务器节点上右键单击,选择“重新启动”,如下所示:3、将Win_User设置为SQL Server登录账户(1)展开选择服务器节点下的“安全性”节点,在“登录名”节点右键单击,选择“新建登录名”(2)在弹出的“登录名”窗口中,单击“搜索”按钮(如果要输入登录名,必须确保输入正确),如下所示:(3)在弹出的“选择用户和组”对话框中,单击“高级”按钮,如下所示:(4)然后单击“立即查找”按钮,在下面列出的对象中选择“Win_User”,如下所示:(5)单击“确定”按钮,
8、这时候在登录名文本框中会出现“FANXINGANGWin_User”(这里的FANXINGANG视具体机器而定)(6)用户映射(即使该登录账户具有访问数据库的权限):在“登录名”窗口中,选择“用户映射”项,然后在数据库列表中选择“CJGL”,“数据库角色成员身份”保持默认。如下所示:(7)将Win_User设置为SQL Server登录账户后,可以通过Windows系统的切换用户方式,以Win_User登录操作系统,然后再连接SQL Server服务器,过程略。(8)登录账号创建成功后,可以通过该账号进行连接SQL Server服务器,登录服务器后,只能访问CJGL数据库,而不具备访问其他数据
9、库的权限。比如要向访问“BooK”数据库,将会出现以下错误:子任务2:创建登录账户Sql_User,通过SQL Server身份验证,并映射到CJGL数据库;1、将SQL Server服务器身份验证方式改为“SQL Server和Windows身份验证模式”,过程同上;2、重启服务器后,如上述过程打开“登录名”窗口,然后在登录名文本框中输入“SQL_User”,选中“SQL Server身份验证”单项按钮,输入密码及确认密码。如下所示:3、用户映射方式同上,不再赘述。任务2:数据库用户管理【任务描述】创建了登录账户后,实际上只具备了连接服务器的权限,即便在创建登录账户的时候进行了用户映射,默认
10、状态下,映射后的数据库用户的数据库角色是“public”,仍旧不具备访问用户定义对象的权限,因此需要为数据库创建相应用户并赋予相应权限。子任务1:为CJGL数据库创建用户“DB_User”,该用户通过登录账户“SQL_User”登录服务器;子任务2:对用户“DB_User”进行权限设置,其权限如下表所示(“*”表示具备权限):安全对象权限SELECTINSERTUPDATEDELETEdepartment*Class*Student*Course*Teacher*Timetable*score*子任务3:创建数据库角色“User_Role”,其安全对象及权限设置为上表所示,并将数据库用户“DB
11、_User”的数据库角色设置为“User_Role”【预备知识】1、数据库用户与架构1.1 数据库用户登录名:服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源。每个登录名的定义存放在master数据库的syslogins表中数据库用户名:一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。用户定义信息存放在每个数据库的sysusers表中。SQL SERVER把登录名与用户名的关系称为映射。用登录名登录SQL SERVER后,在访问各个数据库时,SQLSERVER会自动查询此数据库中是否存在与此登录名关联的用
12、户名,若存在就使用此用户的权限访问此数据库,若不存在就是用guest用户访问此数据库。一个登录名可以被授权访问多个数据库,但一个登录名在每个数据库中只能映射一次。即一个数据库中只能有一个用户名通过该登录名登录。好比SQLSERVER就象一栋大楼,里面的每个房间都是一个数据库。登录名只是进入大楼的钥匙,而用户名则是进入房间的钥匙。一个登录名可以有多个房间的钥匙,但一个登录名在一个房间只能拥有此房间的一把钥匙。连接SQL Server服务器使用的是登录名而不是数据库用户名。SQLSERVER中有几个特殊的登录名和用户名:我们常见的dbo(用户名)是指以sa(登录名)或windows adminis
13、tration(Windows集成验证登录方式)登录的用户,也就是说数据库管理员在SQL SERVER中的用户名就叫dbo,而不叫 sa,这一点看起来有点蹊跷,因为通常用户名与登录名相同(不是强制相同,但为了一目了然通常都在创建用户名时使用与登录名相同的名字),例如创建了一个登录名称为me,那么可以为该登录名me在指定的数据库中添加一个同名用户,使登录名me能够访问该数据库中的数据.当在数据库中添加了一个用户me 后,之后以me登录名登录时在该数据库中创建的一切对象(表,函数,存储过程等)的所有者都为me,如me.table1,me.fn_test(),而不是dbo.table1,dbo.fn
14、_test()。SQL Server中还有一个特殊的数据库角色public,它存在于每一个数据库中,包括系统数据库,如master、msdb、model和用户数据库,数据库的所有用户都属于public角色,并且不能从public角色中删除。在SQLSERVER数据库中,guest帐户是特殊的用户帐户。如果用户使用USE database语句访问的数据库中没有与此用户关联的帐户,此用户就与guest用户相关联。1.2 架构(schema)以往 SQL Server 内的对象命名是“服务器.数据库.用户名.对象”,但SQL Server 2005版本后的对象命名改为“服务器.数据库.Schema.
15、对象”。这让你规划数据库对象命名时更有弹性。架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。数据库引擎权限层次结构之间的关系图在 SQL Server 2005 中,架构独立于创建它们的数据库用户而存在,亦即用户与架构分离,这种机制具有以下优点: 多个用户可以通过角色成员身份或 Windows 组成员身份拥有一个架构。这扩展了允许角色和组拥有对象的用户熟悉的功能。 极大地简化了删除数据库用户的操作:删除数据库用户不需要重命名该用户架构所包含的对象。因而,在删除创建架构所含对象的用户后,不再需要修改和测试显式引用这些对象的应用程序。 用户与架构(sch
16、ema)分开,让数据库内各对象再绑在某个用户账号上,可以解决之前版本“用户离开公司”问题,也就是在拥有该对象的用户离开公司,或离开该职务时,必要大费周章地改该用户所有的对象属于新的用户所有。 另外,也可让 DBA 在安装某个套装软件时,设置该套装软件所用的数据库对象都属于某个特定的架构,容区别。也就是说,在单一数据库内,同部门或目的的对象,可以通过架构区分同的对象命名原则与权限。 可以用比早期版本中的粒度更大的粒度管理架构和架构包含的对象的权限。2、服务器角色和数据库角色2.1 服务器角色是固化在SQL Server服务器中的角色,每个服务器角色都有其隐含的权限。使用系统存储过程sp_srvr
17、olepermission可以浏览每个固定服务器角色的权限。该系统过程的语法形式为:sp_srvrolepermissionsrvrolename = role_name固定服务器角色权限说明Sysadmin被赋予了SQL Server中的任何权限Serveradmin向该服务器角色中添加其他登录运行dbcc pintable命令(从而使表常驻于主内存中)运行系统过程sp_configure(以显示或更改系统选项)运行reconfigure选项(以更新系统过程sp_configure所做的所有改动)使用shutdown命令关掉数据库服务器运行系统过程sp_tableoption为用户自定义表设
18、置选项的值Setupadmin向该服务器角色中添加其他登录添加、删除或配置链接的服务器执行一些系统过程,如sp_serveroptionSecurityadmin向该服务器角色中添加其他登录读取SQL Server的错误日志运行如下的系统过程:如sp_addlinkedsrvlogin、sp_addlogin、sp_defaultdb、sp_defaultlanguage、sp_denylogin、sp_droplinkedsrvlogin、sp_droplogin、sp_grantlogin、sp_helplogins、sp_remoteoption和sp_revokelogin(所有这些系
19、统过程都与系统安全相关。)Processadmin向该服务器角色中添加其他登录执行KILL命令(以取消用户进程)Dbcreator向该服务器角色中添加其他登录运行CREATE DATABASE和ALTER DATABASE语句使用系统过程sp_renamedb来修改数据库的名称Diskadmin向该服务器角色中添加其他登录运行如下系统过程:sp_ddumpdevice和sp_dropdevice。运行DISK INIT语句2.2 数据库角色数据库角色被限制在一个数据库内,数据库角色分为两类:固定数据库角色和用户定义数据库角色。固定数据库角色包括如下几类:固定数据库角色权限说明db_owner可
20、以执行数据库中技术所有动作的用户db_accessadmin可以添加、删除用户的用户db_datareader可以查看所有数据库中用户表内数据的用户db_datawriter可以添加、修改或删除所有数据库中用户表内数据的用户db_ddladmin可以在数据库中执行所有DDL操作的用户db_securityadmin可以管理数据库中与安全权限有关所有动作的用户db_backoperator可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)db_denydatareader不能看到数据库中任何数据的用户db_denydatawriter不能改变数
21、据库中任何数据的用户除了上表中列出的固定数据库角色之外,还有一种特殊的固定数据库角色,名为public。public角色是一种特殊的固定数据库角色,数据库的每个合法用户都属于该角色。它为数据库中的用户提供了所有默认权限。这样就提供了一种机制,即给予那些没有适当权限的所有用户以一定的(通常是有限的)权限。public角色为数据库中的所有用户都保留了默认的权限,因此是不能被删除的。一般情况下,public角色允许用户进行如下的操作: 使用某些系统过程查看并显示master数据库中的信息 执行一些不需要一些权限的语句(例如PRINT)3、安全对象与权限管理安全对象是指授权用户可以访问的对象集合。权限
22、是指授权用户在拥有的安全对象上可以执行的操作。权限管理包括权限的授予、拒绝和收回,可以通过SSMS向导和T-SQL语句实现权限管理。【任务实施】子任务1:为CJGL数据库创建用户“DB_User”,该用户通过登录账户“SQL_User”登录服务器;注意:开始本任务之前,需将CJGL数据库用户SQL_User(任务1-子任务2创建)删除,因为一个登录名只允许一个数据库用户绑定!(1)展开数据库CJGL,展开其“安全性”节点,选择“新建用户”命令,如下所示:(2)在弹出的“数据库用户”窗口中,在用户名文本框中输入“DB_User”,如下所示:(3)单击登录名文本框右边的选择按钮,打开“选择用户名”
23、对话框。如下所示:(4)单击“浏览”按钮,打开“查找对象”对话框,在对象列表中选择“SQL_User”(见任务1-子任务2),如下所示:(5)依次单击“确定”按钮,将创建数据库用户DB_User,但是该用户目前没有任何实际权限!子任务2:对用户“DB_User”进行权限设置,其权限如下表所示(“*”表示具备权限):安全对象权限SELECTINSERTUPDATEDELETEdepartment*Class*Student*Course*Teacher*Timetable*score*任务分析:子任务1中创建的数据库用户DB_User因为不具备实际权限,因此以该用户身份登录服务器后,在CJGL数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 41页 SQL 安全 管理 备份 恢复 精编 41

限制150内