数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
所谓计算机系统安全性,是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。
计算机系统的安全性问题可以分为三大类:技术安全类、管理安全类、政策法律类。
计算机以及信息安全技术方面有一系列的安全标准,最有影响的当推TCSEC和CC这两个标准。
TCSEC/TDI从以下四个方面来描述安全性级别划分:安全策略、责任、保证、文档。
D级:最低级别。保留D级是为了将一切不符合更高标准的系统,统统归于D级。
C1级:只提供了非常初级的自主安全保护。能够实现用户数据分离,进行自主存取控制(DAC),保护或限制用户权限的传播。
C2级:安全产品的最低档次,提供受控的存取保护,即将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。
B1级:标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制(MAC)以及审计等安全机制。
B2级:结构化保护。
B3级:安全域。
A1级:验证设计,提供B3级保护的同时给出系统的形式化设计说明和验证以确信个安全保护真正实现。
CC提出了目前国际上公认的表述信息技术安全性的结构,即把对信息产品的安全要求分为安全功能要求和安全保证要求。
安全功能要求用以规范产品和系统的安全行为,安全保证要求解决如何正确有效地实施这些功能。
用户标识与鉴别是系统提供的最外层安全保护措施。
用户标识
用一个用户名或者用户标识号来标明用户身份。系统内部记录所有合法用户标识,系统鉴别此用户是否是合法用户。
口令
为了进一步核实用户,系统常常要求用户输入口令。系统核对口令以鉴别用户身份。
数据库安全的最重要的一点就是确保只授权给有资格的用户访问数据库的权限。
1、定义用户权限,并将用户权限登记到数据字典中
用户对某一数据对象的操作权力称为权限。某个用户应该具有哪种权限是一个管理问题而不是技术问题。DBMS的功能是保证这些决定的执行。
2、合法权限检查
每当用户发出存取数据库的操作请求后,DBMS查找数据字典,根据安全规则进行合法权限检查,若用户操作请求超出了定义的权限,系统拒绝执行此操作。
(1)自主存取控制,用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可以将其拥有的存取权限转授给其他用户。
(2)强制存取控制,每一个数据库对象呗标以一定的密级,每一个用户也被授予某一个级别的许可证。
主要通过SQL的GRANT和REVOKE语句来实现。
用户权限是由两个要素组成:数据库对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据库对象上进行哪些类型的操作。数据库系统中,定义存取权限称为授权。
GRANT语句向用户授予权限,REVOKE语句回收授予的权限。
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[, <对象类型> <对象名>]...
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
发出该GRANT语句的可以是DBA,也可以是该数据库对象创建者,也可以是已经拥有该权限的用户,接受权限的用户可以是一个或多个用户,也可以是PUBLIC,即全体用户。
如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他用户。否则不能传播。
授予的权限可以由DBA或其他授权者用REVOKE语句回收,REVOKE语句一般格式为:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]...
FROM <用户>[,<用户>]...
[CASCADE | RESRECT]
/*创建用户*/
CREATE USER <用户名>
[WITH] [DBA | RESOURCE | CONNECT]
拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主。但是不能创建模式,不能创建新用户。
拥有DBA权限的用户是系统中的超级用户。
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。
CREATE ROLE <角色名>
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[, <对象类型> <对象名>]...
TO <角色>[,<角色>]...
[WITH GRANT OPTION];
GRANT <角色>[,<角色>]...
TO <角色>[,<用户>]...
[WITH ADMIN OPTION]
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>
FROM <角色>[,<角色>]...
MAC是指系统为保证更高程度的安全性,按照TDI/TCSEC标准中安全策略的要求,所采取的强制存取检查手段。
DBMS所管理的全部试题被分为主体和客体两大类。
主体是系统中的活动实体,包括DBMS所管理的实际用户,也包括代表用户的各进程。
客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。对于主体和客体,DBMS为它们每个实例指派一个敏感度标记。
敏感度标记分为多个级别:绝密、机密、可信、公开
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体内容。
(2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。
用户可以为写入的数据对象赋予高于自己的许可证级别的密级。较高安全性级别提供的安全保护要包含较低级别的所有保护。因此,在实现MAC时要首先实现DAC,即DAC与MAC共同构成DBMS的安全机制。
可以为不同的用户定义不同的视图,把要保密的数据对无权存取的用户隐藏起来。视图机制间接地实现支持存取谓词的用户权限定义。
“审计”功能就是DBMS达到C2以上安全级别必不可少的一项指标。
审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。审计一般可以分为用户级审计和系统级审计。
用户级审计是任何用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和不成功的访问要求以及各种类型的SQL操作
系统及审计只能由DBA设置,用以检测成功或失败的登录要求、检测GRANT和REVOKE操作以及其他数据库级权限下的操作。
数据加密是防止数据库中的数据在存储或传输中失密的有效手段。
可以规定任何查询至少要设计N个以上的记录。
可以对顶任何查询的相交数据项不能超过M个。