先来一张本章节内容的思维导图
数据库安全性概述
概述
数据库安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
数据库不安全因素
- 非授权的用户对数据库恶意存取和破坏
- 数据库中重要或敏感信息泄露
- 安全环境的脆弱性:数据库的安全性与计算机系统的安全性是紧密相关的。包括计算机硬件,操作系统,网络系统的安全性。
数据库安全性控制
- 用户身份鉴别
- 存取控制:主要包括定义用户权限和对用户的合法权限的检查
授权:授予与收回
GRANT
grant <权限> [,权限] ...
on <对象类型> <对象名> [,<对象类型>,<对象名>] ...
to <用户> [,<用户>] ...
[with grant option]
授权时给用户指定了with grant option权限,那么该用户就可以将他的权限授予其他用户。
例:grant select,update on table table_name,view view_name to user1,user2
REVOKE
revoke <权限> [,权限] ...
on <对象类型> <对象名> [,<对象类型>,<对象名>] ...
from <用户> [,<用户>] ...
例:revoke update,select on table table_name from user1
创建数据库模式的权限
grant和revoke语句向用户授予或收回对数据的操作权限,对创建数据库模式则需要在创建数据库用户时实现。
创建数据库用户:
create user <用户名> [WITH] [DBA | RESOURCE | CONNECT]
只有系统的超级用户才能创建一个数据库用户。
- CONNECT:连接数据库的权限,智能登录数据库,不能创建模式,表,视图等。
- RESOURCE:可以创建基本表和视图,成为所创建对象的属主,不能创建模式和新用户。
- DBA:数据库管理员,是系统的超级用户,可以创建用户,基本表,视图等。DBA拥有对所以数据库对象的存取权限,还可以将这些权限授予其他用户。
数据库角色
数据库角色是一组被命名的数据库操作相关的权限,角色是权限的集合。
- 创建角色
create role <角色名>
- 给角色授权
grant <权限> [,<权限>]...
on <对象类型> 对象名
to <角色名> [,<角色名>]...
- 将一个角色权限授予用以角色或用户
grant <角色1> [,<角色2>] ...
to <角色3> [,<用户>] ...
[with admin option]
- 角色权限收回
revoke <权限> [,<权限>] ...
on <对象类型> <对象名>
from <角色> [,<角色>]
视图机制
通过视图机制可以把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的保护。
例:
1、创建视图:
create view allow_data as select * from table_name where table_name.allow = 1
2、用户授权
grant select on view allow_data to user_1
还可以将所有权限授予某个用户:
grant all privileges on allow_data to user_1
审计
审计功能时把用户对数据库的所以操作自动记录下来放入审计日志,审计员利用审计日期监控数据库中的各种行为,重现导致数据库出现状况的一系列事件。
数据加密
存储加密
传输加密