1、LOGO主要内容 8.18.2 8.38.4 8.5知识进阶知识进阶 LOGO学习目标了解SQL Server 的安全机制和安全管理模型1 掌握服务器角色的添加与管理3掌握数据库角色和数据库用户的创建与管理4了解数据控制语言对数据库权限的控制5掌握登录名的创建与管理LOGO任务概述熟练掌握如何注册服务器,学习如何管理用户、角色并授予相关权限。LOGO8.1 SQL Server 2005 安全机制 SQL Server 2005的安全机制分为以下4个等级:客户机操作系统的安全性。SQL Server的登录安全性。数据库的使用安全性。数据库对象的使用安全性。LOGO8.1 SQL Server
2、2005 安全机制图8-1 SQL Server 2005的安全等级LOGO8.1 SQL Server 2005 安全机制1操作系统的安全性 在使用客户计算机通过网络实现对SQL Ser-ver服务器的访问时,用户要首先获得客户计算机操作系统的使用权。操作系统安全性是操作系统管理员或者网络管理员的任务。由于SQL Server采用了集成了Windows NT网络安全机制,从而使得操作系统安全性的地位得到提高,但同时也加大了管理数据库系统安全性和灵活性的难度。LOGO8.1 SQL Server 2005 安全机制2SQL Server的安全性 SQL Server的服务器级安全性建立在控制服
3、务器登录账号和密码的基础之上。采用了标准SQL Server登录和集成Windows NT登录两种方式。SQL Server事先设计了许多固定服务器角色,拥有固定服务器角色的用户可拥有服务器级的管理权限。LOGO8.1 SQL Server 2005 安全机制3数据库的安全性 在用户通过SQL Server服务器的安全性检查后,将直接面对不同的数据库入口。建立用户的登录账号信息时,SQL Server会提示用户选择默认的数据库。以后用户每次连接服务器后都会自动转到默认的数据库。用户建立新登录账号时,不要将默认数据库设置为master数据库,而是有实际操作意义的数据库上。4SQL Server数
4、据库对象的安全性 数据库对象的安全性是核查用户权限的最后一道门。在创建数据库对象时,SQL Server自动把该数据库对象的拥有权赋予该对象的创建者。对象的拥有者可以实现该对象的安全机制。LOGO8.2 分析实例数据库的安全要求由于实例数据库是针对高职院校的特点所设计和建立的,所以对其数据库的安全要求也有其特殊的一面。下面从几个个方面来说明:1.系统用户分析 根据系统需求分析结果,本系统主要面向以下用户:LOGO8.2 分析实例数据库的安全要求 系统管理员:负责系统的日常维护。管理者:教务处的管理员,执行该系统的大部分业务操作,涉及教师、学生、课程、教材、成绩等信息的录入、查询、更新、汇总和审
5、核。成绩管理者:任课教师。对任课班级进行成绩录入、修改和查询。查询者:包括年级辅导员和学生。辅导员拥有拥有查询所辖班级学生成绩和基本信息的权限。学生只拥有查询个人信息和成绩的权限。LOGO8.2 分析实例数据库的安全要求2.用户安全性策略将用户分为一般性用户和终端用户。(1)一般用户的安全性 包括密码的安全性和用户的权限管理。(2)终端用户的安全性 安全性管理员可以决定用户组分类,并为这些用户组创建用户角色,把所需的权限和应用程序角色授予每一个用户。LOGO8.2 分析实例数据库的安全要求3安全性策略 保护作为sys和system用户的连接 使用角色对管理员权限进行管理 数据库的安全备份机制L
6、OGO8.3 管理SQL Server服务器安全8.3.1 SQL Server 2005服务器的登录模式1Windows身份验证模式优点:l由Windows系统管理员直接管理用户账号,方便管理。lWindows中提供了诸如:安全验证和密码加密、审核、密码过期、密码长度限制以及多次登录失败后自动锁定账户等功能,大大提高了安全性能。LOGO8.3 管理SQL Server服务器安全2SQL Server身份验证模式 由SQL Server 通过将客户端提供的用户名和密码与 SQL Server 中维护的有效用户名和密码列表进行比较,对客户端进行身份验证。LOGO8.3 管理SQL Server服
7、务器安全8.3.2 创建与管理登录名 账户要进入SQL Server系统必须登录,SQL Server在整个服务器范围管理登录。登录名即登录数据库服务器的账户,存储在master数据库的syslogins系统表中。LOGO8.3 管理SQL Server服务器安全1.使用SQL Server Management Studio创建登录名 启动SQL SERVER MANAGEMENT STUDIO,在“对象资源管理器”窗口中展开“安全性”节点,在列表中选择“登录名”,单击鼠标右键,在弹出的快捷菜单中选择“新建登录名”命令,打开“登录名-新建”对话框。在“登录名-新建”对话框中的“选项页”列表框
8、中有五个选项:常规、服务器角色、用户映射、安全对象及状态,如图8-2所示LOGO8.3 管理SQL Server服务器安全图8-2 新建登录LOGO8.3 管理SQL Server服务器安全2使用系统存储过程sp_addlogin创建登录名 系统存储过程sp_addlogin能够创建新的登录名,该登录允许用户使用SQL Server身份验证连接到SQL Server实例。基本语法如下:sp_addlogin login_name,pawwwork,default_database ,default_language LOGO8.3 管理SQL Server服务器安全【例8-1】使用存储过程“s
9、p_addlogin”创建”,密码为“001”,默认数据库为“JXGL”。EXEC sp_addlogin user01,001,JXGL GO 执行以上代码。刷新“登录名”节点,在列表中会发现登录帐户“user01”已经存在,如图8-3所示。LOGO8.3 管理SQL Server服务器安全图8-3 创建登录帐户LOGO8.3 管理SQL Server服务器安全(2)使用系统存储过程“sp_defaultdb”修改SQL Server登录名的默认数据库。基本语法如下:sp_defaultdb login_name,new_default_database【例8-3】使用系统存储过程“sp_
10、defaultdb”将登录帐户“user01”的默认数据库修改为“JXGL02”。sp_defaultdb user01,JXGL02(3)使用系统存储过程sp_droplogin删除登录名。基本语法如下:sp_ droplogin login_name【例8-4】使用系统存储过程“sp_droplogin”删除登录帐户“user01”。sp_droplogin LOGO8.3 管理SQL Server服务器安全8.3.3 服务器角色管理 角色(role),是一组具有相近权限的登录账户所构成的组。SQL Server 2005的角色分为:固定服务器角色、数据库角色和应用程序角色。登录账户与服务
11、器角色的关系类似于Windows的用户和组的。固定服务器角色如下表。LOGO8.3 管理SQL Server服务器安全固定服务器角色描 述sysadmin能够在SQL Server中执行任何活动serveradmin能够设置服务器范围内的配置选项,关闭服务器securityadminn安全管理员,可以管理登录服务器权限setupadmin能够添加和删除链接在服务器,并且也可以执行某些系统存储过程processadmin管理在SQL Server中运行的进程dbcreator能够创建、更改、删除和还原任何数据库diskadmin能够管理磁盘文件bulkadmin能够执行BULK INSERT语句
12、LOGO8.4 管理SQL Server数据库安全 8.4.1 数据库架构管理 架构是形成单个命名空间的数据库实体的集合,属性数据库级的安全对象。在SQL Server 2005之前,每个对象都是被用户所拥有的,如果用户离开了,就意味着需要将该用户账户拥有的所有对象的权限转换到新的账户上。在SQL Server 2005中,对象被架构所拥有,而架构同时被用户所拥有,这样转移权限就会变得容易和快捷。LOGO8.4 管理SQL Server数据库安全8.4.2 数据库用户管理使用SQL Server Management Studio管理数据库用户 在数据库JXGL下,展开“安全性”节点,在列表中
13、选择“用户”,单击鼠标右键,在弹出的快捷菜单中选择“新建用户”命令。打开“数据库用户-新建”对话框,进行如图8-4所示的各项设置。LOGO8.4 管理SQL Server数据库安全图8-4 新建数据库用户LOGO8.4 管理SQL Server数据库安全2.使用T-SQL语句管理数据库用户 使用CREATE USER 语句创建数据库用户,并与指定登录名相关联。基本语法如下:CREATE USER db_user_name FORLOGIN login_name|WITHOUT LOGIN【例8-5】创建数据库用户名为“user02”,与登录账户“user01”相关联。CREATE USER u
14、ser02 FOR LOGIN LOGO8.4 管理SQL Server数据库安全l 使用ALTER USER 语句修改数据库用户。语法如下:ALTER USER db_user_name WITH 【例8-6】将数据库用户“user02”的名称修改为“user03”。ALTER USER user02 WITH name=user03 使用DROP USER 语句可删除数据库用户。LOGO8.4 管理SQL Server数据库安全8.4.3 数据库角色管理 如同SQL Server登录名隶属于某个数据库角色一样,数据库用户也总是归属于某个数据库角 色。数据库角色是在数据库级的安全对象,存在于
15、每个数据库中。SQL Server 2005提供了10个固定数据库角色,如表8-2所示。LOGO8.4 管理SQL Server数据库安全固定数据库角色描 述db_owner数据库的所有者,能够执行数据库得所有管理操作db_accessadmin能够添加或删除用户db_securityadmin执行语句及对象权限管理db_ddladmin能够增加、修改或删除数据库中的对象db_backupoperator能够执行数据库备份和恢复db_datareader能够读取用户表中的所有数据db_datawrite能够更改用户表中得所有数据db_denydatareader禁止用户查看用户表中的数据db_
16、denydatawriter禁止修改任意用户表中的数据表8-2 固定数据库角色 LOGO8.4 管理SQL Server数据库安全8.4.4 授权管理 在SQL Server 2005中,包括三种权限:默认权限、对象权限和语句权限。默认权限默认权限 系统安装以后,固定服务器角色、固定数据库角色、数据库对象所有者具有的默认权限。LOGO8.4 管理SQL Server数据库安全 对象权限对象权限 是基于数据库访问层的访问和操作权限。这些对象包括表、视图、列和存储过程。常用的对象权限包括SELE-CT、INSERT、UPDATE、DELETE和EXECUTE,其中EXECUTE用于存储过程,其他几
17、个权限用于表和视图。语句权限语句权限 是用户能否对数据库和数据库对象进行操作,语句权限应用于语句本身,而不是数据库对象。当用户获得了某个语句的权限,也就具有了执行该语句的权力。要进行语句权限授予的语句如表8-3所示。LOGO8.4 管理SQL Server数据库安全语语 句句权权 限限 含含 义义CREATE DATABASE允许用户创建数据库DREATE TABLE允许用户创建表CREATE VIEW允许用户创建视图CREATE RULE允许用户创建规则CREATE DEFAULT允许用户创建默认对象CREATE PROCEDURE允许用户创建存储过程CREATE FUNCTION允许用户创
18、建用户自定义函数BACKUP DATABASE允许用户备份数据库BACKUP LOG允许用户备份事务日志表表8-3 授予权限的语句授予权限的语句 LOGO在SQL Server中的安全管理模型是基于Windows安全模型实现的,如图所示。8.5 SQL Server 2005的安全管理模型 LOGO第二种安全模型如下图:8.5 SQL Server 2005的安全管理模型 LOGO使用角色来分配对象权限时,仍需使用建议的方法为各个用户授予对服务器和数据库的访问权限。步骤到步骤与图8-13中基本相同,不同的只是可能不必创建多个 Windows 全局组和本地组。步骤:将各个Windows账户和Wi
19、ndows组分配给某个角色。步骤:为角色分配对象访问权限。使用角色,通过在SQL Server内组织用户而减少了在Windows内组织用户的需要。8.5 SQL Server 2005的安全管理模型 LOGO8.6 知识进阶8.6.1 登录管理、用户管理、角色管理与权限管理 的比较1.登录管理 登录管理是定义在数据库服务器级的安全对象,主要是增加新的登录名。登录名是基于服务器使用的用户名,既可以创建基于Windows组或用户账号的登录账号,也可以创建SQL Server自己的登录账号。LOGO8.6 知识进阶2.用户管理 用户管理是针对一个具体的数据库来说的数据库级安全对象。在实现数据库安全登
20、录后,检验 用户权限的下一步就是数据库的访问权。而数据库的访问权是通过映射数据库的用户和登录账户之间的关系来实现的。一个登录账户在不同的数据库中可以映射成不同得数据库用户,从而可以具有不同的权限。LOGO8.6 知识进阶3.角色管理 角色是SQL Server引进的用来集中管理数据库和服务器权限的概念。数据库管理员(DBA)操作数据库的权限赋予角色,然后再将角色赋给数据库用户或者登录的账户,从而使数据库用户或登录账户有相应的权限。LOGO8.6 知识进阶 在SQL Server中既包含服务器角色又包含数据库角色。服务器角色:主要于在用户登录时授予的在服务器范围内的安全特权。数据库角色:能为某一
21、用户授予不同级别的管理或访问数据库及其对象得权限。LOGO8.6 知识进阶4.权限管理 SQL Server 使用权限来指定数据库用户的权限,如可以对哪些数据库或数据库对象,执行哪些操作。如果用户没有被授予这些权限,就不能对数据库或数据库进行访问、查询、修改或删除操作。LOGO8.6 知识进阶8.6.2 实施数据库安全管理过程中应注意的问题 除非必要,否则尽量以Windows验证来管理可连接SQL Server的使用者,以整合Windows NT/2000的安全机制。善用SQL Server的服务器角色与数据库角色功能。善用SQL Server的加密功能。系统安装完毕后,务必更改预设的sa密码
22、,免得有其他使用者“义务”管理您的SQL Server。LOGO项目实训 1实训题目实训题目设计“销售合同管理系统”数据库的安全管理策略。2实训目的实训目的(1)掌握SQL Server的安全机制,理解SQL Server的登录模式。根据项目需要创建登录用户,以及创建数据库角色,分配权限。(2)掌握数据库用户的创建方法,能够对数据库用户进行授权。3实训内容实训内容(1)使用SSMS修改数据库的登录模式,并进行登录验证。(2)使用T-SQL创建数据库用户test_user,与登录账户test_login相关联。(3)使用T-SQL创建数据库只读角色ROLE_READ,将数据库CONTRACTDB所有数据表的只读权限赋予该角色;创建数据删除角色ROLE_DEL,并将合同管理数据库所有数据表的删除权限赋予该角色。