第4章 数据库安全性

第4章 数据库安全性


本文全部内容来自数据库系统概论(第5版)—王珊、萨师煊著


4.1 数据库安全性概述

数据库安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。

4.1.1 数据库的不安全因素

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

4.1.2 安全标准简介

  • 安全策略
  • 责任
  • 保证
  • 文档

以上四个方面来描述安全性级别划分的指标。

4.2 数据库安全性控制

数据库安全性控制的方法:

  • 用户身份鉴别
  • 多层存取控制
  • 审计
  • 视图
  • 数据加密

4.2.1 用户身份鉴别

用户身份鉴别是数据库管理系统提供的最外层安全保护措施。每个用户在系统中都有一个用户标识,

每个用户标识由用户名(username)和用户标识号(UID)组成。

  1. 静态口令鉴别

    静态口令一般由用户自己设定,鉴别时只要按照要求输入正确的口令,系统就允许用户使用数据库管理系统。

    例如:生日,电话,字母、数字和特殊字符混合的密码等

  2. 动态口令鉴别

    口令是动态化的,每次鉴别时均需要使用动态产生的新口令登录。

    例:短信动态密码、动态令牌方式

  3. 生物特征鉴别

    通过生物特征进行认证的技术,使用图像处理和模式识别技术。

    例:指纹、虹膜、掌纹等

  4. 智能卡鉴别

    智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。

    例:个人身份识别码(PIN)和智能卡相结合的方式

4.2.2 存取控制

数据库安全最重要的一点是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据。

存取控制机制主要包括定义用户权限和合法权限检查两部分。

  1. 定义用户权限,并将用户权限登记到数据字典中。

    • 用户对某一数据对象的操作权利称为权限。

    • 数据库管理系统应该提供适当的语言定义用户权限。

  2. 合法权限检查

定义用户权限和合法权限检查机制一起组成数据库管理系统的存取控制子系统。

4.2.3 自主存取控制方法

用户权限是有两个要素组成的:数据库对象和操作类型。

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

定义操作权限称为授权。

存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(数据库、基本表、视图和索引的创建等)。

4.2.4 授权:授予与收回

使用grantrevoke语句向用户授予或收回对数据的操作权限。

1、grant

grant 权限,
on 对象类型 对象名,
to 用户,
with grant option;

语义:将指定操作对象的指定操作权限授予指定的用户。

数据库管理员、数据库对象创建者、拥有权限的用户都可以发出grant语句,接受权限的用户可以使一个或多个具体用户。

在添加with check option语句后,该权限还可以再授予其他用户。

例:将查询Student表的权限授予用户1

grant select on table Student to U1;

grant语句传递权限的情况:

  • 一次像一个用户授权
  • 一次向多个用户授权
  • 一次传播多个同类对象的权限
  • 一次可以完成对基本表和属性列这些不同对象授权

2、revoke

使用revoke可以收回授予用户的权限。

revoke 权限,
on 对象类型 对象名,
from 用户;
/* cascade | restinct */ 

例:把用户1的权限收回

revoke select on table Student from U1;

数据库管理员拥有对数据库中所有对象的所有权限,并可以根据实际情况将不同的权限授予不同的用户。

用户可以自主地决定将数据的存取权限授予何人、决定是否将授权权限授予别人。

3、创建数据库模式的权限

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

create user username with dba|resource|connect;
  • 只有系统的超级用户才有全创建一个新的数据库用户
  • 新创建的数据库用户有三种权限:connectresourcedba
  • 默认为connect权限的用户不能创建新用户,不能创建模式、基本表,只能登录数据库
  • resource权限的用户能创建基本表和视图,称为所创建对象的属主,但不能创建模式、新用户。
  • dba权限的用户时系统中的超级用户,可以进行一切操作。

4.2.5 数据库角色

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。使用角色来管理数据库权限可以简化授权的过程。

/*1、创建角色*/
create role 角色名;
/*2、给角色授权*/
grant 权限,... on 对象类型 对象名 to 角色;
/*3、一个角色授予其他的角色或用户*/
grant 角色1,... to 角色3,... with admin option; 
/*4、角色权限的收回*/
revoke 权限,... on 对象类型 对象名 from 角色,...;

数据库角色是一组权限的集合。

4.2.6 强制存取控制方法

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

4.3 视图机制

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

例:建立计算机系学生的视图,把对该视图的select权限授予王平,把该视图的所有操作权限授予张明。

create view CS_Student as select * from Student where Sdept='CS';
grant select on CS_Student to 王平;
grant all privileges on CS_Student to 张明;

4.4 审计

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

4.5 数据加密

数据加密是防止数据库数据在存储和传输中失密的有效手段。

4.6 其他安全性保护

  1. 推理控制
  2. 隐蔽信道
  3. 数据隐私保护

你可能感兴趣的:(数据库,数据库)