数据库安全性控制

4.2.1 用户标识与鉴别

§用户标识:由用户名和用户标识号组成(用户标识号在系统整个生命周期内唯一)

用户身份鉴别的方法

1.静态口令鉴别

静态口令一般由用户自己设定,这些口令是静态不变的

2.动态口令鉴别

口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法

3.生物特征鉴别

通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等

4.智能卡鉴别

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

4.2.2 存取控制

存取控制机制组成

  • 定义用户权限

    • 用户对某一数据对象的操作权力称为权限 ,DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则

  • 合法权限检查

    • 用户发出存取数据库操作请求,DBMS查找数据字典,进行合法权限检查v用户权限定义和合法权检查机制一起组成了 DBMS的安全子系统

常用存取控制方法 :

自主存取控制(Discretionary Access Control ,简称DAC)

  • C2级

  • 用户对不同的数据对象有不同的存取权限

  • 不同的用户对同一对象也有不同的权限

  • 用户还可将其拥有的存取权限转授给其他用户

强制存取控制(Mandatory Access Control,简称 MAC)

  • B1级

  • 每一个数据对象被标以一定的密级

  • 每一个用户也被授予某一个级别的许可证

  • 对于任意一个对象,只有具有合法许可证的用户才可以存取

4.2.3 自主存取控制方法

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

用户权限组成

  • 数据对象

  • 操作类型

定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作

定义存取权限称为授权

Ø一个或多个具体用户ØPUBLIC(全体用户)

4.2.4 授权与回收

1. GRANT

GRANT语句的一般格式:

GRANT <权限>[,<权限>]...

[ON <对象类型> <对象名>]

TO <用户>[,<用户>]...

[WITH GRANT OPTION];

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

发出GRANT:

  • DBA

  • 数据库对象创建者(即属主Owner)

  • 拥有该权限的用户

按受权限的用户

  • 一个或多个具体用户

  • PUBLIC(全体用户)

WITH GRANT OPTION子句:

  • 指定:可以再授予

  • 没有指定:不能传播

不允许循环授权

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

GRANT UPDATE(Sno), SELECT 
		ON TABLE Student 
		TO U4;

2.REVOKE

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

REVOKE语句的一般格式为:

REVOKE <权限>[,<权限>]...

[ON <对象类型> <对象名>]

FROM <用户>[,<用户>]...;

将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回

系统只收回直接或间接从U5处获得的权限

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

DBA在创建用户时实现vvCREATE USER语句格式

CREATE USER <username>

[WITH][DBA | RESOURCE | CONNECT]

注:

CREATE USER不是SQL标准,各个系统的实现相差甚远

4.2.5 数据库角色

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

1.角色的创建

CREATE ROLE <角色名>

2.给角色授权

GRANT <权限>[,<权限>]…

ON <对象类型>对象名

TO <角色>[,<角色>]…

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

GRANT <角色1>[,<角色2>]…

TO <角色3>[,<用户1>]…

[WITH ADMIN OPTION]

4.角色权限的收回

REVOKE <权限>[,<权限>]…

ON <对象类型> <对象名> FROM <角色>[,<角色>]…

4.2.6 强制存取控制方法

Last updated