博客
关于我
数据库安全性控制
阅读量:797 次
发布时间:2023-03-22

本文共 2380 字,大约阅读时间需要 7 分钟。

自主存取控制与强制存取控制方法

存取控制是数据库安全的核心机制,主要通过定义权限和合法检查来确保数据的安全性。本文将从自主存取控制(MAC)和强制存取控制(B1级)两个方面进行探讨。


自主存取控制方法

自主存取控制(MAC)通过SQL中的授权机制来实现,核心是通过GRANT和REVOKE语句来管理权限。这种机制赋予了用户对数据的自主控制权,用户可以决定将权限授予谁,以及是否传播权限。

用户权限

在关系数据库系统中,权限的定义主要基于以下两个维度:

  • 数据库对象

    包括数据库、基本表、视图、索引等。

  • 操作类型

    包括SELECT、INSERT、UPDATE、DELETE、REFERENCES等基本操作。

  • 自主存取控制的对象

    在关系数据库中,存取控制的对象不仅包括数据本身,还包括以下几个方面:

    对象类型 对象名称 操作类型
    数据库模式 模式名 CREATE SCHEMA
    基本表 表名 CREATE TABLE, ALTER TABLE
    视图 视图名 CREATE VIEW
    索引 索引名 CREATE INDEX
    数据 数据名 SELECT, INSERT, UPDATE, DELETE
    属性列 属性名 SELECT, INSERT, UPDATE, REFERENCE

    授权:授予与收回

    GRANT语句

    GRANT语句用于授予用户权限,语法格式如下:

    GRANT 
    <权限>
    [ON
    <对象类型>
    <对象名>
    [,...]] TO
    <用户>
    [,...] [WITH GRANT OPTION];
    • 权限:包括SELECT、INSERT、UPDATE、DELETE、REFERENCES等。
    • WITH GRANT OPTION:如果指定该选项,获得权限的用户可以将其传播给其他用户。

    示例:

    GRANT SELECT ON TABLE SC TO PUBLIC;
    REVOKE语句

    REVOKE语句用于收回已授予的权限,语法格式如下:

    REVOKE 
    <权限>
    [ON
    <对象类型>
    <对象名>
    [,...]] FROM
    <用户>
    [,...] [CASCADE | RESTRICT];
    • CASCADE:如果指定该选项,收回权限时会自动收回该权限的依赖权限。
    • RESTRICT:如果指定该选项,收回权限时需要用户确认。

    示例:

    REVOKE INSERT ON TABLE SC FROM U5 CASCADE;

    创建数据库模式的权限

    默认情况下,数据库用户拥有CONNECT权限。创建用户时,可以通过以下命令指定权限:

    CREATE USER username [WITH DBA | RESOURCE | CONNECT];
    • DBA权限:可以执行所有管理操作。
    • RESOURCE权限:可以创建临时表和索引。
    • CONNECT权限:可以登录数据库并执行查询、插入、更新、删除等操作。

    数据库角色

    数据库角色是一组相关权限的集合,通过以下命令创建角色:

    CREATE ROLE role_name;

    角色可以通过GRANT语句授予权限:

    GRANT SELECT ON TABLE SC TO role_name;

    角色之间可以相互授予权限:

    GRANT role1 TO role2 WITH ADMIN OPTION;

    角色权限的收回可以通过REVOKE语句实现:

    REVOKE SELECT ON TABLE SC FROM role_name;

    强制存取控制方法

    强制存取控制(B1级)通过对主体和客体的敏感性标记进行比较来控制数据的存取权限。其核心思想是对数据本身进行密级标记,从而确保只有符合条件的用户才能存取数据。

    实体分类

  • 主体

    包括数据库管理系统管理的用户和代表用户的进程。

  • 客体

    包括文件、基本表、索引、视图等实体。

  • 敏感性标记

    数据库系统为每个实体(主体和客体)分配一个敏感性标记,分为以下级别:

    • 绝密(TS):最高级别,仅适用于国家机密等。
    • 机密(S):适用于敏感信息。
    • 可信(C):适用于对外开放的信息。
    • 公开(P):适用于公开信息。

    敏感性标记的级别顺序为:TS > S > C > P。

    读写规则

  • 读取规则:主体的许可证级别必须大于或等于客体的密级。
  • 写入规则:主体的许可证级别必须小于或等于客体的密级。
  • 违反写入规则可能导致数据泄露。

    强制存取控制的优势

    • 数据的敏感性标记与数据本身不可分割。
    • 只有符合条件的用户才能存取数据,提供更高级别的安全性。

    审计

    审计功能记录了用户对数据库的所有操作,确保可以追溯数据库状态变化。通过审计日志,可以监控用户行为,发现非法存取数据的行为。

    AUDIT和NOAUDIT语句

    • AUDIT语句:启用对特定操作的审计。

      示例:

      AUDIT ALTER, UPDATE ON SC;
    • NOAUDIT语句:取消对特定操作的审计。

      示例:

      NOAUDIT ALTER, UPDATE ON SC;

    审计信息通常存储在数据字典中的SYS-AUDITTRAIL表中。


    数据加密

    数据加密通过算法将明文转换为不可直接识别的密文,从而保护数据安全。

    存储加密

    • 透明加密:加密后的数据看起来与明文相同。
    • 非透明加密:加密后的数据格式与明文不同。

    传输加密

    常用的传输加密方法包括:

  • 对称加密:使用相同的密钥进行加密和解密。
  • 非对称加密:使用不同密钥进行加密和解密。
  • 公钥加密:使用公钥加密,私钥解密。

  • 其他安全性保护

  • 推理控制:防止用户利用已知权限推断出更多权限。
  • 隐蔽信道:防止信息泄露。
  • 数据隐私:保护个人数据不被他人了解。
  • 通过以上机制,可以全面实现数据库的安全性管理。

    转载地址:http://odqfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现图片膨胀(附完整源码)
    查看>>
    Objective-C实现图的邻接矩阵(附完整源码)
    查看>>
    Objective-C实现圆球的表面积和体积(附完整源码)
    查看>>
    Objective-C实现在Regex的帮助下检查字谜算法(附完整源码)
    查看>>
    Objective-C实现均值滤波(附完整源码)
    查看>>
    Objective-C实现埃拉托斯特尼筛法算法(附完整源码)
    查看>>
    Objective-C实现域名解析(附完整源码)
    查看>>
    Objective-C实现域名转IP(附完整源码)
    查看>>
    Objective-C实现培根密码算法(附完整源码)
    查看>>
    Objective-C实现基于 LIFO的堆栈算法(附完整源码)
    查看>>
    Objective-C实现基于 LinkedList 的添加两个数字的解决方案算法(附完整源码)
    查看>>
    Objective-C实现基于opencv的抖动算法(附完整源码)
    查看>>
    Objective-C实现基于事件对象实现线程同步(附完整源码)
    查看>>
    Objective-C实现基于文件流拷贝文件(附完整源码)
    查看>>
    Objective-C实现基于模板的双向链表(附完整源码)
    查看>>
    Objective-C实现基于模板的顺序表(附完整源码)
    查看>>
    Objective-C实现基本二叉树算法(附完整源码)
    查看>>
    Objective-C实现堆排序(附完整源码)
    查看>>
    Objective-C实现声音录制播放程序(附完整源码)
    查看>>
    Objective-C实现备忘录模式(附完整源码)
    查看>>