第4章 数据库安全性 | 数据库知识点整理

摘要:
每次用户请求进入系统时,系统将检查并在通过识别后提供使用系统的权利。多层访问控制确保只有具有合法权限的用户才能通过用户权限定义和合法权限检查访问数据库,所有未经授权的人员都不能访问数据。该系统规定,只有具有特定许可级别的用户才能访问特定安全级别的数据对象。

第4章 数据库安全性

了解

  • 计算机系统安全性问题
  • 数据库安全性问题
  • 威胁数据库安全性因素

掌握

  • TCSEC和CC标准的主要内容
  • C2级DBMS、B1级DBMS的主要特征DBMS提供的安全措施
    • 用户身份鉴别、自主存取控制、强制存取控制技术
    • 视图技术和审计技术
    • 数据加密存储和加密传输
  • 使用SQL语言中的GRANT语句和REVOKE语句来实现自主存取控制

知识点

  • 什么是数据库的安全性
    • 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏
    举例说明对数据库安全性产生威胁的因素
    • 非授权用户对数据库的恶意存取和破坏
    • 数据库中重要或敏感的数据被泄露
    • 安全环境的脆弱性
    信息安全标准的发展历史,CC评估保证级划分的基本内容
    • TCSEC/TDI 安全级别划分
      • 安全级别 定义
      • A1 验证设计(verified design)
      • B3 安全域(security domains)
      • B2 结构化保护(structural protection)
      • B1 标记安全保护(labeled security protection)
      • C2 受控的存取保护(controlled access protection)
      • C1 自主安全保护(discretionary security protection)
      • D 最小保护(minimal protection)
      CC评估保证级(EAL)的划分
      • 评估保证级 定义 TCSEC安全级别(近似相当)
      • EAL1 功能测试(functionally tested)
      • EAL2 结构测试(structurally tested) C1
      • EAL3 系统地测试和检查(methodically tested and checked) C2
      • EAL4 系统地设计、测试和复查(methodically designed,tested and reviewed) B1
      • EAL5 半形式化设计和测试(semiformally designed and tested) B2
      • EAL6 半形式化验证的设计和测试(semiformally verified design and tested) B3
      • EAL7 形式化验证的设计和测试(formally verified design and tested) A1
    实现数据库安全性控制的常用方法和技术
    • 用户身份鉴别
      该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
    • 多层存取控制
      通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如C2级中的自主存取控制(DAC),B1级中的强制存取控制(MAC)
    • 视图机制
      为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护
    • 审计
      建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中, DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等
    • 数据加密
      对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容
    数据库自主存取控制方法和强制存取方法
    • 自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
    • 强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
    • 自主存取控制中自主的含义是:用户可以将自己拥有的存取权限“自主”地授予别人。即用户具有一定的“自主”权。
    SQL语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。
    • SQL中 的自主存取控制是通过GRANT 语句和 REVOKE 语句来实现的。如:
      GRANT SELECT, INSERT ON Student TO 王平 WITH GRANT OPTION;
    • 就将Student表的SELECT和INSERT权限授予了用户王平,后面的“WITH GRANT OPTION”子句表示用户王平同时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。
      REVOKE INSERT ON Student FROM 王平 CASCADE;
    • 就将Student表 的INSERT权限从用户王平处收回,选项 CASCADE 表示,如果用户王平将Student 的 INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。
    使用GRANT完成下列授权功能
    学生(学号,姓名,年龄,性别,家庭住址,班级号)班级(班级号,班级名,班主任,班长)​
    • 授予用户U1拥有对两个表的所有权限,并可给其他用户授权
      GRANT ALL PRIVILEGES ON TABLE 学生,班级 TO U1 WITH GRANT OPTION;
    • 授予用户U2对学生表具有查看权限,对家庭住址具有更新权限
      GRANT SELECT,UPDATE(家庭住址) ON TABLE 学生 TO U2;
    • 将对班级表查看权限授予所有用户
      GRANT SELECT ON TABLE 班级 TO PUBLIC;
    • 将对学生表的查询、更新权限授予角色R1
      GRANT SELECT,UPDATE ON TABLE 学生 TO R1;
    • 将角色R1授予用户U1,并且U1可继续授权给其他角色
      GRANT R1 TO U1 WITH ADMIN OPTION;
    用GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能以及权限撤销
    职工(职工号,姓名,年龄,职务,工资,部门号)部门(部门号,名称,经理名,地址,电话号)​
    • 用户王明对两个表有SELECT权限
      GRANT SELECT ON TABLE 职工,部门 TO 王明;REVOKE SELECT ON TABLE 职工,部门 FROM 王明;
    • 用户李勇对两个表有INSERT和DELETE权限
      GRANT INSERT,DELETE ON TABLE 职工,部门 TO 李勇;REVOKE INSERT,DELETE ON TABLE 职工,部门 FROM 李勇;​
    • 每个职工只对自己的记录有SELECT权限
      GRANT SELECT ON TABLE 职工 WHEN USER()=NAME TO ALL;/*这里假定系统的GRANT语句支持WHEN子句和USER()的使用。用户将自己的名字作为ID。*/​​REVOKE SELECT ON TABLE 职工 WHEN USER()=NAME FROM ALL;
    • 用户刘星对职工表有SELECT权限,对工资字段具有更新权限
      GRANT SELECT,UPDATE(工资) ON TABLE 职工 TO 刘星;REVOKE SELECT,UPDATE(工资) ON TABLE 职工 FROM 刘星;​
    • 用户张新具有修改这两个的结构的权限
      GRANT ALTER TABLE ON TABLE 职工,部门 TO 张新;REVOKE ALTER TABLE ON TABLE 职工,部门 FROM 张新;​
    • 用户周平具有对两个表的所有权限(读,插、改、删数据),并具有给其他用户授权的权限
      GRANT ALL PRIVILEGES ON TABLE 职工,部门 TO 周平 WITH GRANT OPTION;REVOKE ALL PRIVILEGES ON TABLE 职工,部门 FROM 周平;
    • 用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资
      /*首先建立一个视图,然后对这个视图定义杨兰的存取权限*/GRANT VIEW 部门工资 ASSELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资)FROM 职工,部门WHERE 职工.部门号=部门.部门号GROUP BY 职工.部门号;GRANT SELECT ON TABLE 部门工资 TO 杨兰;​​​​​​​REVOKE SELECT ON TABLE 部门工资 FROM 杨兰;​​​​​​DROP VIEW 部门工资;​
    理解并解释MAC机制中主体、客体、敏感度标记的含义
    • 主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各进程
    • 客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等
    • 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记。敏感度标记被分成若干级别,如绝密、机密、可信、公开等。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级
    强制存取控制机制是如何确定主体能否存取客体
    • 假设要对关系变量S进行强制存取控制,为简化起见,假设要控制存取的数据单元是元组,则每个元组标以密级,如下表所示(4=绝密,3=机密,2=秘密)
      第4章 数据库安全性 | 数据库知识点整理第1张
      假设系统的存取规则是
      • 仅当主体的许可证级别大于或等于客体的密级时才能读取相应的客体
      • 仅当主体的许可证级别小于或等于客体的密级时才能写相应的客体
    • 假定用户U1和U2的许可证级别分别为3和2,则根据规则用户U1能读元组S1和S2,可修改元组S2;用户U2只能读元组S1,修改元组S1
    什么是数据库的审计功能,为什么要提供审计功能
    • 审计功能是指DBMS的审计模块在用户对数据库执行操作的同时,把所有操作自动记录到系统的审计日志中
    • 因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能,审计员可以根据审计日志中记录的信息,分析和重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等

