确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接受数据,这主要通过数据库系统的存取控制机制实现。存取控制主要包括定义用户权限和合法权限检查两部分。
1)定义用户权限,并将用户权限登记到数据字典中;
2)合法权限检查。
C2级的数据库管理系统支持自主存取控制,B1级的数据库管理系统支持强制存取控制。
SQL标准对自主存取控制提供支持,通过GRANT和REVOKE语句来实现。
定义存取权限成为授权;
存取控制的对象不仅由数据本身(基本表中的数据、属性列上的数据),还有数据库模式(包括数据库、基本表、视图和索引的创建等)。
1、grant
1)一般格式
grant <权限> [,<权限>]...
on <对象类型> <对象名>[,<对象类型> <对象名>]...
to <用户>[,<用户>]...
[with grant option];
其语义为:将对指定操作对象的指定操作权限授予指定的用户。
如果指定了 with grant oprion子句,则获得某种权限的用户还可以把这种权限授予其他用户。SQL标准不允许循环授权。
例1:把查询student表的权限授给用户U1
grant select
on table student
to U1;
例2:把对student表和course表的全部权限授予用户U2和U3
grant all privileges
on table student,course
to u2,u3;
例3:把查询student表的修改学生学号的权限授给用户U4
grant update(sno),select
on table student
to U4;
2、revoke
1)一般格式
revoke <权限>
on <对象类型> <对象名>
from <用户> [cascade | restrict];
例1:把用户U4修改学生学号的权限收回
revoke update(sno)
on table student
from U4;
3、创建数据库模式的权限
对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现。
create user [with] [DBA | RESOURCE | CONNECT];
NOTE:
只有系统的超级用户才有权创建一个新的数据库用户;
新创建的数据库用户有三种权限DBA | RESOURCE | CONNECT;
create user命令中如果没有指定权限,默认connect。
connect权限的用户不能创建新用户,不能创建模式,不能创建基本表,只能登陆数据库。
resource权限的用户能创建基本表和视图,成为所创建对象的属主,但不能创建模式, 不能创建新的用户。
DBA权限的用户时系统中的超级用户,可以创建新的用户、创建模式、创建表和视图等,拥有对所有对象的存取权限。
角色是权限的集合。
例:
create role R1;
grant select, update, insert
on table student
to R1;
grant R1
to U1, U2;
revoke R1
on table student
from U1;
每一个数据库对象被标以一定的密级,每一个用户被授予某一级别的许可证。只有具有某种合法许可证的用户才可以存取。
通过视图机制把要保存的数据对物权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。视图机制间接地实现支持存取为此的用户权限定义。
审计功能吧用户对数据库的所有操作自动保存记录下来放入审计日志,审计员可以利用审计日志监督数据库中的各种行为。
1)存储加密
2)传输加密