数据库的运行控制-数据安全性.ppt
7.2 数据库的安全控制,7.2.1 安全控制的一般形式7.2.2 SQL Server 2000的安全控制,数据库的安全控制,数据库安全性是指保护数据库,防止未经授权的访问,以免数据的泄露、更改或破坏。数据库的完整性控制和安全性控制是数据库保护的两个方面。完整性是防止合法用户使用数据库时输入不合语义的数据。安全性则是防止用户非法使用数据。,7.2.1 安全控制的一般形式,与数据库有关的安全技术,身份标识和鉴别存取控制 视图 审计,身份标识和鉴别,用户的身份标识和鉴别是最外层的安全保护措施。数据库系统为每个用户提供互不相同的身份标识符供用户注册。任何数据库用户要访问数据库时,都要经过系统核实,通过核实才能进入系统。这个核实工作就称为用户鉴别。鉴别的方法多种多样,一般有:利用口令鉴别利用只有用户具有的物品鉴别利用用户的个人特征鉴别,存取控制,在数据库系统中用户只能访问其有权访问的数据。预先对每个用户定义存取权限。对于通过鉴别的合法用户,系统根据存取权限对用户的各种操作请求进行合法性检查,确保用户只能存取其有权存取的数据。存取权限有两个要素,即数据对象和操作类型。定义一个用户的存取权限就是要定义该用户可以在哪些数据对象上进行哪类操作。在DBMS中,定义存取权限称为授权。在关系数据库中,数据对象可以是列、元组和基本表,也可以是视图、存储过程等数据对象。常见的权限有下列几种:读权限、插入权限、修改权限、删除权限。,视图,视图是给用户提供个性化数据库模式的一种手段。系统可以为不同的用户定义不同的视图,这样也可以达到访问控制的目的,但安全保护功能不太精细。一般通过对视图授权,将视图和授权机制配合使用来限制用户的访问权限,保证数据库的安全。,审计,当数据非常敏感时,经常采用审计的方法,跟踪记录有关这些数据的访问活动。审计中用一个特殊的文件来自动记录用户对数据库的操作。分析审查这些审计记录,可以找出导致数据库出现安全问题的一系列事件,从而找到非法存取数据库的人。审计是需要在时间和空间上付出代价的,可作为可选的设置,由DBA根据应用对安全的要求,灵活地打开或关闭审计功能,以达到安全和效率的折衷。,7.2.2 SQL Server 2000的安全控制,SQL Server的验证模式,为了实现安全性,SQL Server对用户的访问进行两个阶段的检验:验证阶段:用户在SQL Server上获得对任何数据库的访问权限之前,必须登录到SQL Server上,并且被认为是合法的。SQL Server或Windows NT/2000对用户进行验证。许可确认阶段:用户验证通过后,登录到SQL Server上,系统检查用户是否有访问服务器上数据的权限。注意:Windows NT/2000及SQL Server所建立的用户身份标识均可登录到SQL Server。,SQL Server的验证模式,NT验证模式 用户只要成功登录到Windows NT/2000即能进入SQL Server。用户不必提供用户名和口令让SQL Server验证。混合验证模式该模式允许以SQL Server验证模式或NT验证模式来进行验证,使用哪种模式取决于在最初的通信时使用的网络库。SQL Server验证模式处理登录的过程为:用户输入登录名和密码后,SQL Server在系统注册表中监测输入的登录名和密码。如果输入的登录名存在,而且密码也正确,就可以登录到SQL Server上。,NT验证模式对SQL Server的影响,Sql server的配置信息都保存在master数据库的sysconfigures表内,但是在使用该数据库之前,就应该决定采用哪种验证模式。在windows注册表内,保存了sql server验证模式的相关信息以及启动sql server的必须信息。HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServer中的LoginMode的值决定了采用哪种验证模式。若为0,则采用混合验证模式;若不为0,则采用NT验证模式。,设置验证模式,注意:修改验证模式后,必须首先停止SQL Server服务,然后重新启动SQL Server才能使新的设置生效。,账号和角色,账号有两种:登录服务器的登录账号:只是让用户登录到SQL Server中,登录名本身不能让用户访问服务器中的数据库。使用数据库的用户账号:用户名在特定的数据库内创建,并关联一个登录名。用户定义的信息存放在服务器上的每个数据库的sysusers表中,用户没有密码相关联。通过授权给用户指定用户可以访问的数据库对象的权限。采用角色的方法管理存取权限。角色是一种SQL Server安全账户,它是管理权限时可以视为单个单元的其他安全账户的集合。是一个强大的工具,可以将用户集中到一个单元中,然后对该单元应用权限。对一个角色授予、拒绝或废除的权限也适用于该角色的任何成员。,服务器的登录账号,SQL Server安装后,系统默认创建两个登录帐户:sa和BULLTIN/administrator。前者是系统管理员的简称,拥有SQL Server系统和所有数据库中的全部权限;后者是专门为Windows管理员提供的,也拥有SQL Server系统和所有数据库中的全部权限。还可以建立一些用户自己的登录帐户。建立登录帐户可以使用企业管理器实现,也可以使用存储过程实现。,使用企业管理器建立登录帐户,可设置登录账号所属的服务器角色,服务器角色,负责管理和维护SQL Server的组,一般只会指定需要管理服务器的登录者属于服务器角色。用户不能添加、删除或更改固定的服务器角色。,注意:默认登录账号:sa和BULLTIN/administrator属于sysadmin服务器角色。,使用数据库的用户账号,登录账号存储在master中的sysxlongins中,用户账号存储在各个数据库的sysusers中。在安装SQL Server后,默认数据库中包含两个用户账号:dbo和guest。任何一个登录账号都可以通过guest账号来存取相应的数据库。对于自己创建的数据库来说,默认只有dbo账号而没有guest账号。当一个用户创建时,必须关联一个登录名;一个登录账号可以关联多个用户账号。每个登录账号在一个数据库中只能有一个用户账号,但是每个登录账号可以再不同的数据库中各有一个用户账号。如果在新建登录账号的过程中,指定对某个数据库具有存取权限,则在该数据库中将自动创建一个与该登录账号同名的用户账号。,指定登录账号可以访问某数据库,则在该数据库中自动创建一个与登录同名的用户账号。,注意:登录账号具有对某个数据库的访问权限,并不表示该登录账号对该数据库具有存取的权限。如果要对数据库中的对象进行增、删、改操作,还需设置用户账号的权限。sa和BULLTIN/administrator均可在映射为dbo用户。,数据库角色,数据库角色是对某个数据库具有相同访问权限的用户账户和组的集合。数据库角色应用于单个数据库。在SQL Server中,数据库角色可分为:标准角色:由数据库成员所组成的组,此成员可以是用户或者其他的数据库角色。应用程序角色:用来控制应用程序存取数据库的,本身并不包含任何成员。,10个固定的标准角色,public角色是一个特殊的数据库角色。首先,数据库中的每个用户都自动是public数据库角色的成员,用户不能从public角色中添加和删除成员。其次,用户可以对这个角色进行授权(其他固定角色的权限是固定的)。如果想让数据库中的全体用户都具有某个特定权限,则可以将该权限授予public。每个数据库用户都自动具有public角色的权限。,在企业管理器中建立一个新的数据库用户,在企业管理器中建立一个新的数据库用户,使用企业管理器实现将数据库用户添加到固定的数据库角色中,自定义数据库标准角色,应用程序角色,当要求对数据库的某些操作不允许用户用任何工具进行操作,而只能用特定的应用程序进行处理时就可以建立应用程序角色。应用程序角色不包含成员。用户之所以与应用程序角色关联,是由于用户能够运行激活该角色的应用程序,而不是因为他是角色成员。默认情况下,应用程序角色是非活动的,需要用密码激活。在激活应用程序角色以后,当前用户原来的所有权限会自动消失,而获得了该应用程序角色的权限。,应用程序角色的创建,权限,权限用来控制用户如何访问数据库对象。一个用户可以直接分配到权限,也可作为一个角色成员来间接得到权限。一个用户可同时属于具有不同权限的多个角色。权限分为:对象权限、语句权限、暗示性权限。一个用户或角色的权限可以有三种存在的形式:授予(grante):赋予用户某权限拒绝(deny):禁止用户的某权限废除(revoke):撤销以前授予或拒绝的权限。,对象权限,对象权限:是指用户访问和操纵数据库中的表、视图、存储过程等对象的权限。有五个不同的权限:select、insert、update、delete、execute(只用于存储过程),语句权限,语句权限:是指用户创建数据库,或者在数据库中创建或修改对象、执行数据库或事务日志备份的权限。语句权限有:Backup databaseBackup logCreate databaseDefaultCreate functionCreate procedureCreate ruleCreate tableCreate view,暗示性权限,暗示性权限是指系统预定义角色的成员或数据库对象所有者所拥有的权限。例如:拥有表的用户可查看、删除、添加数据,更改表定义,或控制允许其他用户对表进行操作的权限。,授权-GRANT,授予语句权限:GRANT ALL|语句权限名,TO 数据库用户名|用户角色名,授予对象权限:GRANTALL PRIVILEGES|对象权限名,ON 表名|视图名|存储过程名 TO 数据库用户名|用户角色名,WITH GRANT OPTION,收回权限REVOKE,收回语句权限:REVOKE语句权限名,FROM 数据库用户名|用户角色名,收回对象权限:REVOKE对象权限名,ON 表名|视图名|存储过程名 FROM 数据库用户名|用户角色名,,拒绝权限DENY,拒绝语句权限:DENY语句权限名,TO 数据库用户名|用户角色名,拒绝对象权限:DENY对象权限名,on 表名|视图名|存储过程名 to 数据库用户名|用户角色名,,例子,为用户u1,u2和u3授予Loan表的查询权限和amount属性上的修改权限。GRANT SELECT,UPDATE(amount)ON Loan TO u1,u2,u3授予用户u1创建视图的权限。GRANT CREATE VIEW TO u1,例子,为出纳员角色teller授予Account表的查询和修改权限。GRANT SELECT,UPDATE ON Account TO teller授予u1在关系Branch上的SELECT权限,并允许u1将这一权限转授他人。GRANT SELECT ON Branch to u1 WITH GRANT OPTION用户u1得到这一权限后,可以将其转授给用户u2:GRANT SELECT ON Branch to u2,例子,收回用户u1对帐户Account表的查询权限。REVOKE SELECT ON Account FROM u1收回用户u1创建视图的权限。REVOKE CREATE VIEW FROM u1拒绝用户u1插入、删除和修改Account表的权限。DENY INSERT,DELETE,UPDATE ON Account TO u1,使用企业管理器管理数据库用户权限,:取得该权限;:拒绝该权限,使用企业管理器管理角色权限,管理语句权限:右击“某库”“属性”对话框权限选项卡,