数据库原理(十 五)- 数据库安全性

前言

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

数据库安全性概述

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

数据库的不安全因素

  • 非授权用户对数据库的恶意存取和破坏
  • 数据库中重要或敏感的数据泄露
  • 安全环境的脆弱性

安全标准简介

计算机以及信息安全技术方面有一系列的安全标准,最有影响的当推TCSEC和CC这两个标准

美国标准 TCSEC

TCSEC从安全策略、责任、保证和文档4个方面来描述安全性级别划分的指标,根据指标内容将系统划分为4组7个等级,依次是D、C(C1,C2)、B(B1,B2,B3)、A(A1),按系统可靠或可信程度逐渐增高

在这里插入图片描述

全球通用准则 CC

CC的文本由三部分组成,三个部分相互依存,缺一不可

  • 第一部分是简介和一般模型,介绍CC中的有关术语、基本概念和一般模型以及与评估有关的一些框架
  • 第二部分是安全功能要求,列出了一系列类、子类和组件
  • 第三部分是安全保证要求,列出了一系列保证类、子类和组件

根据系统对安全保证要求的支持情况提出了评估保证级(EAL),从EAL1至WAL7共分为7级,按保证程度逐渐增高

在这里插入图片描述

数据库安全性控制

数据库的安全性主要包括用户身份鉴别、多层存取控制、审计、视图和数据加密等多项安全技术共同来进行控制和保证

在这里插入图片描述

用户身份鉴别

  • 静态口令鉴别,如密码
  • 动态口令鉴别,如手机令牌
  • 生物特征鉴别,如人脸识别、指纹识别
  • 智能卡鉴别

存取控制

存取控制主要由用户权限定义和合法权检查机制一起组成,存取控制方法有自主存取控制和强制存取控制两种方法

自主存取控制方法

通过 SQL 的GRANT 语句和REVOKE 语句实现

GRANT语句

GRANT用于对权限的授予,一般格式为:

GRANT <权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]
TO <用户>[,<用户>]
[WITH GRANT OPTION]; //加上该语句后,被授权用户可以转授给例外的用户

REVOKE语句

REVOKE用于对权限的收回, 一般格式为:

REVOKE<权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]
FORM <用户>[,<用户>]
[CASCADE|RESTRICT]; //CASCADE可以当前用户的权限收回,还可以将他授予该权限的其他用户的该权限收回

GRANT语句和REVOKE语句示例

授予李明查询student表的权限

GRANT select on table student to 李明

并允许李明将权限转授给其他用户

GRANT select on table student to 李明 WITH GRANT OPTION

将student的所有权限授予李明

GRANT ALL PRIVILEGES on table student to 李明 WITH GRANT OPTION

将student表的所有权限授予全部用户

GRANT ALL PRIVILEGES on table student to PUBLIC

将查询student表和修改name列的权限授给李明

GRANT select update(name) on table student to 李明 WITH GRANT OPTION

将李明查询student表的权限收回

REVOKE select on table student form 李明 

将所有用户对 student表 查询的权限收回

REVOKE select on table student form PUBLIC 

将李明对student表中修改name列的权限收回

REVOKE update(name) to table student form 李明

将李明对查询student表的权限收回,并收回他转授该权限的用户的查询student的权限

REVOKE select on table student form 李明 CASCADE

创建数据库模式的权限

对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现,一般格式:

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

说明:

  • 只有系统的超级用户才有权创建一个新的数据库用户
  • 新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA
  • CREATE USER命令中如果没有指定创建的新用户的权限,默认该用户拥有 CONNECT权限
  • 拥有RESOURCE权限的用户能创建基本表和视图,称为所创建对象的属主,但不能创建模式,不能创建用户
  • 拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予给一般用户

在这里插入图片描述
强制存取控制方法

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

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

对于主体和客体,数据库管理系统为它们每个实例(值)指派一个敏感度标记

  • 绝密(TS)
  • 机密(S)
  • 可信(C)
  • 公开(P)

密级的次序是TS>=S>=C>=P

主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级

强制存取控制机制就是通过对比主体的敏感度标记和客体的敏感度标记,最终确定主体是否可以存取客体,存取规则:

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

ps:如果违反了规则2,就有可能把数据的密级从高流向低,造成数据的泄漏

强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性

数据库角色

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

角色的创建

CREATE ROLE <角色名>

给角色授权

GRANR <权限>[,权限]...
ON <对象类型> 对象名
TO <角色>[,<角色>]...

将一个角色授予其他角色或其他用户

GRANT <角色1>[,<角色2>]...
TO<角色3>[,<角色4>]...
[WITH GRANT OPTION]

角色权限的收回

REVOKE <权限>[,<权限>]...
ON <对象类型><对象名>
FORM <角色>[,<角色>]

视图机制

为不同的用户定义不同的视图,把数据库对象限制在一定的范围内。也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护
比如,我们可以授予某个用户名这个视图的查询权限

grant select on xx_view to 被授权用户名

或者授予这个用户全部权限

grant all privileges on xx_view to 被授权用户名

审计

审计功能把用户对数据库的所有操作自动记录下来放入审计日志中,审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等

审计事件

  • 服务器事件
  • 系统权限
  • 语句事件
  • 模式及对象事件

审计功能

  • 基本功能,提供多种审计查阅方式:基本的、可选的、有限的,等等
  • 提供多套审计规则
  • 提供审计分析和报表功能
  • 审计日志管理功能
  • 系统提供的查询审计设置及审计记录信息的专门视图

AUDIT和NOAUDIT语句

对修改某张表结构或修改表数据的操作进行审计

audit alter update on table_name

取消关于该表上的审计

noaudit alter update on table_name

数据加密

对于高度敏感性数据,还可以采用数据加密技术,加密的基本思想是根据一定的算法将原始数据 —— 明文 变换为不可直接识别的格式 —— 密文,从而使得不知道解密算法的人无法获知数据的内容

存储加密

  • 透明存储加密
  • 非透明存储加密

传输加密

  • 链路加密,报文和报头均加密,路由选择信息
  • 端到端加密,仅加密报文,发送端加密,接收端解密,传送的数据信息

其他安全性保护

为了满足较高安全等级数据库管理系统的安全性保护要求,在自主存取控制和强制存取控制之外,还有推理控制以及数据库应用中的隐蔽信道数据隐私保护等技术

借鉴

王珊,萨师煊.数据库系统概论(第五版)[M].北京:高等教育出版社,2014:133-154.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章