数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。数据库管理系统安全性保护,就是通过种种防范措施以防止用户越权使用数据库。安全保护措施是否有效是衡量数据库系统的主要性能指标之一。
9.1 数据库安全性控制的一般方法
9.1.1 安全性级别
对数据库不合法的使用称为数据库的滥用。数据库的滥用可分为无意滥用和恶意滥用。无意滥用主要是指经过授权的用户操作不当引起的系统故障、数据库异常等现象。恶意滥用主要是指未经授权的读取数据(即偷窃信息)和未经授权的修改数据(即破坏数据)。
数据库的完整性尽可能的避免对数据库的无意滥用。数据库的安全性尽可能避免对数据库的恶意滥用。
为了防止数据库的恶意滥用,可以在下述不同的安全级别上设置各种安全措施。
(1)环境级:对计算机系统的机房和设备加以保护,防止物理破坏。 (2)职员级:对数据库系统工作人员,加强劳动纪律和职业道德教育,并正确的授予其访问数据库的权限。
(3)操作系统级:防止未经授权的用户从操作系统层着手访问数据库。 (4)网络级:由于数据库系统允许用户通过网络访问,因此,网络软件内部的安全性对数据库的安全是很重要的。
(5)数据库系统级:检验用户的身份是否合法,检验用户数据库操作权限是否正确。
本节主要讨论数据库系统级的安全性问题。
9.1.2 数据库安全控制的一般方法
数据库系统中一般采用用户标识和鉴别、存取控制、视图以及密码存储等技术进行安全控制。 1. 标识与鉴别
用户标识和鉴别是DBMS提供的最外层保护措施。用户每次登录数据库时都
要输入用户标识,DBMS进行核对后,对于合法的用户获得进入系统最外层的权限。用户标识和鉴别的方法很多,常用的方法有:
(1)身份(Identification)认证
用户的身份,是系统管理员为用户定义的用户名(也称为用户标识、用户账号、用户ID),并记录在计算机系统或DBMS中。用户名是用户在计算机系统中或DBMS中的惟一标识。因此,一般不允许用户自行修改用户名。
身份认证,是指系统对输入的用户名与合法用户名对照,鉴别此用户是否为合法用户。若是,则可以进入下一步的核实;否则,不能使用系统。
(2) 口令(Password)认证
用户的口令,是合法用户自己定义的密码。为保密起见,口令由合法用户自己定义并可以随时变更。因此,口令可以认为是用户私有的钥匙。口令记录在数据库中。
口令认证是为了进一步对用户核实。通常系统要求用户输入口令,只有口令正确才能进入系统。为防止口令被人窃取,用户在终端上输入口令时,口令的内容是不显示的,在屏幕上用特定字符(用“*”或“●”的较为常见)替代。
(3)随机数运算认证
随机数认证实际上是非固定口令的认证,即用户的口令每次都是不同的。鉴别时系统提供一个随机数,用户根据预先约定的计算过程或计算函数进行计算,并将计算结果输送到计算机,系统根据用户计算结果判定用户是否合法。例如算法为:“口令=随机数平方的后三位”,出现的随机数是36,则口令是296。 2. 取控制(授权机制)
通过了用户标识鉴别的用户不一定具有数据库的使用权。DBMS还要进一步对用户进行识别和鉴定,以拒绝没有数据库使用权的用户(非法用户)对数据库进行存取操作。DBMS的存取控制机制是数据库安全的一个重要保证,它确保具有数据库使用权限的用户访问数据库并进行权限范围内的操作,同时令未被授权的用户无法接近数据。
(1)存取机制的构成 存取控制机制主要包括两部分: 1)定义用户权限
用户权限是指用户对于数据对象能够进行的操作种类。要进行用户权限定
义,DBMS必须提供有关定义用户权限的语言,该语言称为数据控制语言DCL。 具有授权资格的用户使用DCL描述授权决定,并把授权决定告知计算机。授权决定描述中包括将哪些数据对象的哪些操作权限授予哪些用户,计算机分析授权决定,并将编译后的授权决定存放在数据字典中。从而完成了对用户权限的定义和登记。
2)进行权限检查
每当用户发出存取数据库的操作请求后,DBMS首先查找数据字典,进行合法权限检查。如果用户的操作请求没有超出其数据操作权限,则准予执行其数据操作;否则,DBMS将拒绝执行此操作。
(2)存取机制的类别
当前网络版的DBMS一般都支持自主存取控制(DAC),有些大型DBMS还支持强制存取控制(MAC)。本节主要介绍自主存取控制。
在自主存取控制方法中,用户对于不同的数据对象可以有不同的存取权限,不同的用户对同一数据对象的存取权限也可以各不相同,用户还可以将自己拥有的存取权限转授给其他用户。
在强制存取控制方法中,每一个数据对象被标以一定的密级;每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。
显然,自主存取控制比较灵活,强制存取控制比较严格。 3. 视图机制
进行存取权限的控制,不仅可以通过授权来实现,而且还可以通过定义用户的外模式来提供一定的安全保护功能。在关系数据库中,可以为不同的用户定义不同的视图,通过视图机制把要保密的数据对无权操作的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。对视图也可以进行授权。
视图机制使系统具有数据安全性、数据逻辑独立性和操作简便等优点。 4.审计方法
审计功能就是把用户对数据库的所有操作自动记录下来放入审计日志
(Audit Log)中,一旦发生数据被非法存取,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
由于任何系统的安全保护措施都不可能无懈可击,蓄意盗窃、破坏数据的人
总是想方设法打破控制,因此审计功能在维护数据安全、打击犯罪方面是非常有效的。
由于审计通常是很费时间和空间的,因此DBA要根据应用对安全性的要求,灵活打开或关闭审计功能。
5.数据加密
对高度敏感数据(例如财务、军事、国家机密等数据),除了以上安全性措施外,还应该采用数据加密技术。
数据加密是防止数据在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据(称为明文)变换为不可直接识别的格式(称为密文),从而使得不知道解密算法的人无法获得数据的内容。加密方法主要有两种: 1)替换方法。该方法使用密钥(Encryption Key)将明文中的每一个字符转换为密文中的字符。
2)置换方法。该方法仅将明文的字符按不同的顺序重新排列。
单独使用这两种方法的任意一种都是不够安全的。但是将这两种方法结合起来就能达到相当高的安全程度。
9.1.3 关系数据库标准语言SQL的自主存取控制方法
SQL标准对自主存取控制提供了支持,其DCL主要是GRANT(授权)语句和REVOKE(收权)语句。
1. 关系中的用户权限
用户权限主要包括数据对象和操作类型两个要素。定义用户的存取权限称为授权,通过授权规定用户可以对哪些数据进行什么样的操作。表9-1列出了不同类型的数据对象的操作权限。
从表9-1可知,对于基本表、视图及表中的列,其操作权限有查询(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELETE)以及它们的总和ALL PRIVILEGE。对于基本表有修改其模式(ALTER)和建立索引(INDEX)的操作权限。 对于数据库有建立基本表(CREATETAB)的权限,用户有了此权限就可以建立基本表,因此称该用户为表的所有者(OWNER),他拥有对此基本表的全部操作权限。对于表空间有使用(USE)数据库空间存储基本表的权限。系统权限(CREATEDBC)有建立新数据库的权限。
表9-1 数据对象类型和操作权限
数据对象 表、视图、列(TABLE) 基本表(TABLE) 数据库(DATABASE) 表空间(TABLESPACE) 系统 操作权限 SELECT, INSERT, UPDATE, DELETE, ALL PRIVILEGE ALTER, INDEX CREATETAB USE CREATEDBC 2. SQL的存取控制功能--授权和收权语句 (1) 授权(GRANT)语句
格式:GRANT 权限1[,权限2,…][ON 对象类型 对象名称] TO 用户1[,用户2,…]
[WITH GRANT OPTION]
功能:将指定数据对象的指定权限授予指定的用户。
说明:其中,WITH GRANT OPTION选项的作用是允许获得指定权限的用户把权限再授予其他用户。
下面我们通过例子来理解GRANT语句的数据控制功能。
【例9.1】 把对读者信息表(readers)中的列“姓名”修改、查询表的权限授予用户user1的语句可以写为:
GRANT UPDATE(姓名),SELECT ON TABLE readers TO user1;
【例9.2】把对表readers,books, borrowinf的查询、修改、插入和删除等全部权限授予用户user1和用户user2的语句可以写为:
GRANT ALL PRIVILIGES ON TABLE readers,books, borrowinf TO userl,user2;
【例9.3】 把对表books的查询权限授予所有用户。 GRANT SELECT ON TABLE books TO PUBLIC;
【例9.4】 把在数据库MyDB中建立表的权限授予用户user2。 GRANT CREATETAB ON DATABASE MyDB TO user2;
【例9.5】把对表readers的查询权限授予用户user3,并给用户user3有再授予的权限。
GRANT SELECT ON TABLE readers TO user3 WITH GRANT OPTION; 【例9.6】用户user3把查询readers表的权限授予用户user4。 GRANT SELECT ON TABLE readers TO user4; (2) 回收(REVOKE)语句
格式:REVOKE权限1[,权限2…] [ON对象类型对象名]
FROM用户1[,用户2…];
功能:把已经授予指定用户的指定权限收回。 【例9.7】把用户user1修改读者姓名的权限收回。 REVOKE UPDATE(姓名)ON TABLE readers FROM userl; 【例9.8】 把用户user3查询readers表的权限收回。 REVOKE SELECT ON TABLE readers FROM user3;
在例9.5中授予用户user3可以将获得的权限再授予的权限,而在例9.6中用户user3将对readers表的查询权限又授予了用户user4,因此,例9.8中把用户user3的查询权限收回时,系统将自动地收回用户user4对readers表的查询权限。注意,系统只收回由用户user3授予用户user4的那些权限,而用户user4仍然具有从其他用户那里获得的权限
因篇幅问题不能全部显示,请点此查看更多更全内容