补充

    • 强制存取控制策略是TCSEC/TDI【B1】级安全级别的特色
    • SQL的GRANT和REVOKE语句可以用来实现【自主存取控制】
    • 在强制存取控制机制中,当主体的许可证级别等于客体的密级时,主体可以对客体进行【读取、写入】
    • 数据库安全技术包括【用户身份鉴别】【自主存取控制和强制存取控制】【视图】【审计】【数据加密】
    • 在数据加密技术中,原始数据通过某种加密算法变换为不可直接识别的格式,称为【密文】
    • 数据库角色实际上是一组与数据库操作相关的各种【权限】
    • 在对用户授予列INSERT权限时,一定要包含对【主码】的INSERT权限,否则用户的插入会因为空值被拒绝。除了授权的列,其他列的值或者取【空值】,或者为【默认值】
    • 【出入机房登记和加锁】不属于实现数据库系统安全性主要技术和方法
    • SQL中的视图提高了数据库系统的【安全性】
    • SQL语言的GRANT和REMOVE语句主要是用来维护数据库的【安全性】
    • 在数据库的安全性控制中,授权的数据对象的【范围越小】,授权子系统就越灵活

免责声明:文章转载自《第4章 数据库安全性 | 数据库知识点整理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java 正则表达式持久层框架JPA与Mybatis该如何选型下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

死锁及oracle死锁--转载

今天看群里在讨论数据库死锁的问题,也一起研究了下,查了些资料在这里总结下。 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,...

【Lua】table表删除指定元素 (转)

在对表做删除操作时,发现table.remove(table,idx)这个方法是根据table中的索引进行删除操作,而现在的需求是根据value值进行删除操作,在quick-x中也有相应的table方法封装: 1.根据table中的value值进行删除操作 -- table中删除指定元素(非根据索引) -- @param array 要...

oracle 中的truncate 和delete

一、查询表大小,块多少语句 Select SEGMENT_Name,BYTES,BLOCKS,Extents From dba_segments Where segment_name In('BAI_NEW_SESSION_HISTORY2') order by segment_name; (2)查表空间 Select Tablespace_Name,...

【ArcGIS 10.2新特性】ArcGIS 10.2将PostgreSQL原生数据发布为要素服务

1、ArcGIS 10.2支持原生数据发布为要素服    有没有将自己已有的空间数据发布为要素服务的需求?有没有将非Esri空间数据类型的数据作为服务在Web端展示的需求?    ArcGIS 10.2 for Server增加了这方面的能力,ArcGIS 10.2 for Server 可以将原生数据库中的空间数据发布为要素服务。    想必都知道现在的...

Qt将表格table保存为excel(odbc方式)

首先是保存excel的方法,可参照: http://dzmlmszp.blog.163.com/blog/static/179271962014819111812531/ ok,进入正题。 现在我有一个table,如图: 图中的table可以是QTableWidget或QTableView 但是我需要隐藏最后一列,不要让用户看到,则在代码中加入: ui-...

oracle clob与nclob的互相转换

drop table clobTets create table clobTets( col1 nclob ) select * from clobTets insert into clobTets values('11111') alter table clobTets add (col2 varchar2(4000)) update c...