数据库原理:数据库安全性
目录
参考:
- 链接1:【最全】《数据库原理及应用》知识点整理+习题 (opens new window)
- 链接2:数据库原理 (opens new window)
- 链接3:数据库原理知识梳理 (opens new window)
# 数据库原理:数据库安全性
# 一、数据库安全性的概述
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
# 二、数据库安全性控制的常用方法
- 用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。如连接数据库时输入的用户名和密码。
- 多层存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访间数据库,所有未被授权的人员无法存取数据。
- 视图机制:为不同的用户定义不同的视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一一定程度的安 全保护。
- 审计:建立审计日志。把用户对数据库的所有操作自动记录下来放入审计日志中。DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
- 数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
# 存取控制
存取控制的机制
定义用户权限,并将用户权限登记到数据字典中
合法权限检查:每当用户发出存取数据库的操作请求后,DBMS查找数据字典,根据安全规则进行合法权限检查。
存取控制的方法
自主存取控制(Discretionary Access Control,DAC):定义各个用户对不同数据对象的存取权限。当用户对数据对象访问时首先检查用户的存取权限,防止不合法用户对数据对象的存取。用户对于不同的数据对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可以将其拥有的存取权限转授给其他用户。非常灵活。主要通过 SQL 的 GRANT 语句和 REVOKE 语句来实现:
- GRANT语句,授予权限
GRANT <权限>[,<权限>]... ON <对象类型> <对象名>[,<对象类型> <对象名>]… TO <用户>[,<用户>]... [WITH GRANT OPTION];
1
2
3
4语义:
将对指定操作对象的指定操作权限授予指定的用户。发出该GRANT语句的可以是DBA,也可以是数据对象创建者,也可以是已经拥有该权限的用户。如果指定了WITH GRANT OPTION 子句,则获得某种权限的用户还可以把这种权限再授予其他的用户,不允许循环授权。
示例See More
# 把查询表t_student的权限授予用户U1 GRANT SELECT ON TABLE t_student TO U1;
1
2- REVOKE语句,回收权限
REVOKE <权限>[,<权限>]... ON <对象类型> <对象名>[,<对象类型> <对象名>]… FROM <用户>[,<用户>]...[CASCADE|RESTRICT];
1
2
3示例
See More
# 回收用户U4修改表t_student中学生学号sno的权限 REVOKE UPDATE(sno) ON TABLE t_student FROM U4;
1
2强制存取控制(Mandatory Access Control,MAC):每一个数据对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。较为严格。
在强制存取控制中,数据库管理系统(DBMS)所管理的全部实体被分为主体和客体两大类:
主体是系统中的活动实体,如:DBMS所管理的实际用户,代表用户的各进程
客体是系统中的被动实体,受主体操纵,如:文件、基表、索引、视图
敏感度标记(Label):对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)敏感度标记分成若干级别
- 绝密(Top Secret,TS)
- 机密(Secret,S)
- 可信(Confidential,C)
- 公开(Public,P)
TS >= S >= C >= P
主体的敏感度标记称为许可证级别(Clearance Level),客体的敏感度标记称为密级(Classification Level)
当一个用户以标记label注册入系统时,系统要求他对任何客体的存取必须遵循如下规则:
仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
注意第2点,即用户可以写入数据但是不能再读取自己写入的数据。