第四章 数据库安全性

第四章 数据库安全性_第1张图片
数据库安全性控制思维导图

授权:授予与收回

用户可以“自主”地决定把数据的存取权限授予何人,决定是否也将“授权”的权限授予别人。这样的存取控制就是自主存取控制。

1. 授予权限 GRANT

  • 一般格式
    GRANT <权限>
    ON <对象类型><对象名>
    TO <用户>
    [WITH GRANT OPTION];

将对指定操作对象的指定操作权限授予指定的用户。
GRANT发出者:数据库管理员 | 数据库对象创建者(属主owner) | 已拥有该权限的用户
指定WITH GRANT OPTION子句,则获得该权限的用户可把这种权限再授予其它用户。

    /* 把对表SC的查询权限授予所有用户 */
    GRANT SELECT
    ON TABLE SC
    TO PUBLIC;
    
    /* 把查询Student表和修改学生学号的权限授给用户U1, U2 
       对属性列授权时必须明确指出相应的属性列名  */
    GRANT UPDATE(Sno), SELECT
    ON TABLE Student
    TO U1, U2;

2. 收回权限 REVOKE

  • 一般格式
    REVOKE <权限>
    ON <对象类型><对象名>
    FROM <用户>
    [CASCADE | RESTRICT];
    /* 把用户U1修改学生学号的权限收回 */
    REVOKE UPDATE(Sno)
    ON TABLE Student
    FROM U1;
    
    /* 将用户U5的INSERT权限收回同时,级联收回U6和U7的INSERT权限 */
    REVOKE INSERT
    ON TABLE SC
    FROM U5 CASCADE;

3. 创建数据库模式的权限

    CREATE USER  [WITH] [DBA | RESOURCE | CONNECT];

只有系统的超级用户才有权创建一个新的数据库用户。
新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA。
CREATE USER 命令中如果没有指定创建的新用户的权限,默认CONNECT。

  • 拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。
  • 拥有RESOURCE权限的用户能创建基本表和视图。
  • 拥有DBA权限的用户是系统中的超级用户。

数据库角色

数据库角色是一组权限的集合。使用角色来管理数据库权限可以简化授权的过程,使自主授权的执行更加灵活、方便。

1. 角色的创建

    CREATE ROLE <角色名>
    
    /* 创建角色R1 */
    CREATE ROLE R1;

2. 给角色授权

    GRANT <权限>
    ON <对象类型><对象名>
    TO <角色>
    
    /* 使角色1拥有Student表的SELECT、UPDATE、INSERT权限 */
    GRANT SELECT, UPDATE, INSERT
    ON TABLE Student
    TO R1;

3. 将一个角色授予其他的角色或用户

    GRANT <角色1> [,<角色2>]
    TO <角色3> [,<用户1>] 
    [WITH ADMIN OPTION];
    
    /* 将角色R1授予王平、张明、赵玲,使他们拥有R1的全部权限 */
    GRANT R1
    TO 王平, 张明, 赵玲;
    
    /* 一次性通过R1收回王平的三个权限 */
    REVOKE R1
    FROM 王平;

4. 角色权限的收回

    REVOKE <权限>
    ON <对象类型><对象名>
    FROM <角色>   
    
    /* 收回角色R1的这三个权限 */
    REVOKE SELECT, UPDATE, INSERT
    ON TABLE Student
    FROM R1;

视图机制

为不同用户定义不同的视图,把数据对象限制在一定的范围内。
视图机制间接地实现支持存取谓词的用户权限定义。

    CREATE VIEW CS_Student  /* 先建立视图CS_Student */
    AS
    SELECT *
    FROM Student
    WHERE Sdept = 'CS':
    
    GRANT SELECT            /* 王平老师只能检索计算机系学生的信息 */
    ON CS_Student
    TO 王平;
    
    GRANT ALL PRIVILEGES    /* 系主任张明具有检索和增删计算机系学生信息的所有权限 */
    ON CS_Student
    TO 张明;

审计

审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容。

    /* 对修改SC表结构或修改SC表数据的操作进行审计 */
    AUDIT ALTER, UPDATE
    ON SC;
    
    /* 取消对SC表的一切审计 */
    NOAUDIT ALTER, UPDATE
    ON SC;

你可能感兴趣的:(第四章 数据库安全性)