数据库安全性
数据库的不安全因素
1.非授权用户对数据库的恶意存取和破坏
2.数据库中重要或敏感的数据被泄露
3.安全环境的脆弱性
数据库安全性控制的常用方法
用户标识和鉴定
存取控制
视图
审计
数据加密
自助存取控制方法
通过 SQL 的GRANT 语句和REVOKE 语句实现
用户权限组成
数据对象
操作类型
定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
定义存取权限称为授权
对象类型 |
对象 |
操 作 类 型 |
数据库
模式 |
模式 |
CREATE SCHEMA |
基本表 |
CREATE TABLE,ALTER TABLE |
|
视图 |
CREATE VIEW |
|
索引 |
CREATE INDEX |
|
数据 |
基本表和视图 |
SELECT,INSERT,UPDATE,DELETE,REFERENCES, ALL PRIVILEGES |
属性列 |
SELECT,INSERT,UPDATE, REFERENCES,ALL PRIVILEGES |
授权与回收
1.GRANT
GRANT语句的一般格式:
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
语义:将对指定操作对象的指定操作权限授予指定的用户
2.REVOKE
授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
REVOKE语句的一般格式为:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
1.角色的创建
CREATE ROLE <角色名>
2.给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
3.将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
4.角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
实现数据库系统安全性的技术和方法
用户身份鉴别
存取控制技术:自主存取控制和强制存取控制
视图技术
审计技术
数据加密存储和加密传输
数据库完整性
数据的完整性
防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据
防范对象:不合语义的、不正确的数据
1.完整性约束命名子句
CONSTRAINT <完整性约束条件名><完整性约束条件>
<完整性约束条件>包括NOT NULL、UNIQUE、PRIMARY KEY短语、FOREIGN KEY短语、CHECK短语等
2. 修改表中的完整性限制
使用ALTER TABLE语句修改表中的完整性限制
1. 创建断言的语句格式
CREATE ASSERTION<断言名><CHECK 子句>
每个断言都被赋予一个名字,<CHECK 子句>中的约束条件与WHERE子句的条件表达式类似。
2. 删除断言的语句格式为
DROP ASSERTION <断言名>;
定义触发器
CREATE TRIGGER语法格式
CREATE TRIGGER <触发器名>
{BEFORE | AFTER} <触发事件> ON <表名>
REFERENCING NEW|OLD ROW AS<变量>
FOR EACH {ROW | STATEMENT}
[WHEN <触发条件>]<触发动作体>
删除触发器的SQL语法:
DROP TRIGGER <触发器名> ON <表名>;
QL语法:
DROP TRIGGER <触发器名> ON <表名>;
关系数据库管理系统完整性实现的机制
完整性约束定义机制
完整性检查机制
违背完整性约束条件时关系数据库管理系统应采取的动作