学习笔记——DB安全性和完整性

DB的安全性

一、概述

1.简介

       数据库的特点之一是由数据库管理系统提供统一的数据保护功能来保证数据的安全可靠和正确有效。 数据库的数据保护主要包括数据的安全性和完整性。

       数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、 更改或破坏。安全性问题不是数据库系统所独有的, 所有计算机系统都存在不安全因素。

2.不安全因素

1) 非授权用户对数据库的恶意存取和破坏

      数据库管理系统提供的安全措施主要包括用户身份鉴别、 存取控制和视图等技术。
2)数据库中重要或敏感的数据被泄露
      数据库管理系统提供的主要技术有强制存取控制、 数据加密存储、加密传输及审计功能等。
3)安全环境的脆弱性
     与计算机系统的安全性紧密联系。

二、安全性控制措施

学习笔记——DB安全性和完整性     

       用户要求进入计算机系统时, 系统首先根据输入的用户标识进行用户身份鉴定,只有合法的用户才准许进入计算机系统; 对已进入系统的用户, 数据库管理系统还要进行存取控制, 只允许用户执行合法操作; 操作系统也会有自己的保护措施; 数据最后还可以以密码形式存储到数据库中。
     数据库有关的安全性, 主要包括用户身份鉴别、 多层存取控制、 审计、 视图和数据加密等安全技术。

DB安全控制模型:

学习笔记——DB安全性和完整性

1)DBMS对数据库用户进行身份鉴别, 防止不可信用户使用系统;

2)在SQL处理层进行自主存取控制和强制存取控制, 进一步还可以进行推理控制。

3)为监控恶意访问, 可根据具体安全需求配置审计规则, 对用户访问行为和系统关键操作进行审计。

4)通过设置简单入侵检测规则, 对异常用户行为进行检测和处理。

5)在数据存储层, 数据库管理系统不仅存放用户数据, 还存储与安全有关的标记和信息(称为安全数据), 提供存储加密功能等。
1.用户身份鉴别

1)静态口令鉴别:固定的用户名和密码
2)动态口令鉴别:用户一次一密。如短信、动态令牌等。

3)生物特征鉴别及智能卡鉴别

2.存取控制

存取控制机制:确保只授权给有资格的用户访问数据库的权限, 同时令所有未被授权的人员无法接近数据。

1)自主存取控制:用户对于不同的数据库对象有不同的存取权限, 不同的用户对同一对象也有不同的权限。

2)强制存取控制:每一个数据库对象被标以一定的密级, 每一个用户也被授予某一个级别的许可证。

3.视图机制

        为不同的用户定义不同的视图, 把数据对象限制在一定的范围内。 也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来, 从而自动对数据提供一定程度的安全保护。
4.审计

        审计功能把用户对数据库的所有操作自动记录下来放入审计日志(audit log)中。 审计员可以利用审计日志监控数据库中的各种行为, 重现导致数据库现有状况的一系列事件, 找出非法存取数据的人、 时间和内容等。 还可以通过对审计日志分析, 对潜
在的威胁提前采取措施加以防范。但审计功能很浪费时间和空间。

5.数据加密

        数据加密是防止数据库数据在存储和传输中失密的有效手段。
        基本思想:根据一定的算法将原始数据——明文(plain text)变换为不可直接识别的格式——密文(cipher text),从而使得不知道解密算法的人无法获知数据的内容。数据加密主要包括存储加密和传输加密。

        存储加密:数据在写到磁盘时对数据进行加密, 授权用户读取数据时再对其进行解密。

        传输加密:链路层加密和端到端加密。同计算机网络中的数据传输加密方式。

DB的完整性

1.简介

       数据库的完整性(integrity)是指数据的正确性(correctness)和相容性(compat- ability)。

       数据的正确性是指数据是符合现实世界语义、反映当前实际状况的;

       数据的相容性是指数据库同一对象在不同关系表中的数据是符合逻辑的。

问题:数据库的完整性概念与数据库的安全性概念有什么区别和联系?

       既有联系,又有区别。

       数据的完整性是为了防止数据库中存在不符合语义(不正确)的数据。 防范对象:不合语义的、 不正确的数据,防止进入

       数据的安全性是保护数据库被恶意破坏和非法存取。防范对象:非法用户和非法操作,防止用户非法存取

       为了维护数据库的完整性,DBMS必须提供的功能:提供定义完整性约束条件的机制(实体、参照、自定义);提供完整性检查的方法;进行违约处理。

2.完整性约束条件

1)实体完整性

1)检查主码值是否唯一, 如果不唯一则拒绝插入或修改。
2)检查主码的各个属性是否为空, 只要有一个为空就拒绝插入或修改。

方法:检查记录中主码值是否唯一的一种方法是进行全表扫描, 依次判断表中每一条记录的主码值与将插入记录的主码值(或者修改的新主码值)是否相同。

2)参照完整性

一个表的主码和另一个表的外码之间。

对被参照表和参照表进行增、删、 改操作时有可能破坏参照完整性, 必须进行检查以保证这两个表的相容性。

对于参照完整性, 除了应该定义外码, 还应定义外码列是否允许空值。
一般地, 当对参照表和被参照表的操作违反了参照完整性时, 系统选用默认策略, 即拒绝执行。

3)用户定义的完整性

用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求。

例如:属性上的约束条件、元组上的约束条件

3.断言

      通过声明性断言 (declarative assertions)来指定更具一般性的约束。断言创建以后,任何对断言中所涉及关系的操作都会触发DBMS对断言的检查,任何使断言不为真值的操作都会被拒绝执行。(即限制某种条件)

4.触发器

      实现数据库完整性的一个重要方法是触发器。     

      触发器(trigger)的执行是由触发事件**,并由数据库服务器自动执行的。一旦定义, 触发器将被保存在数据库服务器中。任何用户对表的增、删、改操作均由服务器自动**相应的触发器。触发后,对规则的条件进行检查,如果条件成立则执行规则中的动作,否则不执行该动作。

      触发器是一种功能强大的工具,很精细,但在使用时要慎重,因为在每次访问一个表时都可能触发一个触发器,这样会影响系统的性能。对于违反完整性的操作一般的处理是采用默认方式,如拒绝执行。