数据库系统概论——数据库安全性

数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或损坏系统安全保护措施是否有效是数据库系统的主要技术指标之一

1. 不安全因素

  1. 非授权用户对数据库的恶意存取和破坏,预防措施:用户身份鉴别、存取控制和视图等;
  2. 数据库中重要或敏感的数据被泄露,预防措施:强制存取控制、数据加密存储和加密传输等;
  3. 安全环境的脆弱性,预防措施:加强计算机系统的安全性保证,建立完善的可信标准(安全标准)。

2. 安全标准

目前,各国引用或制定的一系列安全标准中,最重要的是美国国防部(DoD)于1985年正式颁布的《DoD可信计算机系统评估标准》(TCSEC,橙皮书)。TDI/TCSEC 标准是将 TCSEC 扩展到数据库管理系统,形成的《可信计算机系统评估标准关于可信数据库系统的解释》(TDI,紫皮书)。其中定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。

TDI 与 TCSEC 一样,从安全策略、责任、保证和文档四个方面来描述安全性级别划分的指标,每个方面又细分为若干项。

1993年,美国政府同加拿大及欧共体共同起草单一的通用准则(CC)并将其推到国际标准,制定的目的是建立一个各国都能接受的通用的信息安全产品和系统的安全性评估准则。

CC v2.1 于1999年被 ISO 采用为国际标准,2001年被我国采用为国家标准。目前,CC 已经取代 TCSEC 成为评估信息产品安全性的主要标准。信息产品的安全级别可分为:D < C1 < C2 < B1 < B2 < B3 < A1。其中,C2 级的数据库管理系统支持自主存取控制(DAC),B1 级的数据库管理系统支持强制存取控制(MAC)。

根据计算机系统对安全性各项指标的支持情况,TCSEC/TDI 将系统划分为四组七个等级,按系统可靠或可信程度逐渐增高。安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护包含较低级别的所有保护要求,同时提供更多或更完善的保护能力。

  • D 级,最小保护(Minimal protection),最低级别,一切不符合更高标准的系统;
  • C1 级,自主安全保护(Discretionary Security protection),只提供非常初级的自主安全保护,能够实现对用户和数据的分离,进行自主存取控制,保护或限制用户权限的传播;
  • C2 级,受控的存取保护(Controlled Access protection),实际安全产品的最低档次,提供受控的存取保护,即将 C1 级的自主存取控制进一步细化,以个人身份注册负责,并实施审计和资源隔离;
  • B1 级,标记安全保护(Labeled Security protection),对系统的数据加以标记,并对标记的主体和客体实施强制存取控制以及审计等安全机制;
  • B2 级,结构化保护(Structural protection),建立形式化的安全策略模型并对系统内的所有主体和客体实施 DAC 和 MAC。
  • B3 级,安全域(Security Domains),该级的 TCB(可信计算机库)必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程;
  • A1 级,验证设计(Verified Design),提供 B3 级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现。

3. 安全技术

计算机系统的三类安全性问题:技术安全、管理安全、政策法律。

计算机系统的安全模型:

在这里插入图片描述

数据库管理系统安全控制模型:

在这里插入图片描述

用户访问数据库的安全认证过程如下:

  1. 确认用户是否是数据库服务器的合法账户(用户身份鉴别);
  2. 确认用户是否是要访问的数据库的合法用户(验证数据库访问权限);
  3. 确认用户是否具有合适的操作权限(验证操作权限)。

数据库安全性控制的常用方法:用户标识和鉴定、存取控制、视图、审计、数据加密

3.1 用户标识和鉴别

该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。

用户身份鉴别是数据库管理系统提供的最外层安全保护措施,每个用户在系统中都有一个用户标识(由用户名和用户标识号组成),用户标识号(UID)在系统的生命周期内是唯一的,并且系统内部记录这所有合法用户的标识。系统鉴别是指由系统提供一定的方式让用户标识自己的身份或名字,用户进入系统时由系统进行核对,通过鉴定后才提供使用数据库管理系统的权限。

用户身份鉴别的方法:

  1. 静态口令鉴别:目前常用的鉴别方法,相当于设置用户的密码。简单,容易被攻击,安全性较低;
  2. 动态口令鉴别:口令是动态变化的,登陆系统前获取新口令,相当于短信验证码或者动态令牌。增加口令被窃取或破解的难度,安全性相对高一些;
  3. 生物特征鉴别:用图像处理和模式识别等技术,相当于指纹识别或者脸部识别。产生质的飞跃,安全性较高;
  4. 智能卡识别:智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。实际应用中一般采用个人身份识别码(PIN)和智能卡相结合的方式。

3.2 存取控制

通过定义用户权限合法权限检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如,C2 级中的自主存取控制(Discretionary Access Control,DAC),B1 级中的强制存取控制(Mandatory Access Control,MAC)。

3.2.1 自主存取控制——灵活

用户可以自主地决定将数据的存取权限授予何人,决定是否将权限授予别人,这样的存取控制就是自主存取控制。自主存取控制主要通过 GRANTREVOKE 语句实现。

用户权限是由数据库对象和操作类型组成的。定义一个用户的存取权限就是要定义该用户在哪些数据库对象上可以进行哪些类型的操作。

在非关系数据库系统中,用户只能对数据进行操作,存取控制的数据库对象也仅限于数据本身;在关系数据库系统中,存取控制的对象不仅包括数据本身(基本表中的数据、属性列上的数据),还包括数据库模式(数据库、基本表、视图和索引等)。

