数据库安全性-4

四. 数据库安全性

  • 问题的提出
    • 数据库的一大特点就是数据可以共享
    • 数据共享必然带来数据库的安全性问题
    • 数据库中的数控共享不可能是无条件的共享

4.1 数据库安全性概述

4.1.1 数据库的不安全因素

  1. 非授权用户对数据库的恶意存取和破坏
  2. 数据库中重要或敏感的数据被泄露
  3. 安全环境的脆弱性

4.1.2 安全标准简介

  • TCSES标准

    • TCSEC/TDI标准的基本内容

      从四个方面来描述安全界别划分的指标

      • 安全策略
      • 责任
      • 保证
      • 文档
  • TCSES标准

    • D级
      • 将一切不符合更高标准的系统归于D组
      • 典型例子:DOS是安全标准为D的操作系统
    • C1级
      • 非常初级的自主安全保护
      • 能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播
      • 现有的商业系统稍微改进即可满足
    • C2级
      • 是安全产品的最低档次
      • 提供受控的存取保护,将C1级的DAC进一步细化,以个人身份注册服务,并实施审计和资源隔离
      • 达到C2级的产品在其名称上往往不突出“安全”(Security)这一特色
      • 典型例子
        • Windows 2000
        • Oracle 11g
    • B1级
      • 标记安全保护
      • 对系统的数据加以标记,对标记的主体和客体实施强制存取服务(MAC)、审计等安全机制
      • B1级典型例子
        • 操作系统:惠普公司的HP-UX BLX release9.09+
        • 数据库
    • B2级
      • 结构化保护
      • 建立形式化 的安全策略模型并对系统内的所有主体和客体实施DAC和MAC
    • B3级
      • 安全域
      • 该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程
    • A1级
      • 验证设计
  • CC标准

    • 提出国际公认的表述信息技术安全性的结构
    • 把信息产品的安全要求分为
      • 安全功能要求
      • 安全保证要求

4.2 数据安全性控制

  • 计算机系统中,安全措施是一级一级层层设置
  • 数据库安全性控制的常用方法
    • 用户身份鉴别
    • 存取控制
    • 视图
    • 审计
    • 数据加密

4.2.1 用户身份鉴别

  • 用户身份鉴别
    • 系统提供的最外层安全保护措施
    • 用户标识:由用户名和用户标识号组成
  • 鉴别方法
    • 静态口令鉴别
    • 动态口令鉴别
    • 智能卡鉴别
    • 生物 特征鉴别

4.2.2 存取控制

  • 存取控制机制组成

    • 定义用户权限,并将用户权限登记到数据字典中
    • 合法权限检查
  • 用户权限的定义和合法权检查机制一起组成了DBMS 的存取控制子系统

4.2.3 自主存取控制方法

  • 自主存取控制机制(DAC)
    • 用户对不同的数据对象有不同的存取权限
    • 不同的用户对同一对象也有不同的权限
    • 用户还可以将其拥有的存取权限转授给其他用户
  • 通过 SQL 的GRANT 语句 和RVOKE 语句实现

4.2.4 授权:授予与回收

1. 权限授予:GRANT
  • GRANT 语句的一般格式

    GRANT<权限>[,<权限>]...
    ON<对象类型><对象名>[,<对象类型><对象名>]...
    TO<用户>[,<用户>]...
    [WITH GRANT OPTION];  /*指定该子句:可以在授权权限
                           没有指定:不能授权传播*/
    

    语义:将对指定操作对象的指定操作权限授予指定的用户

    不允许循环授权

  • 发出GRANT

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

【eg.4.1】把查询Student 表权限授予用户U1

GRANT SELECT
ON TABLE Student
TO U1;

将一种权限授予一种用户

【eg.4.2】把对Student和Course表的全部授权授予用户U2和U3

GRANT ALL PRIVILEGES    /*全部权限*/
ON TABLE Student,Course
TO U2,U3;

一次向多个用户传播多种同类对象的权限

【eg.4.3】把对SC表的查询权限授予所有用户

GRANT SELECT
ON SC
TO PUBLIC;

【eg.4.4】把查询Student表和修改学生学号的权限授予给用户U4

GRANT UPDATE(Sno),SELECT
ON Student
TO U4;

对属性列的授权必须明确指明相应属性列名

一次完成了对基本表和属性列这些不同对象的授权

【eg.4.5】把对表SC的INSERT 权限授予U5用户,并允许它将此权限授予其他用户

GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;

执行后,U5不仅拥有了对表SC的INSERT 权限,还可以传播此途径

【eg.4.6】

GRANT INSERT
ON TABLE SC
TO U6
WITH GRANT OPTION;
2. 权限回收:REVOKE
  • 授权的权限可以由数据库管理员或其他授权者用REVOKE语句收回

  • 语法格式

    REVIKE<权限>[,<权限>]...
    ON<对象类型><对象名>[,<对象类型><对象名>]...
    FROM<用户>[,<用户>]...
    [CASCADE|RESTRICT];
    
    • CASCADE:级联回收
    • RESTRICT:受限回收
    • 不允许循环授权的意义

    【eg.4.8】把用户U4修改学生的权限收回来

    REVOKE UPDATE(Sno),SELECT
    ON TABLE Student
    FROM U4;
    

    【eg.4.9】收回所有用户对表SC的查询权限

    REVOKE SELECT
    ON TABLE SC
    FROM PUBLIC;
    

    【eg.4.10】把用户U5对SC表的INSERT权限收回

    REVOKE INSERT
    ON TABLE SC
    FROM U5 CASCADE;
    
