数据库安全机制

数据库作为重要的数据文件库,其安全性是非常重要的。(此处的安全性是指操作上的安全性,DCL模块,而不是广义上的网络安全,服务器安全等安全性)通常是通过DCL(数据库控制语言)来实现对数据库的权限的管理。

AccessRule ::=(S,O,T,P)  (用户,对象,权力,谓词条件)

eg: 对一个员工数据库

Employee(P#,Pname,Page,Psex,Psalary,D#,HEAD)

员工管理人员应该享有全部权力,收发信息人员应能查询员工名即部门,等等

其实现方式可使用储存矩阵或视图方式,储存矩阵的格式行为DB中的对象,第一列为用户ID,表内的值为权限(r,d,i,u)

视图方式为创建某一视图,将该视图的访问权分配给指定用户,eg:

Create Empv1 as select * from Employee

数据库DB,通常由DBA来创建并同时定义一系列的用户,其次会在用户中定义一个账户级别的用户A(列如员工数据管理库的管理员),由A来定义一系列的基本表和视图并将权力分配给其他用户,常用权力分3级:

Level 1 : select 读                 Level 2 : modify  更新            1、2级为关系级别

Level 3 : create  账户级别   高级别包含低级别的权限。

下面介绍一下典型的SQL-DCL命令和应用:

在前面的博客中由提过DCL包含两个关键词 Grant 和 Revoke 分别表示授权和取消授权,其基本语法如下:

Grant {all privileges | privilege{,...}}    (其中privilege可为select读,insert,delete,update)

On  [TABLE] tablename | viewname      (数据对象)

To  {public | user-id{,.......}}                       (用户对象)

[whth grant  option]; (该命令选项为许可权力传播,即该用户可将自己的权力许可给其他账户)

对应的取消授权为:

Revoke {all privileges | privilege{,...}}  on  tablename | viewname  From  {public | user-id{,.......}};

以上为用户自定义的安全机制,对于数据库本身是有内部安全机制的,即:

对关系:R(A1:D1,C1,.........An:Dn,Cn,TC)其中A1为属性,D1为域,C1为属性安全分类特性,TC为元组分类特性

只有Level(S)大于等于Level(o)时才能对数据进行访问,

而只有Level(S)小于等于Level(o)时才能对数据进行修改


你可能感兴趣的:(数据库)