数据库安全性-控制
数据库安全性 — 控制
数据库安全性控制
1.非法使用数据库的情况
①编写合法程序绕过数据库管理系统及其授权机制;
②直接或编写应用程序执行非授权操作;
③通过多次合法查询数据库从中推导出一些保密数据。
2.计算机系统中,安全措施是一级一级层层设置。
①系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统;
②数据库管理系统还要进行存取控制,只允许用户执行合法操作;
③操作系统有自己的保护措施;
④数据以密码形式存储到数据库中。
3.存取控制流程
①首先,数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统。
②然后,在SQL处理层进行自主存取控制和强制存取控制,进一步可以进行推理控制。
③还可以对用户访问行为和系统关键操作进行审计,对异常用户行为进行简单入侵检测。
4.数据库安全性控制的常用方法
①用户标识和鉴定;
②存取控制;
③视图;
④审计;
⑤数据加密。
一.用户身份鉴别(Identification & Authentication)
1.系统提供的 最外层 安全保护措施;
2.用户标识:由用户名和用户标识号组成。(用户标识号在系统整个声明周期内唯一)
3.用户身份鉴别的方法
①静态口令鉴别
静态口令一般由用户自己设定,这些口令是静态不变的。
②动态口令鉴别
口令是动态变化的,每次鉴别时需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法。
③生物特征鉴别
通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等。
④智能卡鉴别
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。
二.存取控制
1.存取控制机制组成
①定义用户权限,并将用户权限登记到数据字典中
a.用户对某一数据对象的操作权利称为权限。
b.DBMS提供适当的语言来定义用户权限,放在数据字典中,称作安全规则或授权规则。
②合法权限检查
a.用户发出存取数据库操作请求;
b.DBMS查找数据字典,进行合法权限检查。
2.用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统。
3.常用存取控制方法
①自主存取控制(DAC)
a.数据存取权限由用户控制,系统无法控制。
b.C2级。
c.用户对不同的数据对象有不同的存取权限。
d.不同的用户对同一对象也有不同的权限;
e.用户还可将其拥有的存取权限转授给其他用户。
②强制存取控制(MAC)
a.由系统控制,不是用户能直接感知或进行控制的。
b.B1级。
c.每一个数据对象被标以一定的密级。
d.每一个用户也被授予某一个级别的许可证。
e.对于任意一个对象,只有具有合法许可证的用户才可以存取。
三.自主存取控制方法
1.通过SQL的 GRANT 语句和 REVOKE 语句实现。
2.用户权限组成
a.数据对象;
b.操作类型。
3.定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作。
4.定义存取权限称为授权。
5.关系数据库系统中存取控制对象
四.授权:授予与回收
1.GRANT:
将对指定操作对象的指定操作权限授予指定的用户。
GRANT <权限> [,<权限>]…
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]…
[WITH GRANT OPTION];
(1)能发出GRANT的对象:
a.数据库管理员;
b.数据库对象创建者(即属主Owner);
c.拥有该权限的用户。
(2)能按受权限的用户
a.一个或多个具体用户;
b.PUBLIC(即全体用户)。
(3)WITH GRANT OPTION子句
a.指定:可以再授予;
b.没有指定:不能传播;
c.不允许循环授权。
(4)例子
① 把查询Student表权限授给用户U1。
GRANT SELECT
ON TABLE Student
TO U1;
② 把对Student表和Course表的全部权限授予用户U2和U3。
GRANT ALL PRIVILIGES
ON TABLE Student,Course
TO U2,U3;
③ 把查询Student表和修改学生学号的权限授给用户U4。
GRANT UPDATE(Sno),SELECT
ON TABLE Student
TO U4;
对属性列的授权时必须明确指出相应属性列名。
④ 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户。
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
2.REVOKE
授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回。
REVOKE <权限> [,<权限>]…
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
FROM <用户> [,<用户>]…[CASCADE | RESTRICT];
(1)例子
①把用户U4修改学生学号的权限收回。
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
②收回所有用户对表SC的查询权限。
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
③把用户U5对SC表的INSERT权限收回。
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;
a.将用户U5的INSERT权限收回的时候应使用CASCADE,因为用户U5有“WITH GRANT OPTION”权限,否则拒绝执行该行语句。
b.如果U6或U7还从其他用户处获得对SC表的INSERT权限,则它们仍具有此权限,系统只收回直接或间接从U5处获得的权限。
小结:
1.数据库管理员:
a.拥有所有对象的所有权限;
b.根据实际情况不同的权限授予不同的用户。
2.用户:
a.拥有自己建立的对象的全部的操作权限;
b.可以使用GRANT,把权限授予其他用户。
3.被授权的用户:
如果具有“继续授权”的许可,可以把获得的权限再授予其他用户。
4.所有授予出去的权力在必要时又都可以用REVOKE语句收回。
3.创建数据库模式的权限
(1)数据库管理员在创建用户时实现
CREATE USER < username >
[WITH] [DBA|RESOURCE|CONNECT];
①只有系统的超级用户才有权创建一个新的数据库用户;
②新创建的数据库用户有三种权限:CONNECT、RESOURCE、DBA。
③如没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。
拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。
④拥有RESOURCE权限的用户能创建基本表和视图,称为所创建对象的属主。但不能创建模式,不能创建新用户。
⑤拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等。
DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。
五.数据库角色
数据库角色:被命名的一组与数据库操作相关的权限:
a.角色是权限的集合;
b.可以为一组具有相同权限的用户创建一个角色;
c.简化授权的过程。
1.角色的创建
CREATE ROLE <角色名>;
2.给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型> 对象名
TO <角色>[,<角色>]…
3.将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
①该语句把角色授予某用户,或授予另一个角色;
②授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION;
③指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色。
一个角色的权限:直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限。
4.角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
①用户可以回收角色的权限,从而修改角色拥有的权限;
②REVOKE执行者是:
a.角色的创建者;
b.拥有在这个(些)角色上的ADMIN OPTION。
5.例子
(1)通过角色来实现将一组权限授予一个用户:
①首先创建一个角色R1
CREATE ROLE R1;
②然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限:
GRANT SELECT,UPDATE,INSERT
ON TABLE Student
TO R1;
③将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限:
GRANT R1
TO 王平,张明,赵玲;
④可以一次性通过R1来回收王平的这三个权限:
REVOKE R1
FROM 王平;
(2)角色的权限修改
使角色R1在原来的基础上增加了Student表的DELETE权限。
GRANT DELETE
ON TABLE Student
TO R1;
六.强制存取控制方法
1.自主存取控制缺点
①可能存在数据的“无意泄露”;
②原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记;
③解决:对系统控制下的所有主客体实施强制存取控制策略。
2.强制存取控制(mandatory access control,MAC)
①保证更高程度的安全性;
②用户不能直接感知或进行控制;
③适用于对数据有严格而固定密级分类的部门:
军事部门、政府部门。
3.在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类。
①主体是系统中的活动实体
a.数据库管理系统所管理的实际用户;
b.代表用户的各进程。
②客体是系统中的被动实体,受主体操纵
文件、基本表、索引、视图。
4.敏感度标记(Label)
①对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)。
②敏感度标记分为若干级别:
a.绝密(Top Secret,TS)
b.机密(Secret,S)
c.可信(Confidential,C)
d.公开(Public,P)
e.TS>=S>=C>=P
③主体的敏感度标记称为许可证级别(Clearance Level)
④客体的敏感度标记称为密级(Classification Level)
5.强制存取控制规则
①仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
②仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
6.强制存取控制MAC是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
7.实现强制存取控制时要首先实现自主存取控制
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护。
8.自主存取控制与强制存取控制共同构成数据库管理系统的安全机制。
9.DAC+MAC安全检查
先进行自主存取控制检查,通过自主存取控制检查的数据对象再由系统进行强制存取控制检查,只有通过强制存取控制检查的数据对象方可存取。