1、本章目标本章结束时,学员能够:本章结束时,学员能够:了解计算机系统的三类安全性 了解可信计算机系统评测标准(TCSEC)及其级别划分 了解数据库的安全性控制及其技术 了解安全性控制机制 掌握SQL SERVER 2000安全架构 掌握SQL SERVER 2000安全管理 了解SQL SERVER 2000的审计6.1计算机安全性概论 计算机系统的三类安全性问题 可信计算机系统评测标准(TCSEC)6.1计算机安全性概论(续)所谓计算机系统安全性,是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。三
2、类安全:技术安全类 管理安全类 政策法律类6.1.1可信计算机系统评测标准(TCSEC)可信计算机系统评测标准(可信计算机系统评测标准(TCSEC):):美国国防部制定了TCSEC(可靠计算机系统评估标准,Trusted Computing System Evaluation Criteria,简称TCSEC),给出一套标准来定义满足特定安全等级所需的安全功能及其保证的程度。制定TCSEC标准的目的:1、提供一种标准,使用户可以对其计算机系统内敏感信息安全操作的可信程序做评估。2、给计算机行业的制造商提供一种可循的指导规则,使其产品能够更好地满足敏感应用的安全需求。6.1.1可信计算机系统评测
3、标准(续)TCSEC 对系统安全等级的划分:TCSEC 将计算机系统划分为四组七个等级,按系统可靠或可信程序逐渐增高排列,依次是:D、C1、C2、B1、B2、B3、A16.2数据库安全性控制 安全性控制定义 安全性控制保护数据库以防止不合法的使用所造成的数据泄露和破坏。安全性措施 物理级 人际级 操作系统级 网络级 数据库系统级6.2数据库安全性控制(续)与数据库有关的安全技术与数据库有关的安全技术:身份认证身份认证存取控制存取控制视图视图审计审计数据加密数据加密6.2.1身份认证 用户标识和鉴别:用户标识和鉴别:是系统提供的最外层安全保障措施。其方法是由系统提供一定的方式让用户标识自己的名字
4、或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用。常用的方法:常用的方法:用一个用户名或者用户标识号来标明用户身份 口令6.2.2存取控制数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据,这主要通过数据库系统的存取控制机制实现 存取控制机制主要包括两部分:定义用户权限 合法权限检查 当前大型DBMS支持的两个安全级别:C2级的DAC(自主存取控制)B1级的MAC(强制存取控制)6.2.3视图机制 视图:视图:进行存取权限控制时为不同的用户定义的不同的数据对象范围。6.2.4审计 审计:审计:审计功能把用户对数据库的
5、所有操作自动记录下来放入审记日志(Audit Log)中。DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。6.2.5数据加密 数据加密:数据加密:是防止数据库中数据在存储和传输中失密的有效手段。加密的两种方法:加密的两种方法:替换方法 转换方法6.3 SQL Server 2000安全构架6.3.1 SQL Server 的登录认证 用户使用SQL Server要经过两个安全性阶段:身份验证 授权(权限验证)6.3.1 SQL Server 的登录认证(续)6.3.1 SQL Server 的登录认证(续)身份验证模式比较:身份验证模式比较
6、:Windows 认证模式的优点 更先进的安全策略 一组只需建一个用户 更快捷的访问 混合认证模式的优点 非windows用户及Internet客户可以连接到数据库6.3.2 身份验证模式设置6.3.3权限验证6.3.3权限验证(续)两个默认登录帐户两个默认登录帐户:BUILTINAdministrators WINDOWS administrators组成员默认使用此帐户登录 Sa 使用混合认证方式时,SQL SERVER的登录帐户6.4 SQL Server安全管理 管理管理SQL Server 登录登录 数据库用户数据库用户6.4.1管理管理SQL Server 登录登录新建登录6.4.
7、1管理管理SQL Server 登录登录新建登录(windows身份验证身份验证)单击此按钮,将弹出左边的对话框,在这里可以选择Windows系统中的用户设置默认数据库6.4.1管理管理SQL Server 登录新登录新建登录建登录(SQL Server身份验证)SQL server身份验证用户名设置默认数据库6.4.1管理管理SQL Server 登录登录查看登录、修改登录(密码),拒绝、删除登录6.4.2 数据库用户 数据库用户简介数据库用户简介 管理数据库用户管理数据库用户6.4.2.1数据库用户简介数据库用户简介数据库最高权限用户数据库最高权限用户-数据库所有者数据库所有者(dbo):
8、dbo 是具有在数据库中执行所有活动的暗示性权限的用户 sysadmin 的任何成员都映射到dbo用户 任何其他不是sysadmin角色的成员创建的对象都不属于dbo6.4.2.1数据库用户简介数据库用户简介(续)数据库特殊用户数据库特殊用户guest 用户用户:当满足下列所有条件时,登录采用 guest 用户的标识:登录有访问 Microsoft SQL Server 实例的权限,但没有对应的用户帐户访问数据库的权限 数据库中含有 guest 用户帐户可以在除 master 和 tempdb 外(在这两个数据库中它必须始终存在)的所有数据库中添加或删除 guest 用户。默认情况下,新建的数
9、据库中没有 guest 用户帐户6.4.2.1数据库用户简介数据库用户简介(续)数据库对象所有者数据库对象所有者:SQL Server查找对象的顺序为:o 当前用户所拥有o 为dbo所拥有 如果找不到对象,返回错误信息6.4.2.2管理数据库用户管理数据库用户创建数据库用户指定对应登录帐户6.4.2.2管理数据库用户管理数据库用户删除登录和用户 删除用户和组时将自动删除为该用户定义的权限 当某个用户当前拥有数据库对象时不能被删除 删除用户不会自动删除登录,因此不会防止用户联接到SQL Server 实例6.4.2.2管理数据库用户管理数据库用户给数据库用户分配权限6.5 权限管理权限管理包括授
10、予或废除活动的用户权限:处理数据和执行过程(对象权限)创建数据库或数据库中的项目(语句权限)利用授予预定义角色的权限(暗示性权限)6.5权限管理(续)GRANT:Can Perform ActionREVOKE:NeutralDENY:Cannot Perform Action6.5.1对象权限对象权限是指对象权限是指:处理数据或执行过程时需要的权限.包括:SELECT、INSERT、UPDATE 和 DELETE 语句权限,它们可以应用到整个表或视图中。SELECT 和 UPDATE 语句权限,它们可以有选择性地应用到表或视图中的单个列上。SELECT 权限,它们可以应用到用户定义函数。IN
11、SERT 和 DELETE 语句权限,它们会影响整行,因此只可以应用到表或视图中,而不能应用到单个列上。EXECUTE 语句权限,它们可以影响存储过程和函数。6.5.2语句权限创建数据库或数据库中的项(如表或存储过程)所涉及的活动要求另一类称为语句权限的权限。语句权限有:CREATE DATABASE 创建数据库CREATE TABLE 创建表CREATE VIEW 创建视图CREATE RULE 创建规则CREATE DEFAULT 创建缺省CREATE PROCEDURE 创建存储过程BACKUP DATABASE 备份数据库BACKUP LOG 备份事务日志 6.5.3暗示性权限 暗示性
12、权限控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。例如,sysadmin 固定服务器角色成员自动继承在 SQL Server 安装中进行操作或查看的全部权限。数据库对象所有者还有暗示性权限,可以对所拥有的对象执行一切活动。例如,拥有表的用户可以查看、添加或删除数据,更改表定义,或控制允许其他用户对表进行操作的权限。权限管理小结Fixed RoleObject OwnerSELECT INSERTUPDATEDELETEREFERENCESSELECT UPDATEREFERENCESEXECTABLEVIEWCOLUMNSTORED PROCEDURECREATE DATAB
13、ASECREATE TABLECREATE VIEWCREATE PROCEDURECREATE RULECREATE DEFAULTCREATE FUNCTIONBACKUP DATABASEBACKUP LOG6.6角色管理使用数据库角色的好处:对于任何用户,都可以随时让多个数据库角色处于活动状态 如果所有用户、组和角色都在当前数据库中,则 SQL Server 角色可以包含 Windows NT 4.0 或 Windows 2000 组和用户,以及 SQL Server 用户和其它角色 在同一数据库中,一个用户可属于多个角色 提供了可伸缩模型以便在数据库中设置正确的安全级别6.6.1角色
14、概述Microsoft SQL Server中的安全机制包括几个具有暗示性权限的预定义角色,两类预定义角色为:固定服务器角色 固定数据库角色6.6.1 角色概述(续)固定服固定服务器角色务器角色Sysadmin在 SQL Server 中进行任何活动。该角色的权限 跨越所有其它固定服务器角色。Serveradmin配置服务器范围的设置。Setupadmin添加和删除链接服务器,并执行某 些系统存储过程(如sp_serveroption)Securityadmin 管理服务器登录。Processadmin 管理在 SQL Server 实例中运行的进程。Dbcreator创建和改变数据库。Dis
15、kadmin管理磁盘文件。Bulkadmin执行 BULK INSERT 语句。6.6.1 角色概述(续)固定固定数数据库角色据库角色db_owner进行所有数据库角色的活动,以及数据库中的 其它维护和配置活动。该角色的权限跨越所有 其它固定数据库角色。db_accessadmin在数据库中添加或删除 Windows NT 4.0 或 Windows 2000 组和用户以及 SQL Server 用户。db_datareader查看来自数据库中所有用户表的全部数据。db_datawriter添加、更改或删除来自数据库中所有用户表的数据。db_ddladmin添加、修改或除去数据库中的对象。db
16、_securityadmin管理 SQL Server 2000 数据库角色的角色和成员,并管理数据库中的语句和对象权限。db_backupoperator有备份数据库的权限。db_denydatareader拒绝选择数据库数据的权限。db_denydatawriter拒绝更改数据库数据的权限。6.6.2角色的管理:新建数据库角色(续)6.7 SQL Server 安全性管理的途径 使用视图作为安全机制 视图与权限结合 使用存储过程作为安全机制 6.7.1.1使用行级、列级安全性的视图例:在该例中某一销售点只能查看他自己的销售信息,使用pubs 数据库中的sales 表:首先创建视图creat
17、e view specificsale asselect ord_num ord_date qty payterms title_idfrom saleswhere stor_id=7067当执行以下语句时select*from specificsale 则只显示他自己的销售信息6.7.1.2视图与权限结合 通过定义不同的视图及有选择地授予视图上的权限,可以将用户、组或角色限制在不同的数据子集内。例如:1.可以将访问限制在基表中行的子集内。例如,可以定义一个视图,其中只含有商业书籍或心理书籍的行,并向用户隐藏有关其它类型书籍的信息。2.可以将访问限制在基表中列的子集内。例如,可以定义一个视图,
18、其中含有 titles 表中的所有行,但省略了 royalty 和 advance 列,因为这些信息比较敏感。3.可以将访问限制在基表中列和行的子集内。4.可以将访问限制在符合多个基表联接的行内。例如,可以定义一个视图,它联接表 titles、authors 和 titleauthor 表以显示作者姓名及其撰写的书籍。该视图隐藏作者的个人信息以及著作的财务信息。5.可以将访问限制在基表中数据的统计汇总内。例如,可以定义一个视图,其中只含有每类书籍的平均价格。6.可以将访问限制在另一个视图的子集内或视图和基表组合的子集内。6.7.2使用存储过程作为安全机制 存储过程是Transact-SQL 语
19、句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。如果用户不具有访问视图和表的权限,那么通过存储过程仍能够让其查询相应的数据信息。实现的方法很简单,只要让该用户具有存储过程的EXEC 权限就可以了。要确保该存储过程中包含了查询语句,比如可创建下面的存储过程create procedure selsales asselect*from sales然后将存储过程的EXEC 权限授予用户当用户,执行该存储过程时就可以查看到相应信息。使用存储过程的优点在于不必对视图和表的访问权限进行分配。6.8使用 SQL 事件探查器进行监视 监视 SQL Server 实例的性能 调试 Transac
20、t-SQL 语句和存储过程 识别执行慢的查询 在工程开发阶段,通过单步执行语句测试 SQL 语句和存储过程,以确认代码按预期运行 通过捕获生产系统中的事件并在测试系统中重播它们来解决 SQL Server 中的问题 审核和复查在 SQL Server 实例中发生的活动6.8.1 启动SQL 事件探查器6.8.2 使用SQL 事件探查器方案通常情况下,使用 SQL 事件探查器可以:查找执行最差的查询 识别死锁原因 监视存储过程的性能 审核 Microsoft SQL Server 活动 监视每个用户的 Transact-SQL 活动6.8.3 创建跟踪示例从这里创建新的跟踪 6.8.3创建跟踪示
21、例(续)跟踪属性对话框 6.8.3创建跟踪示例(续)属性(事件选项卡)6.8.3创建跟踪示例(续)属性(数据列选项卡)6.8.3创建跟踪示例(续)属性(筛选器选项卡)6.8.3创建跟踪示例(续)6.8.4 SQL 事件探查器性能考虑在使用SQL 事件探查器的时候也要适当考虑性能方面的问题,如果跟踪的开销太大则应当适当调整跟踪策略,主要的性能降低由以下原因产生:运行的跟踪过多 管理大跟踪文件本章总结 计算机系统的三类安全性 可信计算机系统评测标准(TCSEC)及其级别划分 数据库的安全性控制及其技术 安全性控制机制的功能 SQL SERVER 2000安全架构 SQL SERVER 2000安全管理 SQL SERVER 2000中的角色 SQL SERVER 2000安全策略 SQL SERVER 2000事件探查器的使用