SQL语言——安全性

安全性

/* 1. DBMS的安全机制 -- 自主安全性机制:存取控制 -- 强制安全性控制 -- 推断控制机制 -- 数据加密存储机制 */
    
    /* 2. 自主安全性机制 -- 权限控制 -- 访问规则 DBMS将权利和用户(账户)结合在一起,形成一个访问规则表可以实现对数据库的安全性控制 AccessRules ::=(S , O , t , P) -- S : 请求主体(用户) -- O : 访问对象 -- t : 访问权利 -- P : 谓词 S用户在满足P条件下,对O有t的权利 - Access Rules通常存放在数据字典或称系统目录中,构成了所有用户对DB访问权利 - 用户多时,可以按用户组建立访问权限 - 访问对象:属性/字段、记录/元组、关系、数据库 - 权利:包括创建、增、删、改、查等 - 谓词:拥有权利需满足的条件 */
    
-- e.g.
    -- 员工管理数据库的安全性控制
    -- employee(pid,pname,page,psex,psalary,did,head)
    
    -- 要求
        -- 员工管理人员:能访问所有人员
        -- 收发人员:只能访问员工的基本信息
        -- 每个员工:可访问自己的记录,但不能修改
        -- 部门领导:能够查询其所有领导部门人员的所有情况,只读
        -- 高层领导:可访问所有内容,只读
S O t P
员工管理人员 employee 读、删、改、查  
收发人员 employee(pname,did)  
高级领导 employee  
员工 employee pid = userId
部门领导 employee head = userId
-- 3. 安全性的实现方式
    -- 存储矩阵
    -- 视图

    CREATE empV1 AS SELECT * FROM employee where headId = :userId;
    

-- 4. 用户与权利
/* 关系级别(普通用户) ←—— 账户级别(程序员用户) ←—— 超级用户(DBA) 级别1 SELECT :读 级别2 MODIFY :更新 -- INSERT -- UPDATE -- DELETE 级别3 CREATE :创建 -- CREATE -- ALTER -- DROP 级别高的拥有级别低的权限 授权命令 GRANT {ALL PRIVILEGES | privilege {,prvilege...}} ON [TABLE] tablename | viewname TO {PUBLIC | user-id{,user-id...}} [WITH GRANT OPTION]; user-id , 某个用户账户,由DBA创建的合法账户 public , 允许所有有效用户使用授予的权利 privilege 是下面权利 SELECT | INSERT | UPDATE | DELETE | ALL PRIVILEGES WITH GRANT OPTION 选项是允许被授予者传播这些权利 */

    GRANT ALL PRIVILEGES ON employee TO emp2001;
    GRANT SELECT ON empV2 TO emp5001;
    
/* 收回权利 REVOKE {ALL PRIVILEGES | priv{,priv...}} ON tablename | viewname FROM {PUBLIC | user {,user...}}; -- e.g. REVOKE SELECT ON employee FROM userB; */
    原文作者:JeffCHP
    原文地址: https://blog.csdn.net/JeffCHP/article/details/54648371
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