《数据库系统概论》(王珊 萨师煊)复习笔记(四)

第四章 数据库保护

数据库安全性控制

  1. 非法使用数据库的情况
    • 编写合法程序绕过及DBMS其授权机制
    • 直接或编写应用程序执行非授权操作
    • 通过多次合法查询数据库从中推导出一些保密数据
  2. 计算机系统中,安全措施是一级一级层层设置
  3. 计算机系统的安全模型

  1. 用户识别和鉴别

    • 用户标识与鉴别:系统提供的最外层安全保护措施
    • 用户标识:用户名、用户标识号
    • 口令:系统核对口令以鉴别用户身份
    • 用户名和口令易被窃取:每个用户预先约定好一个计算过程或者函数
  2. 存取控制

    • 存取控制机制组成:定义用户权限、合法权限检查 。用户权限定义和合法权检查机制一起组成了DBMS的安全子系统
    • 常用存取控制方法
      • 自主存取控制(Discretionary Access Control ,简称DAC)
        C2级
        灵活
      • 强制存取控制(Mandatory Access Control,简称 MAC)
        B1级
        严格
    • 用户权限组成:数据对象、操作类型
    • 定义用户存取权限:定义哪些用户可以在哪些数据库对象上进行哪些类型的操作,是策略问题,DBMS应提供机制
    • 关系数据库系统中存取控制对象

  3. 授权与回收

    • GRANT

      • GRANT语句的一般格式:
      1
      2
      3
      4
      GRANT <权限>[,<权限>]... 
      [ON <对象类型> <对象名>]
      TO <用户>[,<用户>]...
      [WITH GRANT OPTION];
      • 语义:将对指定操作对象的指定操作权限授予指定的用户

      • 发出GRANT的用户:

        • DBA
        • 数据库对象创建者(即属主Owner)
        • 拥有该权限的用户
      • 按受权限的用户

        • 一个或多个具体用户
        • PUBLIC(全体用户)
      • WITH GRANT OPTION子句:

        • 指定:可以再授予
        • 没有指定:不能传播
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      /*把查询Student表权限授给用户U1*/
      GRANT SELECT
      ON TABLE Student
      TO U1;
      /*把对Student表和Course表的全部权限授予用户U2和U3*/
      GRANT ALL PRIVILIGES
      ON TABLE Student, Course
      TO U2, U3;
      /*把对表SC的查询权限授予所有用户*/
      GRANT SELECT
      ON TABLE SC
      TO PUBLIC;
      /*把查询Student表和修改学生学号的权限授给用户U4*/
      GRANT UPDATE(Sno), SELECT
      ON TABLE Student
      TO U4;
      /*属性列的授权时必须明确指出相应属性列名*/
      /*把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户*/
      GRANT INSERT
      ON TABLE SC
      TO U5
      WITH GRANT OPTION;
    • REVOKE

      • 授予的权限可以由DBA或其他授权者用REVOKE语句收回

      • REVOKE语句的一般格式为:

        1
        2
        3
        REVOKE <权限>[,<权限>]... 
        [ON <对象类型> <对象名>]
        FROM <用户>[,<用户>]...;
      • 级联删除

        1
        2
        3
        4
        5
        6
        /*用户U5对SC表的INSERT权限收回*/
        REVOKE INSERT
        ON TABLE SC
        FROM U5 CASCADE ;
        /*将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回
        系统只收回直接或间接从U5处获得的权限 */
  4. 数据库角色:被命名的一组与数据库操作相关的权限

    • 角色是权限的集合
    • 可以为一组具有相同权限的用户创建一个角色
    • 简化授权的过程
    • 类比:Windows操作系统中的用户组

第五章 数据库完整性

  1. 数据库的完整性:数据的正确性和相容性

  2. 数据的完整性和安全性是两个不同概念

    • 数据的完整性
      • 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据
      • 防范对象:不合语义的、不正确的数据
    • 数据的安全性
      • 保护数据库防止恶意的破坏和非法的存取
      • 防范对象:非法用户和非法操作
  3. 完整性约束的分类

    • 完整性约束条件中涉及的约束对象

      • 关系
      • 元组
    • 值约束和结构约束
      例:在向“学生成绩”关系中插入数据和更新数据时,需检查新的“学号”和“课程号”是否在“学生”关系和“课程”关系中已存在,否则不允许插入和更新。

    • 静态约束与动态约束
      例:动态约束的例子,在更新“学生”关系中的“年龄”字段时,新值必须大于旧值

    • 立即执行约束和延迟执行约束
      例:银行业务中,从账户A转移资金X到账户B,约束条件是总资金不变

  4. 为维护数据库的完整性,DBMS必须:

    • 提供定义完整性约束条件的机制
    • 提供完整性检查的方法
    • 违约处理