数据库安全
数据库往往有非常多的用户进行访问,其数据需要被共享,但并不是无条件的共享。 数据库安全:保护数据库 以防止 不合法使用所造成的 数据泄露、更改或破坏。
概述
不安全因素
- 非授权用户对数据库的恶意存取与破坏:猎取用户名和口令等——用户身份认证、访问控制、视图
- 重要、敏感数据泄露——访问控制、加密存储、传输加密等+分析审计日志
- 安全环境的脆弱(硬件、操作系统、网络系统的不安全性)——建立可信计算机系统
安全标准简介
TCSEC:????能考吗?
安全性控制
安全措施层次:用户标识和鉴别——数据库安全保护(访问控制:自主、强;审计;视图)——操作系统安全保护——数据密码存储
用户身份认证方法
- 静态口令认证
- 动态口令认证
- 生物特征认证
- 智能卡认证(硬件加密)
访问控制(重点)
思想:定义用户权限,存取数据库时进行合法合法检查 自主访问控制(DAC): C2级。用户对不同的数据有不同的访问权限,不同的用户对同一数据有不同的权限;用户可以将其拥有的权限转售给其他用户。
对象: 模式(模式、基本表、视图、索引的建立、修改),数据(增删改查与完整性定义) 授权: GRANT <权限1>,<权限2>,…… ON <对象类型><对象名>,<对象类型><对象名>…… TO <用户>,<用户>,…… [WITH GRANT OPTION] //可以再授权 notice:
- CREATE | ALTER + TABLE | VIEW | INDEX
- SELECT | INSERT | UPDATE | DELETE | REFERENCES | ALL PRIVILEGES
- TO PUBLIC
- 权限可以限制到某个列:UPDATE(Sno)
回收: REVOKE <权限1>,<权限2>…… ON <对象类型><对象名>,…… FROM <用户1>,<用户2>…… [CASCADE | RESTRICT]
最初的用户?CREATE USER username [WITH] [BDA | RESOURCE | CONNECT]
- BDA:超级用户啥都能干
- RESOURCE:可以创建基本表、视图,不能创建模式、新的用户
- CONNECT:不能创建用户、模式、基本表,只能登陆数据库查看信息
角色:权限的集合
-
CREATE ROLE <角色名> -
GRANT <权限>,<权限2>……//为角色授予全选 ON <对象类型> <对象名> TO <角色>,<角色>…… -
GRANT <角色>,<角色2>……//可以把角色拥有的权限授予其他的角色、用户 TO <角色>,<用户>…… [WITH ADMIN OPTION]
回收:要有ADMIN OPTION!!!
- REVOKE <权限>,<权限2>……
ON <对象类型> <对象名> FORM <角色>,<角色2>……
强制访问控制(MAC):数据被分为不同密级(绝密、机密、可信、公开),用户拥有不同级别的许可证,只有具有合法许可证的用户才可以访问相应的数据。
- 许可证级别 >= 密级:可读
- 许可证级别 <= 密级:可写
强制访问控制建立在自主访问控制之上,二者共同构成数据库管理系统的安全机制。
视图机制
把要保密的数据对用户隐藏起来。 先创建视图,然后为用户分配在这个视图上的读取等操作权限。
审计Audit
审计日志:用户对数据库的所有操作的记录——找出非法存取数据的人、时间、内容等 审计浪费时间、空间。 审计事件:
- 服务器事件
- 系统权限(下进行的操作)
- 语句事件(SQL语句)
- 模式对象事件(对特定的模式进行的操作)
例:
- AUDIT ALTER, UPDATE ON SC;
- NOAUDIT ALTER, UPDATE ON SC;
数据加密
- 存储加密
- 透明存储加密:对用户完全透明,写磁盘时进行加密
- 非透明存储加密
- 传输加密
- 链路加密:链路层的工作,加密报文、包头
- 端到端加密:在发送端和接收端进行。只加密报文
|