第8章数据库保护
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库安全管理机制
权限管理
➢用户使用数据库的方式称为权限。 ➢通过数据库系统验证的合法用户,再通过权限设置与 管理,可以获得访问数据的特权。 ➢这些特权包括:读数据权限,插入数据权限,修改数 据权限,删除数据权限等。
数据库安全管理机制
数据库角色
➢在一些商用数据库管理系统中,将经过命名的一组与 数据库操作相关的权限集合称之为数据库角色,使用角 色来管理数据库权限可以简化授权过程。 ➢在SQL Server 2005中,首先创建角色,然后再给角色 授权。
用户与架构的分离
所谓SQL Server 2005中提供架构的定义与用户分 开,是指当在数据库级别创建用户时,可以指定该 账号默认的架构(Default Schema),如果没有指定, 则账号的默认架构为主dbo,这样的设计是为了向 前兼容。 由于对象归属在架构之下,通过赋予账号是否有 权限访问架构将可以避免上述的问题。
安全性基本概念
数据库安全管理机制
任何的数据库管理系统,对于想要进入数据库系 统的用户将会通过登录管理进行身份验证,只有合 法用户才会被允许进入. 对于已进入系统的用户,数据库管理系统还要通 过用户管理、角色管理、权限管理进行存取控制, 以允许合法用户只执行授权的操作。 所以说,数据库安全管理涉及以下安全技术:用 户标识和鉴定、存取控制、视图和密码存储。
创建架构的语法
然后为用户USER01指定其架构,同时创建属于该 架构的数据表TEST01,所使用的SQL语句如下所示:
USE TEACHING_MIS GO CREATE SCHEMA SCOURSES AUTHORIZATION USER01 CREATE TABLE TEST01(SCID CHAR(8),SCNAME NVARCHAR(30),SP CHAR(4)) GO
SQL Server 2005新增机制
登录 用户 用户和架构的分离 目录安全性 模块化执行上下文 粒度化的权限控制 口令策略的增强
SQL Server 2005的登录和用户
登录是SQL Server实例层对象,若要连接到某个数据库实 例,必须要有能够连接到该数据库实例的登录账号。 用户是数据库层的对象,当通过登录连接到某个数据库实 例时,须为数据库指明合适的用户,用于操作数据库对象。 一个合法的登录账号仅能表明该账号通过了WINDOWS或SQL Server的认证,并不表示该账号可以对数据库对象可以进 行某种或某些操作。一个登录账号总是和一个或多个数据 库用户相对应。
创建架构的语法
CREATE LOGIN LOGIN1 WITH PASSWORD='LOG123' CREATE LOGIN LOGIN2 WITH PASSWORD='LOG456' USE TEACHING_MIS GO CREATE USER USER01 FOR LOGIN LOGIN1; USE TEACHING_MIS GO CREATE USER USER02 FOR LOGIN LOGIN2;
创建架构的语法
最后,使用以下SQL语句将登录用户改变为USER02,再来查 询TEST01表:
SETUSER 'USER02' SELECT * FROM SCOURSES.TEST01
执行上述代码,出现错误而不能完成指定查询,该输出窗 口显示内容如下: ---------------------------------------------------------------------------------------------------消息15157,级别16,状态1,第1 行 由于以下原因之一,setuser 失败: 数据库主体'USER02' 不存在,与数据库主体对应的服务器主体没有服务器访问权 限,无法模拟此类型的数据库主体或您没有权限。
USE TEACHING_MIS; REVOKE SELECT ON SCOURSES.TEST01 FROM USER02 GO
否认权限
用户可通过两种方式获取权限,一种方式是直接使用 GRANT语句授予权限,另一种方式则是通过作为角色成员以 继承角色的权限。 REVOKE语句可以删除用户通过第一种方式所获得的权限, 而如果需要彻底删除安全主体的特定权限,必须使用DENY 语句来实现。 示例—否认前面授予用户USER02在对象TEST01表中查询 SCNAME字段的权限。
SQL Server 2005中的权限设定
在SSMS中进行用户授权 使用SQL语句进行用户授权 收回权限 否认权限
使用SQL语句进行用户授权
在SQL Server2005中,使用GRANT语句将安全对象 的权限授予指定的安全主体。但GRANT语句的语法 是比较复杂的,因为不同的安全对象有不同的权限。 使用GRANT子句进行授权操作的语法形式如下:
创建用户
示例—为数据库TEACHING_MIS创建用户 JOHN01,所使用的SQL语句为:
USE TEACHING_MIS GO CREATE USER JOHN01
用户与架构的分离
在ANSI SQL99就已经制定了架构(Schema)的规范, 用以区分各数据库内的对象,如数据表、视图表、 存储过程、自定义函数等等,所以这些数据对象的 两节名称(two-part name)形式为 SchemaName.ObjectName 。 SQL Server 2005中用户和架构已经分离,也就是 说,可能创建新的架构以管理这些不同的程序以及 专用的某些数据表。
USE TEACHING_MIS; GRANT SELECT ON OBJECT::SCOURSES.TEST01 TO USER02 GO
收回权限
在SQL Server 2005中,使用REVOKE语句可以从某个安全 主体处收回权限,注意该语句与GRANT语句对应,即是执行 REVOKE语句收回的必须是先前经过GRANT语句授予安全主体 的权限。 在前面示例中,所授予用户USER02对于安全对象TEST01的 查询权限可以使用以下的REVOKE语句予以收回:
创建登录
CREATE LOGIN login_name{WITH<option_list1>|FROM<sources>} <sources>::= WINDOWS[WITH<windows_options>[,…]] |CERTIFICATE cert_name |ASYMMETRIC KEY asym_key_name <option_list1>::= PASSWORD=’password’[HASHED][MUST_CHANGE][,<opti on_list2>[,…]]
安全性基本概念
数据库系统的安全性建立在计算机系统安全性的 基础上。 数据库系统安全性可以由多种方式实现
➢借助于计算机系统的安全性来保护数据库安全 ➢通过用户程序来识别或验证进入数据库系统的用户的合法性 ➢通过外部程序以控制对数据的合法操作
任何一个商用数据库管理系统,都有其独立的数 据库安全管理,而这是更为直接的数据安全控制措 施和方法。
创建登录
<option_list2>::= SID=sid |DEFAULT DATABASE=database |DEFAULT LANGUAGE=language |CHECK_EXPIRATION={ON|OFF} |CHECK_POLICY={ON|OFF} [CREDENTIAL=credential_name] <windows_options>::= DEFAULT_DATABASE=database |DEFAULT_LANGUAGE=language
数据库安全管理机制
用户标识
➢用户标识是数据库安全性管理中最外层的安全保护,它由 系统提供一定的方式让用户标识自己的身份。常用方法有: ➢用户名:系统提供一定方法以让用户来标识自己的名字或 身份 ➢口令:系统进行核实以鉴别用户身份,只有通过鉴别后的 用户才允许进入数据库系统。 ➢一般可对数据库的用户分为四类:系统用户(DBA),数据对 象的属主(Owner),一般用户,公共用户(Public)。
GRANT {ALL[PRIVILEGES]} |permission[(column[,…])][,…n] [ON [class::]securable] TO principal [,…n] [WITH GRANT OPTION][AS principal]
使用SQL语句进行用户授权
示例—给用户USER02赋予在数据库TEACHING_MIS 上查询SCOURSES.TEST01表的权限,可使用下面的 SQL语句:
用户与架构的分离
用户账号和架构分离具有以下的作用
➢通过设置架构的拥有者是角色(Role)或Windows的组 (Group),可以让多个账号同时有权访问该架构。让用 户自建对象时,有较大的弹性。而赋予权限时可以在架 构级别,也可以在对象自身。 ➢当删除用户账号时,不必更改该账号所建对象的名称 与拥有者。前端应用程序也不必改写与重新测试。
创建登录
示例—创建登录JOHN,其口令为“J12345”。
CREATE LOGIN JOHN WITH PASSWORD=‘J12345’
创建用户
CREATE User_name[{{FOR|FROM} {LOGIN login_name | CERTIFICATE cert_name |ASYMMETRIC KEY asym_key_name } |WITHOUT LOGIN } [WITH DEFAULT_SCHEMA=schema_name]
创建架构的语法
在SQL Server 2005中,虽同为一个数据库的用户,但由 于USER02没有SCOURES的所有权,则不能操作该架构下的表 TEST01,只有当USER02赋予权限后,才可操作该表,在这 里,权限不再和用户相关,用户和架构已经分离。 当用户访问对象但并没有以两节名称明确指定架构时, SQL Server 2005会先找与用户默认架构相同的架构下的对 象,若找不到该对象,再去dbo架构下查找是否有相同的对 象。
创建架构的语法
注意此时是以sa登录创建的,因此该架构也属于sa登录用 户,当使用以下SQL语句来改变登录用户为USER01,再查询 所创建的表TEST01:
SETUSER 'USER01' SELECT * FROM SCOURSES.TEST01 由于USER01是SCOURSES架构的拥有者,所以其具有操作该 架构的权限,因此,可以通过SELECT语句正确查询到 TEST01表中的数据。
数据库技术与应用 第八章数据库保护
主要内容
数据库系统安全性 数据完整性 事务处理与并发控制 数据库恢复
SQL Server 2005数据库恢复
数据库系统安全性
所谓数据库的安全性是指保护数据库以防止非法 使用数据库所造成的数据泄密、更改或破坏。
数据库系统的安全性是评价数据库系统性能的主 要指标之一。
Leabharlann Baidu
数据库安全管理机制
存取控制
➢当用户发出存取数据库的操作请求后,数据库管理系 统会根据安全规则进行合法权限检查,若用户的请求超 出了所定义的权限,系统将拒绝执行该项操作。 ➢用户的权限定义和合法性检查机制构成了数据库管理 系统的安全子系统。
视图、审计与数据加密
视图用于保障数据库安全性 审计 数据加密
创建架构的语法
示例—在数据库TEACHING_MIS中创建由USER01拥 有的包含表TEST01的名为SCOURES的架构。 为体验用户和架构分离所带来的优越性,首先创 建2个登录LOGIN1、LOGIN2和2个属于TEACHING_MIS 数据库的用户USER01与USER02,并让它们分别与上 面所创建的登录相关联,其所使用的SQL语句为:
创建架构的语法
CREATE SCHEMA schema_name_clause[<schema_element>[,…]] schema_name_clause::= { schema_name |AUTHORIZATION owner_name |schema_name AUTHORIZATION owner_name } schema_element::= { table_definition|view_difinition|grant_statement |revoke_statement|deny_statement }