网络数据库第6章数据库的安全性本章目标本章结束时,学员能够:•了解计算机系统的三类安全性•了解可信计算机系统评测标准(TCSEC)及其级别划分•了解数据库的安全性控制及其技术•了解安全性控制机制•掌握SQLSERVER2000安全架构•掌握SQLSERVER2000安全管理•了解SQLSERVER2000的审计6.1计算机安全性概论•计算机系统的三类安全性问题•可信计算机系统评测标准(TCSEC)6.1计算机安全性概论(续)•所谓计算机系统安全性,是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。•三类安全:–技术安全类–管理安全类–政策法律类6.1.1可信计算机系统评测标准(TCSEC)•可信计算机系统评测标准(TCSEC):–美国国防部制定了TCSEC(可靠计算机系统评估标准,TrustedComputingSystemEvaluationCriteria,简称TCSEC),给出一套标准来定义满足特定安全等级所需的安全功能及其保证的程度。制定TCSEC标准的目的:1、提供一种标准,使用户可以对其计算机系统内敏感信息安全操作的可信程序做评估。2、给计算机行业的制造商提供一种可循的指导规则,使其产品能够更好地满足敏感应用的安全需求。6.1.1可信计算机系统评测标准(续)TCSEC对系统安全等级的划分:•TCSEC将计算机系统划分为四组七个等级,按系统可靠或可信程序逐渐增高排列,依次是:D、C1、C2、B1、B2、B3、A16.2数据库安全性控制•安全性控制定义–安全性控制保护数据库以防止不合法的使用所造成的数据泄露和破坏。•安全性措施–物理级–人际级–操作系统级–网络级–数据库系统级6.2数据库安全性控制(续)与数据库有关的安全技术:•身份认证•存取控制•视图•审计•数据加密6.2.1身份认证•用户标识和鉴别:–是系统提供的最外层安全保障措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用。•常用的方法:–用一个用户名或者用户标识号来标明用户身份–口令6.2.2存取控制数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据,这主要通过数据库系统的存取控制机制实现•存取控制机制主要包括两部分:–定义用户权限–合法权限检查•当前大型DBMS支持的两个安全级别:–C2级的DAC(自主存取控制)–B1级的MAC(强制存取控制)6.2.3视图机制•视图:–进行存取权限控制时为不同的用户定义的不同的数据对象范围。6.2.4审计•审计:–审计功能把用户对数据库的所有操作自动记录下来放入审记日志(AuditLog)中。–DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。6.2.5数据加密•数据加密:–是防止数据库中数据在存储和传输中失密的有效手段。•加密的两种方法:–替换方法–转换方法6.3SQLServer2000安全构架6.3.1SQLServer的登录认证用户使用SQLServer要经过两个安全性阶段:•身份验证•授权(权限验证)6.3.1SQLServer的登录认证(续)6.3.1SQLServer的登录认证(续)身份验证模式比较:•Windows认证模式的优点–更先进的安全策略–一组只需建一个用户–更快捷的访问•混合认证模式的优点–非windows用户及Internet客户可以连接到数据库6.3.2身份验证模式设置6.3.3权限验证6.3.3权限验证(续)两个默认登录帐户:•BUILTIN\Administrators–WINDOWSadministrators组成员默认使用此帐户登录•Sa–使用混合认证方式时,SQLSERVER的登录帐户6.4SQLServer安全管理•管理SQLServer登录•数据库用户6.4.1管理SQLServer登录--新建登录6.4.1管理SQLServer登录-新建登录(windows身份验证)单击此按钮,将弹出左边的对话框,在这里可以选择Windows系统中的用户设置默认数据库6.4.1管理SQLServer登录-新建登录(SQLServer身份验证)SQLserver身份验证用户名设置默认数据库6.4.1管理SQLServer登录-查看登录、修改登录(密码),拒绝、删除登录6.4.2数据库用户•数据库用户简介•管理数据库用户6.4.2.1数据库用户简介数据库最高权限用户--数据库所有者(dbo):•dbo是具有在数据库中执行所有活动的暗示性权限的用户•sysadmin的任何成员都映射到dbo用户•任何其他不是sysadmin角色底成员创建底对象都不属于dbo6.4.2.1数据库用户简介(续)数据库特殊用户--guest用户:•当满足下列所有条件时,登录采用guest用户的标识:登录有访问MicrosoftSQLServer实例的权限,但没有对应的用户帐户访问数据库的权限数据库中含有guest用户帐户•可以在除master和tempdb外(在这两个数据库中它必须始终存在)的所有数据库中添加或删除guest用户。默认情况下,新建的数据库中没有guest用户帐户6.4.2.1数据库用户简介(续)数据库对象所有者:•SQLServer查找对象底顺序为:o当前用户所拥有o为dbo所拥有•如果找不到对象,返回错误信息6.4.2.2管理数据库用户-创建数据库用户指定对应登录帐户6.4.2.2管理数据库用户-删除登录和用户•删除用户和组时将自动删除为该用户定义的权限•当某个用户当前拥有数据库对象时不能被删除•删除用户不会自动删除登录,因此不会防止用户联接到SQLServer实例6.4.2.2管理数据库用户-给数据库用户分配权限6.5权限管理权限管理包括授予或废除活动的用户权限:•处理数据和执行过程(对象权限)•创建数据库或数据库中的项目(语句权限)•利用授予预定义角色的权限(暗示性权限)6.5权限管理(续)GRANT:CanPerformActionREVOKE:NeutralDENY:CannotPerformAction6.5.1对象权限对象权限是指:处理数据或执行过程时需要的权限.包括:•SELECT、INSERT、UPDATE和DELETE语句权限,它们可以应用到整个表或视图中。•SELECT和UPDATE语句权限,它们可以有选择性地应用到表或视图中的单个列上。•SELECT权限,它们可以应用到用户定义函数。•INSERT和DELETE语句权限,它们会影响整行,因此只可以应用到表或视图中,而不能应用到单个列上。•EXECUTE语句权限,它们可以影响存储过程和函数。6.5.2语句权限•创建数据库或数据库中的项(如表或存储过程)所涉及的活动要求另一类称为语句权限的权限。•语句权限有:CREATEDATABASE创建数据库CREATETABLE创建表CREATEVIEW创建视图CREATERULE创建规则CREATEDEFAULT创建缺省CREATEPROCEDURE创建存储过程BACKUPDATABASE备份数据库BACKUPLOG备份事务日志6.5.3暗示性权限•暗示性权限控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。例如,sysadmin固定服务器角色成员自动继承在SQLServer安装中进行操作或查看的全部权限。•数据库对象所有者还有暗示性权限,可以对所拥有的对象执行一切活动。•例如,拥有表的用户可以查看、添加或删除数据,更改表定义,或控制允许其他用户对表进行操作的权限。权限管理小结预定义FixedRoleObjectOwner对象SELECTINSERTUPDATEDELETEREFERENCESSELECTUPDATEREFERENCESEXECTABLEVIEWCOLUMNSTOREDPROCEDURE语句CREATEDATABASECREATETABLECREATEVIEWCREATEPROCEDURECREATERULECREATEDEFAULTCREATEFUNCTIONBACKUPDATABASEBACKUPLOG6.6角色管理使用数据库角色的好处:对于任何用户,都可以随时让多个数据库角色处于活动状态如果所有用户、组和角色都在当前数据库中,则SQLServer角色可以包含WindowsNT4.0或Windows2000组和用户,以及SQLServer用户和其它角色在同一数据库中,一个用户可属于多个角色提供了可伸缩模型以便在数据库中设置正确的安全级别6.6.1角色概述MicrosoftSQLServer中的安全机制包括几个具有暗示性权限的预定义角色,两类预定义角色为:•固定服务器角色•固定数据库角色6.6.1角色概述(续)-固定服务器角色Sysadmin在SQLServer中进行任何活动。该角色的权限跨越所有其它固定服务器角色。Serveradmin配置服务器范围的设置。Setupadmin添加和删除链接服务器,并执行某些系统存储过程(如sp_serveroption)Securityadmin管理服务器登录。Processadmin管理在SQLServer实例中运行的进程。Dbcreator创建和改变数据库。Diskadmin管理磁盘文件。Bulkadmin执行BULKINSERT语句。6.6.1角色概述(续)-固定数据库角色db_owner进行所有数据库角色的活动,以及数据库中的其它维护和配置活动。该角色的权限跨越所有其它固定数据库角色。db_accessadmin在数据库中添加或删除WindowsNT4.0或Windows2000组和用户以及SQLServer用户。db_datareader查看来自数据库中所有用户表的全部数据。db_datawriter添加、更改或删除来自数据库中所有用户表的数据。db_ddladmin添加、修改或除去数据库中的对象。db_securityadmin管理SQLServer2000数据库角色的角色和成员,并管理数据库中的语句和对象权限。db_backupoperator有备份数据库的权限。db_denydatareader拒绝选择数据库数据的权限。db_denydatawriter拒绝更改数据库数据的权限。6.6.2角色的管理:新建数据库角色(续)6.7SQLServer安全性管理的途径•使用视图作为安全机制•视图与权限结合•使用存储过程作为安全机制6.7.1.1使用行级、列级安全性的视图例:在该例中某一销售点只能查看他自己的销售信息,使用pubs数据库中的sales表:首先创建视图createviewspecificsaleasselectord_numord_dateqtypaytermstitle_idfromsaleswherestor_id=’7067’当执行以下语句时select*fromspecificsale则只显示他自己的销售信息6.7.1.2视图与权限结合通过定义不同的视图及有选择地授予视图上的权限,可以将用户、组或角色限制在不同的数据子集内。例如:1.可以将访问限制在基表中行的子集内。例如,可以定义一个视图,其中只含有商业书籍或心理书籍的行,并向用户隐藏有关其它类型书籍的信息。2.可以将访问限制在基表中列的子集内。例如,可以定义一个视图,其中含有titles表中的所有行,但省略了royalty和advance列,因为这些信息比较敏感。3.可以将访问限制在基表中列和行的子集内。4.可以将访问限制在符合多个基表联接的行内。例如,可以定义一个视图,它联接表titles、authors和titleauthor表以显示作者姓名及其撰写的书籍。该视图隐藏作者的个人信息以及著作的财务信息。5.可以将访问限制在基表中数据的统计汇总内。例如,可以定义一个视图,其中只含有每类书籍的平均价格。6.可以将访问限制在另一个视图的子集内或视图和