1自主存取控制方法:
用户权限由两要素组成:数据库对象和操作类型
存取控制的对象不仅有对象本身(表中的数据和属性列上的数据),还有数据库模式(包括模式、基本表、视图和索引的创建等)
授权:授予与回收
1.GRANT语法
grant <权限>
on <对象类型> <对象名>
to <用户>
【with grant option/ with admin option】;
其中 with grant option的意思是把这种权限再授予其他用户 ,包括(select/detele/insert/update)
with admin option的意思一样,但是指的是对表操作的权限,包含(create /drop/alter)
例:
把查询关系表department的权限给用户user1
grant select
on department
to user1;
将关系表course和takes上所有操作权限给全体用户
grant all privileges(全部权限)
on course
to public ;
grant all privileges(全部权限)
on takes
to public ;
将查询student关系表和修改学生专业dept_name(属性列)的权限给user1
grant select,update(dept_name) //属性列要代括号
on student
to user1;
把takes上插入数据权限个user1用户,并允许将权限转授给其他用户
grant insert
on takes
to user1
with grant option;
2.REVOKE(收回权限)语句
revoke <权限>
on <对象类型> <对象名>
from <用户> [cascade|restrict];
其中cascade为级联收回,例如:
a授权给b ,通过with grant option语句b获得了可以授权给其他人的能力,并且通过这个能力将自己的权限授予了c和d。
当a收回b的权限时,使用cascade关键字可以把c、d的权限一起收回。
有些数据库系统默认为cascade
restrict暂且不知道
例如:
收回user1修改student表的学生专业dept_name的权限:
revoke update(dept_name)
on student
from user1;
收回所有用户在takes表上的查询权:
revoke selelct
on takes
from public ;
3.创建数据库模式的权限
create user <username> [with] [dba|resource|connect];
注意:
只有系统的超级用户才能创建一个新的数据库用户
新创建的书记库用户有三种权限dba|resource|connect,默认为connect权限,不能创建新用户,不能创建模式,不能创建基本表,只能登录数据库。resource权限能创建基本表和视图成为创建对象的属主,但是不能创建模式和新用户,可以用grant语句把该对象的存取权限给其他人。dba是许霆的超级用户,拥有对所有数据库对象的存取和授予权限
create user不是sql标准,不同关系型数据库的语法和内容相差甚远。
4.数据库角色
数据库角色是权限的集合,用于处理给多人相同权限的情况。
角色的创建:
create role <角色名>
角色的授权:
grant <权限>
on <对象类型>对象名
to <角色>或<用户>;
将一个角色授予其他的角色或用户:
grant <角色>
to <角色>或<用户>
[with admin option];
角色权限的收回:
revoke <角色>
on <属性类型>属性名
from <角色>;
或者不用on直接收回角色
revoke <角色>
from <用户>
例:
将user1用户的instructor角色收回
revoke instructor
from user1;
强制存取控制方法:
主体是系统中的活动实体,包括数据库管理系统所管理的实际用户以及代表用户的各个进程,客体是系统中的被动实体,是受主体控制的,包括文件、基本表、索引、视图等。对于主体和客体,数据库管理系统为每一个实例指派一个敏感度标记,分为:绝密TS,机密S,可信C,公开P。次序为TS>S>C>P 主体的敏感度标记称为许可证级别,客体的标记为密级。
一个用户在注册入系统的时候,系统要求他对任何客体的存取必须遵顼如下规定:
1.仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应客体
2.仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应客体
注意:如果违反了规则(2),就有可能把数据的密级从高流向低,导致数据泄露
强制存取控制是对于数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分割的整体,只有符合密集标记要求的用户才可以操作数据,从而提供了更加高级的安全性。
视图机制:
视图可以隐藏数据对象,只显示希望被看到的数据,从而一定程度上包含数据安全
审计:
审计功能把用户对数据库的所有操作自动记录下来放进审计日志中,审计员可以利用日志监控数据库,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容。
审计事件:
1.服务器事件:审计数据库服务器发生的事件,包括数据库服务器的启动、停止、配置文件的重新加载。
2.系统权限:对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的。
3.语句事件:对sql语句,如DDL、DML、DQL(数据查询语言)以及DCL语句的审计
4.模式对象事件:对特定模式对象上进行的select或dml操作的审计,模式对象包括表、视图、存储过程、函数等、模式对象不包括依附于表的索引、约束、触发器、分区表等。
AUDIT\NOAUDITY语句
audit用于设置审计功能
例:对修改sc表结构或修改sc表结构数据的操作进行审计
audit alter,update
on sc;
取消对sc表的一切审计
noaudit alter,update
on sc;
数据加密:
分为存储加密和传输加密