数据库系统概论—基础篇(3)三.数据库安全性1.数据库安全性概述

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

2.数据库安全性控制2.1用户身份鉴别

  • 静态口令鉴别
  • 动态口令鉴别
  • 生物鉴别特征
  • 智能卡鉴别

2.2存取控制

  • 自主存取控制:给用户限权(DAC,C1级)
  • 强制存取控制:给数据库对象一定的密级(MAC,B1级)

2.3自主存取控制方法(授权:授予与收回)

  • 授权
Grant 权限on (类型,表/视图...) 对象名1,(类型,表/视图...) 对象名2...to 用户1,用户2...with grant option;(是否可以传播该权限)
  • 收回
Revoke 权限on (类型,表/视图...) 对象名1,(类型,表/视图...) 对象名2...from 用户1,用户2...CASADE/RESTRICT;(是否级联)
  • 创建用户
CREATE USER 用户名 with DBA/RESOURCE/CONNECT;

DBA:超级用户,有所有数据库对象的限权

RESOURCE:能创建表和视图

CONNECT:只能在限权内操作

2.4数据库角色

数据库角色是一组数据库操作相关的权限的集合(权限的集合)

#授予Grant 权限on (类型,表/视图...) 对象名to 角色1,角色2...;#收回Grant 权限on (类型,表/视图...) 对象名to 用户1,用户2...;

2.5强制存取控制方法(数据加密)

主体:用户;客体:数据

  • 主体的许可证 >= 客体的密级时,该主体才能读取相应的客体
  • 主体的许可证 <= 客体的密级时,该主体才能相应的客体

3.视图机制

视图可以隐藏部分数据,控制要查询的数据是否对用户是可见的

4.审计

审计功能把用户对数据库的所有操作记录下来放入审计日志

四.数据库完整性

数据库完整性是数据库的正确性和相容性,是为例防止数据库中存在不符合语义的数据。

1.实体、参照完整性

  • 实体:非空唯一,在CREATE TABLE中使用PRIMART KEY定义。(主码)
  • 参照:外码,参照表的主码是被参照表的主码

2用户自定义完整性

针对某一具体应用的数据必须满足的语义要求。

  • 属性上的约束(列级)

NOT BULL:列值非空

UNIQUE:列值唯一

CHECK:是否满足条件(类型 属性 CHECK(Ssex in(‘男’,’女’))性别在男女中选)

  • 元组上的约束(表级)

eg:当性别是男,名字不以”Ms.“开头

建表...CHECK(Sex = '女' or Sname not like'Ms.%');

3.完整性约束字句

给约束起名字,CONSTRAINT 约束名一起使用

CONSTRAINT 约束名 约束条件;

4.断言

更一般的约束

#创建CREATE ASSERTION 断言名CHECK字句;#删除DROP ASSERTION 断言名;

5.触发器

由事件触发的特殊过程(事件条件功能)

#创建CREATE TRIGGER 触发器名BEFORE/ALTER 触发事件 on 表名REFRTENCING NEW/OLD ROW AS 变量#NEW/OLD ROW是两个表(新/旧)FOR EACH ROW/STATEMENT#行级/列级WHEN 触发事件 触发动作;#删除DROP TRIGGER 触发器名 on 表名;