赞
踩
数据库的一大特点是数据可以共享,既然是共享,那么肯定会有数据的安全性问题。所以说数据的共享不能是无条件的共享。
数据库的安全性是指保护数据库防止不合法使用所造成的数据泄露、更改或破坏。
系统安全保护措施是否有效是数据库系统主要的性能指标之一。
一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。
为防止数据泄露,数据库系统提供的主要技术有强制存取控制、数据加密存储和数据加密传输。此外安全性较高的部门提供日志审计功能,对入侵进行追踪。
数据库的安全性与计算机系统的安全性,与计算机硬件、操作系统、网络系统等安全性是紧密联系的。操作系统安全性的脆弱,网络协议安全保障的不足都会造成数据库安全性的破坏。为加强计算机安全保护,随着互联网的发展,逐步发展建立了一套可信计算机系统概念和标准。
计算机以及信息安全方面有一系列的安全标准,最有影响力的两个是:TCSEC和CC。
TCSEC又称紫皮书,1991年4月美国NCSC(国家计算机安全中心)颁布了《可信计算机系统评估标准关于可信数据库系统的解释》( Trusted Database Interpretation 简称TCSEC/TDI),它将TCSEC扩展到数据库管理系统,它定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。从四个方面描述安全级别划分的指标:安全策略、责任、保证和文档。
根据计算机系统各项标准的支持情况,TCSEC/TDI将系统划分为四组(division)七个等级,依次是 D、C(C1,C2)、B(B1,B2,B3)、A(A1),按照系统可靠或可信度逐渐增高。
CC是取代TCSEC的一个标准。CC提出国际公认的表述信息技术安全性的结构;把信息产品的安全要求分为:安全功能要求、安全保证要求。安全要求用以规范产品和系统的安全行为,安全保证要求解决如何正确有效地实施这些功能。
存取控制流程
用户身份鉴别是系统提供的最外层安全保护措施。每个用户在系统中都有一个安全标识。常用的身份鉴别方法又如下几种:
静态口令也就是我们常说的密码,他可以有数字字符串等构成。
动态口令即动态密码,一个密码只能用于一次登录。常见的动态密码有短信验证码。
通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。如门卡。
存取控制主要包括定义用户权限和合法权限检查两个部分。
用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统
常用存取控制方法:
大型数据库系统都支持自主存取控制,SQL标准也对自主存取控制提供支持,这主要通过SQL的GRANT
和REVOKE
实现。
在非关系系统中,用户只能对数据进行操作,存取控制对象也仅限于数据本身。关系数据库中存取控制对象如下:
SQL中GRANT
用于授予权限,REVOKE
用户收回已经授权的权限。
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
1.发出GRANT
语句可以是:数据库管理员、数据库对象创建者、已经拥有该权限的用户
2.接受GRANT可以是:一个或多个具体用户,PUBLIC(即全体用户)
3.如果指定了WITH GRANT OPTION,则获得某种权限的用户还可以把权限授予其他用户,但是不能循环授权
例1:把查询Student表的权限授予给用户u1
GRANT SELECT
ON TABLE Student
TO u1;
例2:把对stu表和course表的全部权限授予给用户u2和u3且让他们可以传播权限。
GRANT PRIVILEGES
ON TABLE stu,course
TO u2,u3
WITH GRANT OPTION;
例3:把对表stu的查询权限授予所有用户
GRANT SELECT
ON TABLE stu
TO PUBLIC;
例4:把查询学生表stu学号的权限授予给用户u4
GRANT SELECT(sno)
ON TABLE stu
TO u4;
授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
REVOKE语句的一般格式为:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
例1:把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
例2:收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
例3:把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE ;
这里使用CASCADE
关键字是因为U5有将自己的权限授予其他用户。所以收回时一并收回,不然会报错。
对创建数据库模式一类的数据库对象由数据库管理员在创建用户时创建。
CREATE USER <username>
[WITH][DBA|RESOURCE|CONNECT];
注意:CREATE USER不是SQL标准,各个系统的实现相差甚远
说明:
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。可以为一组具有相同权限的用户创建一个角色,使用角色简化授权的过程。
CREATE ROLE <角色名>
这样创建的角色是空的没有任何内容,可以用GRANT
为角色分配权限
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
REVOKE执行者是:
用于解决自主存储机制可能存在的“无意泄露”问题。
是指为保证系统更高程度的安全性,按照TCSEC标准中安全策略的要求所采取的强制存取检查手段。它不是用户能直接感知或进行控制的,用于数据有严格而固定密级分类的部门,例如政府部门或军事部门。
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
客体是系统中的被动实体,受主体操纵的文件、基本表、索引、视图等。
对于主体和客体,数据库管理系统为它们每个实例指派一个敏感度标记
敏感度标记分成若干级别绝密(Top Secret,TS)、机密(Secret,S)、可信(Confidential,C)、公开(Public,P)。
TS>=S>=C>=P
主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。
强制存取机制是通过对比主体和客体的敏感度标记和客体的敏感度标记,最终确定主体是否能够存取客体。
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
先进行自主存取控制检查,通过自主存取控制检查的数据对象再由系统进行强制存取控制检查,只有通过强制存取控制检查的数据对象方可存取。
视图机制即通过视图来对数据进行保护。简单的说就是通过视图机制把要保密的数据对无权操作的用户隐藏起来,从而自动对数据提供一定程度的安全保护。
视图机制间接地实现支持存取谓词的用户权限定义。
例:某大学老师王平只能检索计算机系学生的信息,系主任张明具有检索和增删改计算机系所有学生的权限。通过视图建立安全机制如下:
-- 先建立计算机系学生的视图CS_Student
CREATE VIEW CS_Student
AS
SELECT *
FROM Student
WHERE Sdept='CS';
-- 在视图上进一步定义存取权限
GRANT SELECT
ON CS_Student
TO 王平;
GRANT ALL PRIVILIGES
ON CS_Student
TO 张明;
启用一个专用的审计日志(Audit Log)将用户对数据库的所有操作记录在上面,审计员利用审计日志监控数据库中的各种行为,找出非法存取数据的人、时间和内容。还有一个就是C2以上安全级别的DBMS必须具有审计功能。
审计数据库服务器发生的事件就是服务器事件,包含数据库服务器启动、停止、数据库服务器配置文件重新加载。
对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的
对SQL语句,如DDL、DML、DQL及DCL语句的审计
对特定模式对象上进行的SELECT或DML操作的审计
AUDIT语句用来设置审计功能 ,NOAUDIT语句用来取消审计功能 。
审计一般分为用户级审计和系统级审计。
- 对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE
ON SC;
-- 取消对SC表的一切审计
NOAUDIT ALTER,UPDATE
ON SC;
对于敏感的数据,我们常常采用数据加密技术对数据进行加密。加密的基本思想是:根据一定的算法将原始数据(明文)变换为不可直接识别的格式(密文),从而使得不知道解密算法的人无法获取数据内容。
数据加密主要包括存储加密和传输加密。
一般提供透明和非透明两种存储加密方式。
为满足较高安全等级数据库管理系统的安全性保护要求,在自主存储控制和强制存取控制之外,还有推理控制以及数据库应用中隐蔽信道和数据隐私保护技术等。
推理控制处理的是强制存取没有解决的问题。数据库推理控制机制用来避免用户利用其能够访问的数据推知更高机密的数据。常用方法:基于函数依赖的推理控制、基于敏感关联的推理控制。
隐蔽通道也是处理强制存取没有解决的问题
数据隐私保护:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。