3. 创建数据库模式的权限
  • CREATE USER 语句格式

    CREATE USER <usename>
    [WITH][DBA|RESOURCE|CONNECT]
    

4.2.5 数据库角色

  • 数据库角色:被命名的一组与数据库操作相关的权限
    • 角色是权限的集合
    • 可以为一组具有相同权限的用户创建一个角色
    • 简化授权的过程
1. 角色的创建
CREATE ROLE<角色名>
2. 给角色授权
GRANT <权限>[,<权限>]...
ON<对象类型>对象名
TO <角色>[,<角色>]...
3. 将一个角色授权其他的角色或用户
GRANT <角色1>[,<角色2>]...
TO <角色3>[,<用户1>]...
[WITH ADMIN OPTION]

指定了WITH ADMIN OPTION ,则获得权限的角色或用户还可以把这种权限授权给其他角色

授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION

4. 角色权限的收回
REVOKE<权限>[,<权限>]...
ON<对象类型><对象名>
FROM <角色>[,<角色>]...
  • 对象可以回收角色的权限
  • REVOKE执行者是
    • 角色的创建者,
    • 拥有这个(些)角色上的ADMIN OPTION

【eg.4.11】通过角色来实现权限管理

步骤如下

  1. 首先创建一个角色R1

    CREATE ROLE R1;
    
  2. 然后使用GRANT语句,使角色R1拥有Student表的SELECT UPDATE INSERT权限

    GRANT SELECT ,UPDATE,INSERT
    ON TABLE Student
    TO R1;
    
  3. 然后将这个角色授予王平,张明,赵林,使他们具有角色R1包含的全部权限

    GRANT R1
    TO 王平,张明,赵林;
    
  4. 可以一次性通过R1来灰沙欧王平的这三个权限

    REVOKE R1
    FROM 王平;
    

【eg.4.12】增加角色的权限

GRANT DELETE
ON TABLE Student
TO R1;

使角色R1在原有的基础上增加了Student表的DELETE权限

【eg.4.13】减少角色的权限

REVOKE SELECT
ON TABLE Student
FROM R1;

使R1减少了SELECT权限


4.2.6 强制存取控制方法

  • 自主存取控制缺点

    • 可能出现数据的“无意泄露”
  • 强制存取控制(MAC)

    • 保证更高程度的安全性
    • 用户不能直接感知或进行控制
    • 适用于对数据有严格而固定密集分类的部门
      • 军事部门
      • 政府部门
  • 在强制存取控制中,DBMS所管理的全体实体被分为主体和客体两大类

  • 主体使系统中的活动实体(用户)

    • DBMS所管理的实际用户
    • 代表用户的各进程
  • 客体是系统中的被动受体,受主体操纵(用户访问的对象)

    • 文件、基本表、索引、视图
  • 敏感度标记(Label)

    • 对于主体和客体DBMS为他们每个实例(值)指派一个敏感度标记(Label)
    • 敏感度标记分为若干级别
      • 绝密(TS)
      • 机密(s)
      • 可信©
      • 公开(P)
      • TS>=S>=C>=P
    • 主体的敏感度标记称为许可证级别
    • 客体的敏感度标记称为密级
  • 强制存取控制规则

    • 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
    • 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体

4.3 视图机制

  • 把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护

【eg.4.14】授权王平老师能查询计算机系学生的情况,授权系主任张明能对计算机系学生信息进行所有操作

  1. 先建立计算机系学生的视图CS_Student

    CREATE VIEW CS_Student
    AS
    SELECT*
    FROM Student
    WHERE Sdept='CS';
    
  2. 在视图上进一步定义存取权限

    GRNANT SELECT
    ON CS_Student
    TO 王平;
    
    GRANT ALL PRIVILGES
    ON SC_Student
    ON 张明;
    

4.4 审计

  • 数据库安全性控制措施

    • 预防性措施
      • 用户身份鉴别
      • 用户存取控制
      • 强制存取控制
    • 监控措施
      • 审计
  • 什么是审计

    • 启用一个专门的审计日志

      将用户对数据库的所有操作记录在上面

    • 审计员利用审计日志

      监控数据库中的各种行为

      发现非法存取,发现潜在威胁

    • C2以上安全级别的DBMS必须具有审计功能

  • 可以被审计的事件

    • 服务器事件
    • 系统事件
    • 语句事件
    • 模式对象事件
  • 审计日志管理

  • 审计功能的可选性

    • 审计很费时间和空间
    • DBA可以根据应用对安全性的要求,灵活的打开或关闭审计功能
  • 审计功能设置

    • AUDIT语句:设置审计功能
    • NOAUDIT语句:取消审计功能
  • 用户级审计

    • 任何用户可设置的审计
    • 主要是用户针对自己创建的数据库表和视图进行审计
  • 系统级审计

    • 只能由DBA来设置
    • 监测成功或失败的登录要求,监测授权和回收操作以及其他数据库级权限以下的操作

【eg.4.15】对修改SC表结构或修改SC表数据的操作进行审计

AUDIT ALTED,UPDATE
ON SC;

【eg.4.16】取消对SC表的一切审计

NOAUDIT ALTED,UPDATE
ON SC;

4.5 数据加密

  • 防止数据库中数据在存储和传输过程中失密的有效手段
  • 加密的基本思想
    • 根据一定的算法将原始数据——明文变化成不可直接识别的格式——密文
  • 加密方法
    • 存储加密
    • 传输加密

4.6 其他安全性保护

  • 推理控制
    • 处理强制存取控制未解决的问题,避免用户利用能够访问的数据推知更高机密的数据
    • 常用方法
      • 基于函数依赖 的推理控制
      • 基于敏感关联 的推理控制
  • 隐秘信道
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值