在这里插入图片描述

3.2.2 强制存取控制——严格

自主存取控制(DAC)能够通过授权机制有效地控制对敏感数据的存取,但是由于用户对数据的存取权限是自主的,可以自由授权,导致安全性降低。因此,需要对系统控制下的所有主客体实施强制存取控制策略。

系统为保护更高程度的安全性,按照 TDI/TCSEC 标准中的安全策略的要求所采取的强制存取检查手段。它不是用户能直接感知或进行控制的。强制存取控制适用于那些数据有严格而固定密级分类的部门(军事或政府等)。

在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类:

  1. 主体是系统中的活动实体,既包含数据库管理系统所管理的实际用户,也包含代表用户的各进程;
  2. 客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。

数据库管理系统为主体和客体每个实例指派一个敏感标记(label)。标记分为绝密 TS >= 机密 S >= 可信 C >= 公开 P。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。强制存取控制机制就是通过对比主体的敏感度标记和客体的敏感度标记,最终确定主体是否能够存取客体。

当某一用户(或某一主体)以 label 注册入系统时,系统要求他对任何客体的存取要遵循:

  1. 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;
  2. 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。

强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在实现强制存取控制时要首先实现自主存取控制,自主存取控制与强制存取控制共同构成数据库管理系统的安全机制。

系统首先进行自主存取控制检查,对通过自主存取控制检查的允许存取的数据库对象再由系统自动进行强制存取控制检查,只有通过强制存取控制检查的数据库对象方可存取。

3.3 视图

为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

3.4 审计

建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA 可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。C2 及以上级别的数据库管理系统必须具有审计功能。

审计分为两类:

  • 用户级审计:针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和不成功的访问要求以及各种类型的 SQL 操作;
  • 系统级审计:DBA设置,监测成功或失败的登录要求,监测 GRANTREVOKE 操作以及其他数据库级权限下的操作。

3.5 数据加密

对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。

4. 统计数据库

统计数据库:允许用户查询聚集类型的信息(如合计、平均值等)②不允许查询单个记录信息

统计数据库查询规则

  1. 任何查询至少要涉及 N(N 足够大)个以上的记录;
  2. 任意两个查询的相交数据项不能超过 M 个;
  3. 任一用户的查询次数不能超过 1+(N-2)/M 个。

特殊安全性问题:统计数据库允许用户查询聚集类型的信息,如合计、平均值、最大值、最小值等,不允许查询单个记录信息。但是,人们可以从合法的查询中推导出不合法的信息,即可能存在隐蔽的信息通道

5. 相关 SQL

5.1 GRANT 授权

GRANT <权限>[,<权限>]...
[ON <对象类型> <对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];

WITH GRANT OPTION 允许授权传播。SQL 标准允许具有 WITH GRANT OPTION 的用户把自身权限或其子集传递授予其他用户,但不允许循环授权,即被授权者不能把权限再授回给授权者或其祖先。

该语句的执行权限可以是数据库管理员、数据库对象创建者、已经拥有对应权限且能够传播授权的普通用户。接受权限的用户可以是一个或多个具体用户,也可以是全体用户 PUBLIC

对属性列的授权时必须明确指出相应属性列名。

GRANT SELECT ON TABLE Student TO User1;  # 将查询 Student 表的权限授给 User1
GRANT ALL PRIVILIGES ON TABLE Student, Course TO User2, User3;  # 把对 Student 表和 Course 表的全部权限授予 User2 和 User3
GRANT UPDATE(Sno), SELECT ON TABLE Student TO User4;  # 把查询 Student 表和修改学生学号的权限授给 User4

5.2 REVOKE 回收权限

REVOKE <权限>[,<权限>]...
[ON <对象类型> <对象名>]
FROM <用户>[,<用户>]...
[CASCADE|RESTRICT];

授予的权限可以由 DBA 或其他授权者用收回。

缺省 RESTRICT,仅收回该用户的权限;CASCADE 级联收回,将该用户授予给其他用户的权限也一并收回。

REVOKE UPDATE(Sno) ON TABLE Student FROM User4;  # 把 User4 修改学生学号的权限收回
REVOKE SELECT ON TABLE SC FROM PUBLIC;  # 收回所有用户对表 SC 的查询权限
REVOKE INSERT ON TABLE SC FROM User5 CASCADE;  # 把 User5 对 SC 表的插入权限级联收回

5.3 ROLL 角色

数据库角色是被命名的一组与数据库操作相关的权限。角色是权限的集合,可以为一组具有相同权限的用户创建一个角色,简化授权的过程。

CREATE ROLE <角色名>  # 创建角色
GRANT <权限>[,<权限>]... ON <对象类型> <对象名> TO <角色名>  # 使角色拥有相关权限
GRANT <角色名> TO <用户>[,<用户>]...  # 将角色赋予具体用户

5.4 用户

CREATE USER <用户名> [WITH] [DBA | RESOURCE | CONNECT]

拥有 DBA 权限的用户是超级用户,只有它才有权创建新的数据库用户;如果没有指定创建的新用户的权限,默认该用户拥有 CONNECT 权限,只能登录数据库。

6. 问题汇总

6.1 数据库安全性和计算机系统的安全性有什么关系

安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。

系统安全保护措施是否有效是数据库系统的主要指标之一。数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值