数据库安全性
数据库中的不安全因素:
- 非授权用户对数据库的恶意存取和破坏
措施:用户身份鉴别,存取控制、视图
- 数据库中重要或者敏感的数据被泄露
措施:强制存取控制,数据加密存储、加密传输
- 安全环境的脆弱性。
数据库安全控制
安全措施是一级一级设置的。
安全控制模型:
存取控制流程:
- 身份鉴别,防止不可信用户进入系统
- 在SQL处理层进行自处存取控制和强制存取控制,进一步可以进行推理控制
- 对访问行为进行审计,对异常用户进行入侵检测。
安全性控制常用方法
- 用户表示和鉴定
- 存取控制
- 视图
- 审计
- 数据加密
用户标识和鉴定
用户表示:由用户名和用户表示号组成。
身份鉴别方法:静态口令、动态口令、生物特征、智能卡
存取控制
定义用户权限并登记在数据字典中,用户发出存取请求的时候就进行合法性检查。
存取控制方式分为自主存取控制和强制存取控制。
自主存取控制:用户和数据之间的权限关系是自主的,权限可以转交
强制存取控制:每个对象有一个密级,每一个用户有一个分等级的许可证。只有拥有合法许可证的用户才可以存取对应对象。
自主存取控制方式:GRANT 和 REVOKE。
CREATE USER 语句
CREATE USER语句格式:
CREATE USER <username>
[WITH][DBA|RESOURCE|CONNECT]
可以发出grant的用户
数据库管理员
数据库对象创建者(即属主Owner)
拥有该权限的用户
对象类型 | 对象 | 操 作 类 型 |
---|---|---|
数据库模式 | 模式 | CREATE SCHEMA |
基本表 | CREATE TABLE,ALTER TABLE | |
视图 | CREATE VIEW | |
索引 | CREATE INDEX | |
数据 | 基本表和视图 | SELECT,INSERT,UPDATE,DELETE,REFERENCES, ALL PRIVILEGES |
属性列 | SELECT,INSERT,UPDATE, REFERENCES,ALL PRIVILEGES |
用户由三种权限:CONNECT、RESOURCE和DBA
schema和database:https://www.jianshu.com/p/70eab35cf87e
强制存取控制方式
划分主体和客体,主体就是用户或者进程,客体就是文件、表等。
对主题和客体标记敏感度,主体敏感度称为许可证级别,客体敏感度称为密级。
禁止拥有高许可证的主体更新低密级的数据对象。
仅当主体许可证级别大于或等于客体密级时,该主体才能读取相应的客体
仅当主体许可证级别等于客体密级时,该主体才能写相应的客体/
仅当主体的许可证级别小于或等于客体的密级时,主体才能写客体。
想要实现强制存取控制必须先实现自主存取控制。
角色
角色是权限的集合,为了简化授权而搞的。
- 角色的创建和授权
CREATE ROLE <角色名> --角色创建
GRANT <权限>[,<权限>]… --角色授权
ON <对象类型>对象名
TO <角色>[,<角色>]…
通过角色来实现将一组权限授予一个用户。步骤如下:
首先创建一个角色 R1
CREATE ROLE R1;
UPDATE, INSERT
ON TABLE Student
TO R1
将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限
GRANT R1
TO 王平,张明,赵玲
可以一次性通过R1来回收王平的这3个权限
REVOKE R1
FROM 王平
可以将角色授予别的角色或者用户。
WITH ADMIN OPTION
授权的角色或者用户可以把这种权限再赋予其他角色。
不允许循环授权
U5不仅拥有了对表SC的INSERT权限,还可以传播此权限:
[例] GRANT INSERT
ON TABLE SC
TO U6
WITH GRANT OPTION
同样,U6还可以将此权限授予U7:
[例] GRANT INSERT
ON TABLE SC
TO U7
但U7不能再传播此权限。
撤回权限revoke
收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC
把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE
将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句。( 因为授权给U5时使用了WITH GRANT OPTION )
如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限
cascade级联
视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的保护。
具体内容就看之前提到过的视图使用方法
##审计加密等安全性
在视图上进一步定义存取权限
审计
启用一个专用的审计日志,将用户对数据库的所有操作都记录在上面。审计员利用审计日志监控数据库中的各种行为,找出非法存取数据的项目。但是审计很费时间和空间,所有可以选择性使用。
AUDIT语句和NOAUTID语句
audit:设置审计功能
noaudit:取消审计功能
审计对象
- 服务器事件
- 系统权限voke/revoke
- 语句事件ddl/dml/dql
- 模式对象事件view
举例:
--对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE ON SC
--取消对SC表的一切审计
NOAUDIT ALTER,UPDATE ON SC
数据加密
- 存储加密
- 透明存储加密
- 非透明存储加密
- 传输加密
- 链路加密
- 端到端加密
第4章
1 .试述实现数据库安全性控制的常用方法和技术。
答:实现数据库安全性控制的常用方法和技术有: ( l )用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。 ( 2 )存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如C2 级中的自主存取控制( DAC ) , Bl 级中的强制存取控制(MAC )。 ( 3 )视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
( 4 )审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA 可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。 ( 5 )数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
2 .什么是数据库中的自主存取控制方法和强制存取控制方法?
答:
自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
3 .SQL 语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。
答:
SQL 中的自主存取控制是通过GRANT语句和REVOKE语句来实现的。如:
GRANT SELECT , INSERT ON Student TO 王平 WITH GRANT OPTION ;
就将Student 表的SELECT 和INSERT 权限授予了用户王平,后面的“WITH GRANT OPTION ”子句表示用户王平同时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。 REVOKE INSERT ON Student FROM 王平CASCADE ; 就将Student 表的INSERT 权限从用户王平处收回,选项CASCADE 表示,如果用户王平将Student 的INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。
\4. 为什么强制存取控制提供了更高级别的数据库安全性?
答:强制存取控制(MAC )是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
5 .理解并解释MAC 机制中主体、客体、敏感度标记的含义。
答:
主体是系统中的活动实体,既包括DBMS 所管理的实际用户,也包括代表用户的各进程。客体是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。对于主体和客体,DBMS 为它们每个实例(值)指派一个敏感度标记(Label )。敏感度标记被分成若干级别,例如绝密(Top Secret )、机密(Secret )、 可信( Confidential )、公开(PubliC )等。主体的敏感度标记称为许可证级别(ClearanCe 玫vel ) ,客体的敏感度标记称为密级(Classification Level )。
6 .什么是数据库的审计功能,为什么要提供审计功能?
答:审计功能是指DBMS 的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。 因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能,DBA 可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
7 .统计数据库中存在何种特殊的安全性问题?
答:统计数据库允许用户查询聚集类型的信息,如合计、平均值、最大值、最小值等,不允许查询单个记录信息。但是,人们可以从合法的查询中推导出敏感的信息,即可能存在隐蔽的信息通道,这是统计数据库要研究和解决的特殊的安全性问题。