作者:上海悠u7_ | 来源:互联网 | 2023-10-09 19:44
数据库安全性数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。数据库的不安全因素1.非授权用户对数据库的恶意存取和破坏2.数据库中重要或敏感的数据被泄露3.
数据库安全性
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 。
数据库的不安全因素
1.非授权用户对数据库的恶意存取和破坏
2.数据库中重要或敏感的数据被泄露
3.安全环境的脆弱性
数据库安全性控制
存取控制
1.自主存取控制
- 同一用户对不同的数据对象有不同的存取权限
- 不同的用户对同一对象也有不同的权限
- 用户还可将其拥有的存取权限转授给其他用户
可能存在数据的“无意泄露”
原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
解决:对系统控制下的所有主客体实施强制存取控制策略
1.1通过GRANT (授予)语句和REVOKE(收回) 语句实现
GRANT语句的一般格式: (不允许循环授权)
GRANT <权限>[,<权限>]&#8230;
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]&#8230;
[WITH GRANT OPTION]; ###指定:可以再授予 没有指定:不能传播
eg:
GRANT ALL PRIVILIGES ON TABLE Student,Course TO U2,U3; #把对Student表和Course表的全部权限授予用户U2和U3
GRANT SELECT ON TABLE SC TO PUBLIC; #把对表SC的查询权限授予所有用户
对属性列的授权时必须明确指出相应属性列名:
GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;
REVOKE语句一般格式 :(由数据库管理员或其他授权者用REVOKE语句收回)
REVOKE <权限>[,<权限>]&#8230;
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]&#8230;[CASCADE | RESTRICT];
eg:
REVOKE SELECT ON TABLE SC FROM PUBLIC; #收回所有用户对表SC的查询权限
1.2创建新用户时授权:只有系统的超级用户才有权创建一个新的数据库用户
CREATE USER
[WITH][DBA|RESOURCE|CONNECT];
语句说明:
- 新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA 如没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。
- 拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库
- 拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主。但不能创建模式,不能创建新的用户
- 拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户
拥有的权限 | 可否执行的操作 |
CREATE USER | CREATE SCHEMA | CREATE TABLE | 登录数据库 ,执行数据查询和操纵 |
DBA | 可以 | 可以 | 可以 | 可以 |
RESOURCE | 不可以 | 不可以 | 不可以 | 不可以 |
CONNECT | 不可以 | 不可以 | 不可以 | 可以,但必须拥有相应权限 |
1.3数据库角色
- 角色是权限的集合
- 可以为一组具有相同权限的用户创建一个角色
- 简化授权的过程
1.角色的创建
CREATE ROLE <角色名> 、
2.给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
3.将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
4.角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
2.强制存取控制 (不仅对用户,还对数据)
- 每一个数据对象被标以一定的密级
- 每一个用户也被授予某一个级别的许可证
- 对于任意一个对象,只有具有合法许可证的用户才可以存取
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
1. 主体是系统中的活动实体
数据库管理系统所管理的实际用户
代表用户的各进程
2. 客体是系统中的被动实体,受主体操纵
文件、基本表、索引、视图
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
敏感度标记分成若干级别
- 绝密(Top Secret,TS)
- 机密(Secret,S)
- 可信(Confidential,C)
- 公开(Public,P)
- TS>=S>=C>=P
主体的敏感度标记称为许可证级别(Clearance Level)
客体的敏感度标记称为密级(Classification Level)
强制存取控制规则
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
间接地实现支持存取谓词的用户权限定义