精华内容
下载资源
问答
  • 数据库安全性

    万次阅读 多人点赞 2018-05-19 19:24:10
    数据库的数据保护主要包括数据的安全性和完整性。 一、安全性概述 数据库安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或损坏。系统安全保护措施是否有效是数据库系统的主要技术指标之一。 ...

    数据库管理系统提供统一的数据保护功能来保证数据的安全可靠和正确有效。数据库的数据保护主要包括数据的安全性和完整性。

    一、安全性概述

    数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或损坏。系统安全保护措施是否有效是数据库系统的主要技术指标之一。

    1、数据库的不安全因素

    1)非授权用户对数据库的恶意存取和破坏
    措施:包括用户身份鉴别、存取控制和视图等技术。
    2)数据库中重要或敏感的数据被泄露
    措施:强制存取控制、数据加密存储和加密传输等。
    3)安全环境的脆弱性
    措施:加强计算机系统的安全性保证,建立完善的可信标准(安全标准)。

    2、安全标准简介

    安全标准比较有影响力的有:
    1)TCSEC(桔皮书):1985年美国国防部(DoD)正式颁布的《DoD可信计算机系统评估标准》。
    2)CC:1993年联合行动,解决原标准中概念和技术上的差异,将各自独立的准则合成一组单一的、能被广泛使用的IT暗转准则,这一行动被称为通用准则(CC)项目。CC v2.1版于1999年被ISO采用为国际标准,2001年我国采用为国家标准。
    目前,CC已经取代TCSEC称为评估信息产品安全性的主要标准。
    安全级别可分为: D < C2 < C1 < B3 < B2 < B1 < A1
    其中C2级的数据库管理系统支持自主存取控制(DAC),B1级的数据库管理系统支持强制存取控制(MAC)。

    二、安全控制

    计算机系统的安全模型:
    计算机系统的安全模型
    数据库管理系统安全性控制模型:
    安全性控制模型

    1、用户身份鉴别

    用户身份鉴别是数据库管理系统提供的最外层安全保护措施,每个用户在系统中都有一个用户标识(由用户名和用户标识号组成),用户标识号(UID)在系统的生命周期内是唯一的,并且系统内部记录这所有合法用户的标识,系统鉴别是指由系统提供一定的方式让用户标识自己的身份或名字。用户进入系统时由系统进行核对,通过鉴定后才提供使用数据库管理系统的权限。
    用户身份鉴别的方法:

    1. 静态口令鉴别
      目前常用的鉴别方法,相当于设置用户的密码。
      优缺点:简单,容易被攻击,安全性较低。
    2. 动态口令鉴别
      口令是动态变化的,登陆系统前就会获取新口令,相当于短信验证码或者动态令牌。
      优缺点:增加口令被窃取或破解的难度,安全性相对高一些。
    3. 生物特征鉴别
      采用图像处理和模式识别等技术,相当于指纹识别或者脸部识别。
      优缺点:产生质的飞跃,安全性较高。
    4. 智能卡识别
      智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。实际应用中一般采用个人身份识别码(PIN)和智能卡相结合的方式。
    2、存取控制

    数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未授权的人员无法接近数据,这主要通过数据库系统存取控制机制实现。

    存取控制机制主要包括定义用户权限,并将用户权限登记到数据字典中和合法权限检查。两者机制一起组成数据库管理系统的存取控制子系统。

    3、自主存取控制方法

    自主存取控制方法主要通过SQL的GRANT语句和REVOKE语句来实现。
    用户权限是由数据库对象和操作类型组成的。定义一个用户的存取权限就是要定义这个用户在那些数据库对象上可以进行那些类型的操作,即定义存取权限(授权)。
    在非关系系统中,用户只能对数据进行操作,存取控制的数据库对象也仅限于数据本身;在关系数据库系统中,存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(数据库、基本表、视图和索引的创建等)。
    关系数据库存取权限表
    关系数据库存取权限
    备注:在授予用户列INSERT权限时,一定要包含主码的INSERT权限,否则用户的插入动作会因为主码为空而被拒绝。

    4、授权:授予与收回

    SQL中使用GRANT(授予权限)和REVOKE(收回已授予的权限)语句向用户授予或收回对数据的操作权限。

    1. GRANT
      语句:GTANT <权限>[,<权限>]… ON<对象类型><对象名>[,<对象类型><对象名>]…TO<用户>[,<用户>]…[WITH GRANT OPTION];
      例句:GRANT SELECT(权限) ON TABLE SC(表名) TO USER(用户名);
      语义:将对指定操作对象的指定操作权限授予指定的用户。可以由数据库管理员、数据库对象创建者(属主owner),也可以是已经用于该权限的用户。接受权限的用户可以是一个或多个具体用户,也可以是全体用户(PUBLIC)。WITN GTANT OPTION就是获得某种权限的用户还可以将权限授予其他用户,如果没有就代表只能使用该权限,不能传播。

      SQL标准允许具有WITH GRANT OPTION的用户把相应权限或其子集传递授予其他用户,但不允许循环授权,即被授权者不能把权限再授回给授权者或其祖先。

    2. REVOKE
      语句:REVOKE <权限>[,<权限>]…ON<对象类型><对象名>[,<对象类型><对象名>]…FROM<用户>[,<用户>…[CASCADE|RESTRICT];
      例句:REVOKE SELECT(权限) ON TABLE SC(表名) FROM USER(用户名);
      备注:使用该语句的为数据库管理员或其他授权者
      这里默认为CASCADE,就是没有自动执行级联操作,只是收回了该用户的权限,该用户授予的其他用户的权限保留,如果使用RESTRICT就是收回该用户以及该用户授予权限的用户的权限。
      总结: 用户可以“自主”地决定将数据的存取权限授予何人,决定是否也将“授权”的权限授予别人,这样的存取控制就是自主存取控制。

    3. 创建数据库模式的权限
      对创建数据库模式一类的数据库对象的授权由数据库管理员在创建用户时实现。
      语句:CREATE USER [WITH][DBA|RESOURCE|CONNECT];
      说明:权限与可执行的操作对照表
      权限对照表
      **备注:**CREATE USER语句不是SQL标准,不同的关系数据库管理系统的语法和内容是有差别的。
    5、数据库角色

    数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。

    1. 角色的创建
      CREATE ROLE <角色名>;
    2. 给角色授权
      GRANT <权限>[,<权限>]… ON <对象类型>对象名 TO<角色>[,<角色>]…
    3. 将一个角色授予其他的角色或用户
    4. GRANT <角色1>[,<角色2>]…TO <角色3>[,<用户1>]…[WITH ADMIN OPRION];
      指定了WITN ADMIN OPTION子句,则获得某种权限的角色或用户还可以把这种权限再授予其他的角色,角色3拥有角色1和角色2的所有权限。一个角色包含的权限包括直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限。
    5. 角色权限的收回
      REVOKE <权限>[,<权限>]… ON<对象类型><对象名>FROM <角色>[,<角色>]…
      用户可以回收角色的权限,从而修改角色拥有的权限。
      示例:
      CREATE ROLE R1; 创建角色
      GRANT SELECT ON TABLE SC; 授权
      GTANT T1 TO USER; 授权用户
      REVOKE R1 FROM USER; 回收权限
    6、强制存取控制方法

    自主存取控制(MAC)能够通过授权机制有效地控制对敏感数据的存取,但是由于用户对数据的存取权限是自主的,可以自由授权,这样会导致安全性降低,因此需要对系统控制下的所有主客体实施强制存取控制策略。
    定义:系统为保护更高程度的安全性,按照TDI/TCSEC标准中的安全策略的要求所采取的强制存取检查手段。它不是用户能直接感知或进行控制的。强制存取控制适用于那些数据有严格而固定密级分类的部门(军事或政府等)。
    在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类。
    1. 主体是系统中的活动实体,既包含数据库管理系统所管理的实际用户,也包含代表用户的各进程。
    2. 客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。
    数据库管理系统为主体和客体每个实例(值)指派一个敏感标记(label)。label分为绝密(TS)>=机密(S)>=可信(C)>=公开(P)。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。强制存取控制机制就是通过对比主体的敏感度标记和客体的敏感度标记,最终确定主体是否能够存取客体。
    当某一用户(或某一主体)以标记label注册入系统时,系统要求他对任何客体的存取要遵循:
    1)仅当主体的许可证级别大于或等于客体的密级时,该主才能读取相应的客体。
    2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
    强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在实现强制存取控制时要首先实现自主存取控制(DAC),即自主存取控制与强制存取控制共同构成数据库管理系统的安全机制。

    系统首先进行自主存取控制检查,对通过自主存取控制检查的允许存取的数据库对象再由系统自动进行强制存取控制检查,只有通过强制存取控制检查的数据库对象方可存取。

    展开全文
  • 第4章 数据库安全性 4.1 数据库安全性概述 1、数据库的安全性是指:保护数据库,防止不合法的使用造成数据泄露、更改或毁坏。安全性问题不是数据库系统独有的,所有计算机系统都存在不安全因素。但数据库系统中,...

    教材:王珊 萨师煊 编著 数据库系统概论(第5版) 高等教育出版社
    注:文档高清截图在后

    第4章 数据库安全性

    4.1 数据库安全性概述

    1、数据库的安全性是指:保护数据库,防止不合法的使用造成数据泄露、更改或毁坏。安全性问题不是数据库系统独有的,所有计算机系统都存在不安全因素。但数据库系统中,大量数据集中存放,且面向大量用户共享,所以安全问题尤为突出。系统安全保护措施是否有效是数据库系统的主要技术指标之一。

    2、数据库的不安全因素主要有:
    【1】非授权用户对数据库的恶意存取与破坏。
    【2】重要或敏感的数据被泄露。
    【3】整个安全环境的脆弱性。
    数据库安全与计算机系统的安全,包括硬件、操作系统、网络等的安全性是紧密联系的。

    3、计算机以及信息安全技术方面有众多安全标准,最有影响的主要由TCSEC和CC。
    TCSEC是指1985年美国国防部(Department of Defense,DoD)颁布的《DoD可信计算机系统评估准则》(Trusted Computer System Evaluation Criteria,TCESC或DoD85)。在TCSEC推出后的10年里,众多国家和地区都以此为概念基础建立了各自的评估标准。但标准的碎片化会极大增加整个IT行业的运行成本,于是1993年起各标准的发起组织联合解决了各自标准中的概念与技术上的差异,将各自的准则集合成了一组较单一的、能广泛应用的IT安全准则,称为通用准则(Common Criteria,CC)。1999年,CC被ISO正式采用为国际标准,2001年我国将其采用为国家标准。
    目前CC基本取代了TCSEC,成为评估信息产品安全性的主要标准。

    4、TCSEC又称橙皮书。1991年4月美国国家计算机安全中心(National Computer Security Center,NCSC)颁布《可信计算机系统评估准则关于可信数据库系统的解释》(TCSEC/Trusted Database Interpretation,TCSEC/TDI,紫皮书),将TCSEC扩展到数据库管理系统。该解释定义了数据库管理系统的设计与实现中需要满足和用以进行安全性级别评估的标准,从4个方面描述安全性级别划分的指标,即安全策略、责任、保证和文档,每个方面又细分为若干项。
    TCSEC/TDI将系统划分为4组7个等级,依次是D、C(C1、C2)、B(B1、B2、B3)、A(A1),可靠或可信程度逐渐增高。
    D级是最低的安全级别,一切不符合更高标准的系统全部归与于D组。DOS是安全标准为D级的典例,它具有操作系统的基本功能,如文件系统、进程调度等,但在安全性方面几乎没有专门的机制来保障。
    C1级的系统只提供非常初级的自主安全保护,能实现用户对数据的分离,进行自主存取控制(DAC),保护或限制权限的传播。
    C2级是安全产品的最低等级,提供受控的存取保护。比较旧的Windows 2000和Oracle 7都属于C2级的产品,这类产品往往不在其名称中突出“安全”这一特色。
    B1级系统对数据加以标记,并对标记的主题和课题实施强制存取控制(MAC)和审计(后续会解释)等安全机制,B1级以及更高级别的产品才被认为是真正意义上的安全产品。

    5、CC根据系统对安全保证要求的支持情况提出了评估保证级,分为EAL1到EAL7共7个级别,安全性依次提高。TCSEC/TDI中的C1到A1级大致对应CC中的EAL2到EAL7级别。

    4.2 数据库安全性控制

    1、计算机系统中,安全措施是分级设置的。比如在常见的数据库安全模型中,用户请求进入计算机系统时,先对用户标识进行鉴定,只有合法的用户才允许进入计算机系统;对可以进入系统的用户,DBMS还要进行存取控制,只允许各个用户执行合法操作;操作系统也具有自己的保护措施;数据库中的数据通常是加密存储的。本章只讨论数据库安全的内容,操作系统的安全保护措施不再详述;而现实中的针对逼迫说出或诱骗口令、数据中心存储设备失窃等采取的安保措施,例如机房监控、物理加锁等,也不在讨论之列。
    数据库管理系统不仅存放数据本身,还会额外存储一些安全相关的标记和信息,称为安全数据。

    2、用户身份鉴别是数据库管理系统的最外层安保措施。每个用户在系统中都有唯一的标识,一般由用户名和用户标识码(UID)组成。UID在系统的生命周期内是唯一的。系统存储了所有合法用户的标识。每次用户要求进入系统时,系统会进行核对,通过系统鉴定后,系统才向用户提供数据库管理系统的相应权限。用户身份鉴别的方法有很多种,且一个系统中往往多种方法结合以获得更强的安全性:
    【1】静态口令鉴别。
    静态口令就是常说的密码,多由用户自行设定。身份鉴别时,只需输入正确的口令,用户就能被允许使用DBMS。除非进行修改,否则这些口令不主动变化。在实际应用中,用户常常用生日、手机号、简单而有规律的数字等内容作为口令,很容易通过密码字典等方法破解。一旦被破解,非法用户就可以冒充该用户使用数据库,有时会对用户本人和数据库都造成严重后果。弱口令容易被攻击,安全性较低。
    DBMS可以通过DBA设定的规则保证口令的可靠。例如,限制口令至少要达到8个字符;要求口令同时包含数字、大小写字母、特殊符号;设定口令中数字、字母、特殊符号的最少个数;要求口令不能包含一些常见的单词;口令不允许与用户名或用户标识符相同;口令的有效期等。存储和传输过程中,应当使口令不可见,即以密文方式存储和传输。
    【2】动态口令鉴别。
    该方式安全性较高。这种方式的口令是动态变化的,每次鉴别时需要使用专门产生的新口令登录DBMS。短信验证码和QQ的手机令牌是常见的动态口令鉴别方式,每次进行身份鉴别时,用户都被要求获取新口令登录。
    【3】生物特征鉴别。
    这是一种通过生物特征验证身份的技术。生物特征是指生物体唯一具有的、可测量、可识别和可验证的稳定特性,如指纹、虹膜、掌纹,以及科幻作品中常常出现的视网膜特征。该方法使用方便,安全性较高。但是需要注意生物特征受到干扰和生物特征失窃等问题。比如:手湿时,手机的指纹识别传感器会识别出错误的指纹;记录指纹的手指受伤后指纹失效造成无法登录;使用照片、录像甚至定向干扰对人脸识别系统进行误导,以及神经网络伪造特定声纹等。
    【4】智能卡鉴别。
    智能卡是一种不可复制的硬件,内置IC,具有硬件加密功能。智能卡由用户随身携带,登录DBMS时插入专门的读卡器进行身份验证。从智能卡中读取的信息多是静态的,所以通过内存扫描和网络监听等技术仍然可能拦截到验证信息,存在一定安全隐患。我们常用的交通卡、学生卡、电话卡、身份证等都属于智能卡。
    实际应用中,常常需要采取多种方式结合的形式来验证身份。例如:某企业位于某市的某机密性数据中心的DBMS在登录时需要验证动态口令、人脸、指纹、声纹,且动态口令由专门的便携式设备和需要访问数据库的具有授权的特定部门各自给出,还需要在摄像设备前按要求做出若干个随机的动作,并复述随机的语句或回答随机问题。全部验证通过后,才可以登录DBMS。

    3、数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未授权人员无法接近数据。这主要通过数据库系统的存取控制机制实现。存取控制机制主要包括定义用户权限和合法权限检查两部分。
    (1)定义用户权限,并将用户权限等级到数据字典中
    用户对某个数据对象的操作权力称为权限。某个用户具有何种权限与其说是技术问题不如说是管理和政策问题。DBMS要保证这些决定的执行。为此,DBMS必须提供适当的语言来定义用户权限。这些定义经过编译后存储在数据字典中,被称为安全规则或授权规则。
    (2)合法权限检查
    用户发出存取请求后,DBMS查找数据字典,根据安全规则进行合法权限检查。若用户的操作请求超出合法范围,拒绝操作。
    定义用户权限和合法权限检查这两个机制一起组成了DBMS的存取控制子系统。

    4、存取控制分为自主存取控制(Discretionary Access Control,DAC)和强制存取控制(Mandatory Access Control,MAC)。自主存取控制方法中,用户对不同的数据库对象一般具有不同的存取权限,不同用户对同一对象一般也具有不同的存取权限。用户有时还可以将已有权限转授给其他用户。大型DBMS都支持自主存取控制。SQL的GRANT和REVOKE语句分别控制权限的授予和收回。由于各平台的SQL语法具有较大不同,接下来关于SQL语法的内容都不会详细地写入归纳梳理中,大家应根据平台的不同而采用对应的语法。后续我会补充一些练习题的题解(平台以SQL Server为主),读者可根据习题中的SQL语句来进行学习。
    用户权限由两个要素组成:数据库对象和操作类型。定义一个用户对一个对象的存取权限,必须要定义这两个要素。定义权限称为授权(authorization)。关系数据库系统中,存取控制的对象不仅有数据本身,还有数据库模式(模式、基本表、视图、索引等)。

    列权限包括SELECT、REFERENCES、INSERT、UPDATE等,含义与表权限类似。对列的UPDATE权限指对表中某一列的值可以修改。而且,即使拥有了这个权限,仍然需要遵守创建表时定义的主码等其它约束。列的INSERT权限指用户被允许插入元组。对插入的元组,授权用户可以插入指定值,其它列为空或默认值。主码的INSERT权限一定要被授予用户,否则该用户无法插入元组。在具体的实现中,比如通过某个GUI进行插入操作时,即使用户不能指定主码,在最终对数据库执行插入操作时也要用到主码的修改权限,主码可以由系统给出。没有对主码的修改权限,插入会被拒绝。

    5、GRANT语句将指定对象的特定权限授予指定用户。发出该语句的可以是DBA也可以是该对象的创建者(owner),有时还可以是已经拥有该权限的用户。接受权限的用户可以是一人或多人,也可以是全体(PUBLIC)。
    SQL标准不允许循环授权,即被授权者不能把权限再授予最开始的授权者。但SQL Server允许循环授权。
    REVOKE语句收回已经授予的权限,由DBA或其他授权者发出该指令。大多时候,授予出的权利都应该及时收回。比如说,学生只可以在某个特定时间段进行选课。该时间段结束后,学校的数据库的授权人员将学生全体的修改选课数据的权限收回。
    用户可以自主决定将数据的存取权限授予何人,决定是否允许被授权者将该权限继续授予其它人。这样的存取控制称为自主存取控制。生活中类似的例子有:教务处主任让某老师对学生正陆续上交的一批文件进行盖章,而该老师在一日下午临时因公出差,将章交给了班长帮忙盖印。

    6、较高权限的数据库用户,比如DBA,有权为数据库创建新用户。但是创建用户的CREATE USER语句不是SQL标准,各个数据库产品实现相关功能的语句也相去甚远。这部分功能的实现请大家自行了解。

    7、数据库角色是数据库中具有一类权限的集合的对象。可以为一组具有相同权限的用户创建一个角色,然后使用角色来批量管理这一批用户的数据库权限,简化授权过程。CREATE ROLE语句用于创建角色,GRANT和REVOKE对角色也适用。使用时,先创建角色,然后将该角色授予一定数量的用户。

    8、自主存取控制(DAC)通过授权机制有效控制敏感数据的存取。但用户对数据的存取权限是自主的,所以用户可以自由决定将数据的存储权限和该权限的授权权限授予何人。在这种授权机制下,可能存在数据的“无意泄露”。例如:甲将某些数据的存取权限授予乙,初衷可能是仅允许乙本人修改这些数据。但仅含DAC机制时,甲的这个要求并不能得到保证,因为乙获得权限后可以立即将数据备份到自己的数据库中,就可以在不征得甲的同意的前提下传播副本。造成这个问题的根本原因在于DAC机制仅仅对数据的存取权限进行控制,而数据本身并无安全标记。
    要解决这个问题,就需要对系统控制下的所有主客体实施强制存取控制(MAC)策略。该策略是指:为了保障更高的安全性,按TDI/TCSEC中安全策略的要求采取的强制存取检查手段。这不是用户能直接感知或控制的。MAC适用于对数据有严格而固定的密级分类的系统,如公安或部队的计算机系统。
    MAC中,DBMS管理的全部实体分主体和客体两大类。主体是系统中的活动实体,包括DBMS管理的实际用户,也包含涉及用户的各个进程。客体是系统中的被动实体,受主体操纵,包括文件、基本表、索引、视图等。对每个实体,DBMS指派一个敏感度标记。
    敏感度标记分为若干级别:绝密(Top Secret,TS)、机密(Secret,S)、可信(Confidential,C)、公开(Public,P)等。密级由高到低的次序为TS≥S≥C≥P。主体和客体的敏感度标记分别称为许可证级别(clearance level)、密级(classification level)。MAC机制通过对比主客体的敏感度标记,确定主体是否能存取客体。
    某用户以特定标记注册后,系统要求它对任何客体的存取必须遵循如下规则:
    【1】仅主体的许可证级别≥客体的密级时,主体方可读取相应客体。
    【2】仅主体的许可证级别≤客体的密级时,主体方可写入相应客体。
    规则【1】是显然的。至于为何确立规则【2】,一种解释是:按照此规则,用户可在写入数据后将数据赋予高于自己的许可证级别的密级。这样数据被写入后即使自己也无法再读取。如果不遵循规则【2】,就可能将数据密级从高流向低,造成泄密。例如:某TS密级的“内鬼”主体将TS密级的数据恶意降低为P,然后写入数据。如此一来,不但数据被恶意破坏,而且大家都可以读到数据的全部内容,绝密的数据就这样被公开。
    事实上密级高的主体一般都不亲自去管理涉密数据。比如说:企业的CEO委派专门的员工来负责将商业机密写入数据库,CEO只能通过数据库看到这些高密级的数据而不能改变数据内容,也不能擅自降低密级。即使CEO希望修改数据,也无法在数据库中直接动作,而是需要通知责任人进行改动。再比如:学生的成绩只有教务秘书能修改,院长和校长只能查看学生的成绩而不能修改。即便要主张修改成绩,也不能在数据库直接操作,而是通过教务秘书进行修改。
    MAC与DAC配合,令其余的低密级主体也不可以读写涉密数据。如果指派的低密级的责任主体蓄意破坏或泄露涉密数据,应追查直接作案者和相关负责人的责任(也就是说高层有机会甩锅)。为了防止非法主体擅自侵入并盗取、毁坏机密数据,其它方面也要做好把关,比如限制非法用户的访问。可见,规则【2】一定程度上限制了高密级(高权力)人员的失当决策造成的涉密数据的损毁,但是需要加强其它方面的措施来防止未授权的低密级主体读写数据。
    MAC对数据本身进行密级标记,无论数据如何复制,标记都同时复制,与数据密不可分。符合密级要求的用户才可以操纵数据,提高了更高级别的安全性。较高安全级别的保护要包含较低级别的所有保护,因此实现MAC之前应当务必确保实现DAC。也就是说主体想要读写涉密数据时,首先需要通过DAC机制的检查(获得权限),通过以后再接受MAC机制的检查(密级匹配),只有两个检查都通过了,才被正式允许读写机密。

    4.3 视图机制

    1、为不同用户定义不同的视图,可以将数据对象的可见性限制在一定范围内。意即,通过视图机制把涉密数据对无权存取的用户隐藏,从而对数据提供一定的安全保护。










    展开全文
  • 文章目录数据库安全问题数据库安全性概述数据库的不安全因素1.非授权用户对数据库的恶意存取和破坏2.数据库中重要或敏感的数据被泄露3.安全环境的脆弱性安全标准简介TCSEC/TDI安全性能的指标 数据库安全问题 有...
  • 【数据库系统设计】数据库安全性

    千次阅读 2020-04-04 22:46:24
    数据库安全性4.1 数据库安全性概述4.1.1 数据库的不安全因素4.2 数据库安全性控制4.2.1 用户身份鉴别4.2.2 存取控制4.2.3 自主存取控制方法4.2.4 授权:授予与回收4.2.5 数据库角色4.2.6 强制存取控制方法4.3 视图...

    问题的提出

    • 数据库的一大特点是数据可以共享
    • 数据共享必然带来数据库的安全性问题
    • 数据库系统中的数据共享不能是无条件的共享 => 数据库安全性
      例: 军事秘密、国家机密、新产品实验数据、市场需求分析、市场营销策略、销售计划、客户档案、医疗档案、银行储蓄数据

    数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏

    系统安全保护措施是否有效是数据库系统主要的性能指标之一。

    4.1 数据库安全性概述

    4.1.1 数据库的不安全因素

    • 非授权用户对数据库的恶意存取和破坏

      • 一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
      • 数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。
    • 数据库中重要或敏感的数据被泄露

      • 黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。
      • 数据库管理系统提供的主要技术有强制存取控制、数据加密存储和加密传输等。
      • 审计日志分析
    • 安全环境的脆弱性

      • 数据库的安全性与计算机系统的安全性紧密联系
      • 计算机硬件、操作系统、网络系统等的安全性
      • 建立一套可信(Trusted)计算机系统的概念和标准

    4.2 数据库安全性控制

    在这里插入图片描述

    • 系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统
    • 数据库管理系统进行存取控制,只允许用户执行合法操作
    • 操作系统有自己的保护措施
    • 数据以密码形式存储到数据库中

    数据库安全性控制的常用方法:

    • 用户身份鉴别
    • 存取控制(考试只考这个)
    • 视图
    • 审计
    • 数据加密

    在这里插入图片描述
    DBMS对提出SQL访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统。
    在SQL处理层进行自主存取控制和强制存取控制,进一步可以进行推理控制。
    对用户访问行为和系统关键操作进行审计,对异常用户行为进行简单入侵检测。

    4.2.1 用户身份鉴别

    用户身份鉴别(Identification & Authentication)

    • 系统提供的最外层安全保护措施
    • 用户标识:由用户名和用户标识号组成
      (用户标识号在系统整个生命周期内唯一)

    用户身份鉴别的方法

    (1) 静态口令鉴别

    • 静态口令一般由用户自己设定,这些口令是静态不变的

    (2) 动态口令鉴别

    • 口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法

    (3) 智能卡鉴别

    • 智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能

    (4) 生物特征鉴别

    • 通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等

    4.2.2 存取控制

    存取控制机制组成:

    • 定义用户权限,并将用户权限登记到数据字典中
      • 用户对某一数据对象的操作权力称为权限
      • DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则
    • 合法权限检查
      • 用户发出存取数据库操作请求
      • DBMS查找数据字典,进行合法权限检查

    用户权限定义和合法权检查机制一起组成了DBMS的存取控制子系统。

    4.2.3 自主存取控制方法

    自主存取控制(Discretionary Access Control ,简称DAC

    • 用户对不同的数据对象有不同的存取权限
    • 不同的用户对同一对象也有不同的权限
    • 用户可‘自主’决定将其拥有的存取权限转授给其他用户

    通过 SQL 的 GRANT语句和REVOKE语句实现
    在这里插入图片描述

    4.2.4 授权:授予与回收

    权限授予:GRANT

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

    GRANT <权限>[,<权限>]...
    ON <对象类型> <对象名>[,<对象类型> <对象名>]TO <用户>[,<用户>]...
    [WITH GRANT OPTION];
    

    发出GRANT

    • 数据库管理员
    • 数据库对象创建者(即属主Owner)
    • 拥有该权限、并能将该权限转授出去的用户

    按受权限的用户

    • 一个或多个具体用户
    • PUBLIC(即全体用户)

    [例4.1]:把查询Student表权限授给用户U1
    (将一种权限授予一个用户)

    GRANT SELECT    
    ON TABLE Student   
    TO U1; 
    

    [例4.2]:把对Student表和Course表的全部权限授予用户U2和U3
    (一次向多个用户传播多种同类对象的权限。)

    GRANT ALL PRIVILEGES
    ON TABLE Student, Course
    TO U2, U3;
    

    [例4.3]:把对表SC的查询权限授予所有用户

    GRANT SELECT
    ON TABLE SC
    TO PUBLIC;
    

    [例4.4]:把查询Student表和修改学生学号的权限授给用户U4
    (一次完成了对基本表和属性列这些不同对象的授权)
    对属性列的授权时必须明确指出相应属性列名

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

    [例4.5]:把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
    方法一:

    GRANT INSERT
    ON TABLE SC
    TO U5
    WITH GRANT OPTION; #允许他再将此权限授予其他用户
    

    执行该语句后,U5不仅拥有了对表SC的INSERT权限,还可以传播此权限:

    [例4.6]

    GRANT INSERT
    ON TABLE SC
    TO U6
    WITH GRANT OPTION;
    

    同样U6还可以将此权限授予U7。

    [例4.7]

    GRANT INSERT
    ON TABLE SC
    TO U7;
    

    但U7不能再传播此权限。

    权限回收:REVOKE

    授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回。

    REVOKE <权限>[,<权限>]...
    ON <对象类型> <对象名>[,<对象类型><对象名>]FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
    # CASCADE:级联回收 
    # RESTRICT:受限回收
    

    [例4.8] 把用户U4修改学生学号的权限收回

    REVOKE UPDATE(Sno)
    ON TABLE Student
    FROM U4;
    

    [例4.9] 收回所有用户对表SC的查询权限

    REVOKE SELECT
    ON TABLE SC
    FROM PUBLIC;
    

    [例4.10] 把用户U5对SC表的INSERT权限收回

    REVOKE INSERT
    ON TABLE SC
    FROM U5 CASCADE ;
    

    如果系统缺省值为RESTRICT,回收U5的INSERT权限时应该使用CASCADE,否则拒绝执行该语句

    如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限

    执行例4.8~4.10语句后学生-课程数据库中的用户权限定义表:
    在这里插入图片描述

    创建数据库模式的权限

    在这里插入图片描述
    模式、基本表、视图、索引是由数据库管理员在创建用户时实现
    基本表和视图、属性列是由GRANT/REVOKE决定的。

    CREATE USER语句格式:

    CREATE USER <username>
    [WITH][DBA|RESOURCE|CONNECT];
    

    注:CREATE USER不是SQL标准,各个系统的实现相差甚远。
    在这里插入图片描述

    4.2.5 数据库角色

    如果要对多个用户赋予相同的权限,下面操作会很麻烦;

    GRANT SELECT, UPDATE, INSERT
    ON TABLE Student
    TO U1, U2;
    GRANT SELECT, UPDATE(Ccredit)
    ON TABLE Course
    TO U1, U2;
    GRANT SELECT, INSERT
    ON TABLE SC
    TO U1, U2;
    ##########################
    GRANT SELECT, UPDATE, INSERT
    ON TABLE Student
    TO U3;
    GRANT SELECT, UPDATE(Ccredit)
    ON TABLE Course
    TO U3;
    GRANT SELECT, INSERT
    ON TABLE SC
    TO U3;
    

    什么是数据库角色

    数据库角色:被命名的一组与数据库操作相关的权限

    权限

    • 角色是权限的集合
    • 可以为一组具有相同权限的用户创建一个角色
    • 简化授权的过程

    使用角色来管理数据库权限,可以简化授权和回收的过程。

    使用角色管理数据库权限

    创建角色:

    CREATE ROLE <角色名>
    

    给角色授权:

    GRANT <权限>[,<权限>]ON <对象类型>对象名
    TO <角色>[,<角色>]

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

    GRANT <角色1>[,<角色2>]TO <角色3>[,<用户1>][WITH ADMIN OPTION]
    

    一个角色的权限:直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限指定WITH ADMIN OPTION,则获得权限的角色或用户还可以把这种权限授予其他角色

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

    角色权限的收回:

    REVOKE <权限>[,<权限>]ON <对象类型> <对象名>
    FROM <角色>[,<角色>]

    用户可以回收角色的权限,从而修改角色拥有的权限

    • REVOKE执行者是
      • 角色的创建者
    • 拥有在这个(些)角色上的ADMIN OPTION

    [例4.11] 通过角色来实现权限管理。
    步骤如下:
    (1)首先创建一个角色 R1

    CREATE ROLE R1;
    

    (2)然后使用GRANT语句,使角色R1拥有Student表的SELECTUPDATEINSERT权限

    GRANT SELECT, UPDATE, INSERT
    ON TABLE Student
    TO R1;
    

    (3)将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限

    GRANT R1
    TO 王平,张明,赵玲;
    

    (4)可以一次性通过R1来回收王平的这3个权限

    REVOKE R1
    FROM 王平;
    

    [例4.12] 增加角色的权限

    GRANT DELETE
    ON TABLE Student
    TO R1;
    

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

    [例4.13] 减少角色的权限

    REVOKE SELECT
    ON TABLE Student
    FROM R1;
    

    使R1减少了SELECT权限。

    4.2.6 强制存取控制方法

    自主存取控制缺点:

    • 可能存在数据的“无意泄露”
      在这里插入图片描述

    强制存取控制(MAC)

    • 保证更高程度的安全性
    • 用户不能直接感知或进行控制
    • 适用于对数据有严格而固定密级分类的部门
      • 军事部门
      • 政府部门

    在强制存取控制中,数据库管理系统所管理的全部实体被分为主体客体两大类

    主体是系统中的活动实体

    • 数据库管理系统所管理的实际用户
    • 代表用户的各进程

    客体是系统中的被动实体,受主体操纵

    • 文件、基本表、索引、视图

    敏感度标记(Label)

    • 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
    • 敏感度标记分成若干级别
      • 绝密(Top Secret,TS)
      • 机密(Secret,S)
      • 可信(Confidential,C)
      • 公开(Public,P)
      • TS >= S >= C >= P

    主体的敏感度标记称为许可证级别(Clearance Level)
    客体的敏感度标记称为密级(Classification Level)

    强制存取控制规则

    1. 仅当主体的许可证级别大于或等于客体的密级时,该主体才能取相应的客体在这里插入图片描述
    2. 仅当主体的许可证级别小于或等于客体的密级时,该主体才能相应的客体
      在这里插入图片描述

    强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
    在这里插入图片描述

    DAC + MAC安全检查

    实现强制存取控制MAC时要首先实现自主存取控制DAC
    原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
    自主存取控制DAC与强制存取控制MAC共同构成数据库管理系统的安全机制。
    在这里插入图片描述

    小结

    数据库角色

    • 创建角色
    • 给角色授权
    • 将角色授予用户或其他角色
    • 角色权限的回收

    强制存取控制

    • 为主体的每个实例指派一个许可证级别
    • 为客体的每个实例指派一个密级
    • 通过许可证级别与密级间匹配关系进行存取控制

    4.3 视图机制

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

    授予用户查询整个表的权限:

    GRANT SELECT
    ON TABLE Student
    TO U1;
    

    授予用户查询某些列的权限:

    GRANT SELECT(Sno, Sname)
    ON TABLE Student
    TO U2;
    

    授予用户查询某些行的权限?

    • 需要用存取谓词来定义用户权限
    • 无法直接用GRANT语句实现
    • 可以用视图机制间接地实现

    [例4.14] 授权王平老师能查询计算机系学生的情况,授权系主任张明能对计算机系学生的信息进行所有操作。
    (1)先建立计算机系学生的视图CS_Student

    CREATE VIEW CS_Student
    AS
    SELECT *
    FROM Student
    WHERE Sdept='CS';
    

    (2)在视图上进一步定义存取权限

    GRANT SELECT
    ON CS_Student
    TO 王平;
    GRANT ALL PRIVILIGES
    ON CS_Student
    TO 张明;
    

    4.4 审计(Audit)

    在这里插入图片描述
    什么是审计

    • 启用一个专用的审计日志(Audit Log)
      将用户对数据库的所有操作记录在上面
    • 审计员利用审计日志
      监控数据库中的各种行为
      发现非法存取,发现潜在威胁
    • C2以上安全级别的DBMS必须具有审计功能

    小结

    实现数据库系统安全性的技术和方法

    • 用户身份鉴别
    • 存取控制技术:自主存取控制和强制存取控制
    • 视图技术
    • 审计技术
    • 数据加密:加密存储和加密传输
    展开全文
  • 数据库-数据库安全性

    千次阅读 2019-09-02 23:46:10
    这篇博客内容有些琐碎繁杂,我整理的时候有很多上课时老师没有讲的,但我自己在看的时候看了看...数据库安全性 1、数据库安全性概述 1)、数据库的不完全因素 2)、安全标准简介 2、数据库安全性控制 1)、用户...

    这篇博客内容有些琐碎繁杂,我整理的时候有很多上课时老师没有讲的,但我自己在看的时候看了看,感觉有必要再整理一下,跟考试等无关,就是多了解下关于数据库的,所以后面的理论性东西很多,大家看的时候根据目录看下有没有需要的,这篇实在有点多,我都写炸了 ( ’ - ’ *)


    目录

    数据库安全性

    1、数据库安全性概述

    1)、数据库的不完全因素

    2)、安全标准简介

    2、数据库安全性控制

    1)、用户身份鉴别

    2)、存取控制

    3)、自主存取控制方法

    4)、授权:授予与收回

    5)、数据库角色

    6)、强制存取控制方法

    3、视图机制

    4、审计

    5、数据加密

    6、其他安全性保护

     


    数据库安全性

    数据库的特点之一是由数据库管理系统提供统一的数据保护功能来保证数据的安全可靠和正确有效。数据库的数据保护主要包括数据的安全性和完整性,这里主要介绍数据库的安全性。

    1、数据库安全性概述

    数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。安全性问题不是数据库系统所独有的,所有计算机系统都存在不安全因素,只是在数据库系统中由于大量数据集中存放,而且为众多最终用户直接共享,从而使安全性问题更加突出。系统安全保护措施是否有效是数据库系统的主要技术指标之一。

    1)、数据库的不完全因素

    对数据库安全性产生威胁的因素主要有以下几方面:

    1、非授权用户对数据库的恶意存取和破坏

    一些黑客和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。

    2、数据库中重要或敏感的数据被泄露

    为防止数据泄露,数据库管理系统提供的主要技术有强制存取控制、数据加密存储和加密传输等。此外,在安全性要求较高的部门提供审计功能,通过分析审计日志,可以对潜在的威胁提前采取措施加以防范,对非授权用户的入侵行为及信息破坏情况能够进行跟踪,防止对数据库安全责任的否认。

    3、安全环境的脆弱性

    数据库的安全性与计算机系统的安全性,包括计算机硬件、操作系统、网络系统等的安全性是紧密联系的。操作系统安全的脆弱,网络协议安全保障的不足等都会造成数据库安全性的破坏。为此,在计算机安全技术方面逐步发展建立了一套可信计算机系统的概念和标准。只有建立了完善的可信标准即安全标准,才能规范和指导安全计算机系统部件的生产,较为准确地测定产品的安全性能指标,满足民用和军用的不同需要。

     

    2)、安全标准简介

    TCSEC(或DoD85)标准:由美国国防部发布,又称为桔皮书。TCSEDC/TDI (紫皮书),是将 TCSEC 扩展到数据库管理系统, TCSEC/TDI 中定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准,从四个方面来描述安全性级别划分的指标,即安全策略、责任、保证和文档。根据计算机系统对各项指标的支持情况,TCSEC /TDI 将系统划分为四组七个等级,按系统可靠或可信程度逐渐增高,如表:

    这里我就不说那么详细了,如果感兴趣的可以看这篇博客 数据库安全性总结 ,这里面比我记录的更加详细。

     

    CC 标准:国际公认的表述信息技术安全性的结构通用准则。CC 提出了目前国际上公认的表述信息技术安全性的结构,即把对信息的安全要求分为安全功能要求和安全保证要求。安全功能要求用以规范产品和系统的安全行为,安全保证要求解决如何正确有效地实施这些功能。安全功能要求和安全保证要求都以 “类-子类-组件” 的结构表述,组件是安全要求的最小构建块。

    CC 的文本由三部分组成,三个部分相互依存,缺一不可。第一部分是简介和一般模型,介绍 CC 中的有关术语、基本概念和一般模型以及与评估有关的一些框架。第二部分是安全功能要求,列出了一些类、子类和组件。由 11 大类、66 个子类和 135 个组件构成。第三个部分是安全保证要求,列出了一系列保证类、子类和组件,包括 7 大类、26 个子类和 74 个组件。

    根据系统对安全保证要求的支持情况提出了评估保证级,从 EAL1 至 EAL7 共分为 7 级,按保证程度逐渐增高,如表:

    评估保证级

    定  义

    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

    CC 的2附录部分主要介绍保护轮廓和安全目标的基本内容。这三部分的有机结合具体体现在保护轮廓和安全目标中,CC 提出的安全功能要求和安全保证要求都可以在具体的保护轮廓好安全目标中进一步细化和扩展,这种开放式的结构更适应信息安全技术的发展。CC 的具体应用也是通过保护轮廓和安全目标这两种结构来实现的

     

    2、数据库安全性控制

    在一般计算机系统中,安全措施是一级一级层层设置的,其安全模型见图:

    用户要求进入计算机系统时,系统首先根据输入的用户标识进行用户身份鉴定,只有合法的用户才准许进入计算机系统;对于已经进入系统的用户,数据库管理系统还要进行存取控制,只允许用户执行合法操作;操作系统也会有自己的保护措施;数据最后还可以以密码形式存储到数据库中。

    和数据库相关的安全性,主要包括用户身份鉴别、多层存取控制、审计、视图和数据加密等技术。下面是数据库安全保护的一个存取控制流程图:

    首先,数据库管理系统对提出 SQL 访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统;然后在 SQL 处理层进行自助存取控制和强制存取控制,进一步还可以进行推理控制。为监控恶意访问,可根据具体安全需求配置审计规则,对用户访问行为好系统关键操作进行审计。通过设置简单入侵检测规则,对异常用户行为进行检测和处理。在数据存储层,数据库管理系统不仅存放用户数据,还存储与安全有关的标记和信息(称为安全数据),提供存储加密功能等。

     

    1)、用户身份鉴别

    用户身份鉴别是数据库管理系统提供的最外层安全保护措施。每个用户在系统中都有一个用户标识。每个用户标识由用户名和用户标识号(UID)两部分组成。UID 在系统的整个生命周期内是唯一的。系统内部记录着所有合法用户的标识,系统鉴别是指由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供使用数据库管理系统的权限。

    用户身份鉴别的方法有很多种,而且在一个系统中往往是多种方法相结合,以获得更强的安全性。常用的用户身份鉴别方法有以下几种:

    1、静态口令鉴别

    这种方式是当前常用的鉴别方法。静态口令一般由用户自己设定,鉴别时只要按要求输入正确的口令,系统将允许用户使用数据库管理系统。这些口令是静态不变的,很容易被破解,而一旦被破解,非法用户就可以冒充该用户使用数据库。因此这种方法虽然简单,但容易被攻击,安全性较低

    2、动态口令鉴别

    它是目前较为安全的鉴别方式。这种方式的口令是动态变化的,每次鉴别时均使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法常用的方式如短信密码和动态令牌方式。与静态口令鉴别相比,这种认证方式增加了口令被窃取或破解的难度,安全性相对高一些

    3、生物特征鉴别

    它是一种通过生物特征进行认证的技术,其中,生物特征是指生物体唯一具有的,可测量、识别和验证的稳定生物特征,如指纹、虹膜和掌纹等。这种方式通过采用图像处理和模式识别等技术实现了基于生物特征的认证,与传统的口令鉴别相比,无疑产生了质的飞越,安全性较高。

    4、智能卡鉴别

    智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。智能卡由用户随身携带,登录数据库管理系统时用户将智能卡插入专用的读卡器进行身份验证。由于每次从智能卡中读取的数据是静态的,通过内存扫描或网络监听等技术还是可能截取到用户的身份验证信息,存在安全隐患。因此实际应用中一般采用个人身份识别码(PIN)和智能卡相结合的方式

     

    2)、存取控制

    数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据,这主要通过数据库系统的存取控制机制实现。

    存取控制机制主要包括定义用户权限和合法权限检查两部分。1)、定义用户权限,并将用户权限登记到数据字典中。用户对某一数据对象的操作权力称为权限,数据库管理系统的功能是保证这些决定的执行。为此,数据库管理系统必须提供适当的语言来定义用户权限,这些定义经过编译后存储在数据字典中,被称为安全规则或授权规则。2)、合法权限检查。每当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息),数据库管理系统查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。

    定义用户权限和合法权限检查机制一切组成了数据库管理系统的存取控制子系统。C2级的数据库管理系统支持自主存取控制(DAC),B1级的数据库管理系统支持强制存取控制(MAC).

    这两类方法的简单定义是:1)、在自助存取控制方法中,用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自助存取控制非常灵活;2)、在强制存取控制方法中,每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格

     

    3)、自主存取控制方法

    大型数据库管理系统都支持自主存取控制,SQL标准也对自助存取控制提供支持,这主要通过 SQL 的 grant 语句和 revoke 语句来实现。用户权限是由两个要素组成的:数据库对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据库对象上进行哪些类型的操作。在数据库系统中,定义存取权限称为授权

    在非关系数据库中,用户只能对数据进行操作,存取控制的数据库对象也仅限于数据本身。在关系数据库系统中,存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(包括数据库、基本表、视图和索引的创建等)。见下:

     

    对象类型

    对象

    操 作 类 型

    数据库

              模式

    模式

    CREATE SCHEMA

    基本表

    CREATE TABLEALTER TABLE

    视图

    CREATE VIEW

    索引

    CREATE INDEX

    数据

    基本表和视图

    SELECTINSERTUPDATEDELETEREFERENCES

    ALL PRIVILEGES

    属性列

    SELECTINSERTUPDATEREFERENCES

     

    ALL PRIVILEGES (全部操作)

    在上表中,列权限包括 SELECT、REFERENCES、INSERT、UPDATE,其含义与表权限类似。需要说明的是,对列的 UPDATE 权限是指对于表中存在的某一列的值可以修改。当然,有了这个权限后,在修改的过程中还要遵守表在创建时定义的主码及其他约束。列上的 INSERT 权限是指用户可以插入一个元组。对于插入的元组,授权用户可以插入指定的值,其他列或者为空,或者为默认值。在给用户授予列 INSERT 权限时,一定要包含主码的 INSERT 权限,否则用户的插入动作会因为主码为空而被拒绝。

     

    4)、授权:授予与收回

    SQL 中使用 grant 和 revoke 语句向用户授予或收回对数据的操作权限。grant 语句向用户授予权限,revoke 语句收回已经授予用户的权限。

    GRANT :

    GRANT 语句的一般格式为:

    grant <权限><权限>···
    
    on <对象类型><对象名>···
    
    to <用户>···
    
    [ with grant option ] ;

    其语义为:将对指定操作对象的指定操作权限授予指定的用户。发出该 GRANT 语句的可以是数据库管理员,也可以是数据库对象创建者,还可以是已经拥有该权限的用户。接受权限的用户可以是一个或多个具体用户,也可以是 public ,即全体用户

    如果指定了 with grant option 子句,则获得某种权限的用户还可以把这种权限再授予其他的用户。如果没有指定 with grant option 子句,则获得某种权限的用户只能使用该权限,不能传播该权限。

    SQL 标准允许具有 with grant option 的用户把相应权限或其子集传递授予其他用户,但不允许循环授权,即被授权者不能把权限再授回给授权者或其祖先,即:

    下面列举一些例子:

    //把查询 Student 表的权限授给用户 U1
    grant select
    on table Student
    to U1 ;
    
    //把对 Student 表和 Course 表的全部操作权限授予用户 U2 和 U3
    grant all privileges
    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 ;
    //这里实际上要授予 U4 用户的是对基本表 Student 的 select 权限和对属性列 Sno 的 update 权限。
    //对属性列授权时必须明确指出相应的属性列名
    
    //把对表 SC 中的 Sno,Cno 的 insert 权限授予 U5 用户
    grant insert (Sno,Cno)
    on SC
    to U5;
    
    //把对表 SC 的 insert 权限授予用户 U5 ,并允许将此权限再授予其他用户
    grant insert
    on table SC
    to U5
    with grant option ;
    

    由上面的例子可以看到,GRANT 语句可以一次向一个用户授权,也可以一次向多个用户授权,还可以一次传播多个同类对象的权限,甚至一次可以完成对基本表和属性列这些不同对象的权限

     

    REVOKE :

    授予用户的权限可以由数据库管理员或其他授权者使用 REVOKE 语句收回,其一般格式为:

    revoke <权限>···
    on <对象类型><对象名>···
    from <用户>···[cascade | restrict] ;

    举几个栗子(~_~):

    //把用户 U4 修改学生的权限收回
    revoke update(Sno)
    on table Student
    from U4 ;
    
    //收回所有用户对表 SC 的查询权限
    revoke select
    on table SC
    from public ;
    
    //把用户 U5 对表 SC 的 insert 权限收回
    revoke insert
    on table SC
    from U5 cascade ;
    //在收回 U5 的 insert 权限时,级联收回该用户下授予其他用户的 insert 权限。
    //这里需要说明一下:一般默认值为 cascade ,有的数据库管理系统默认值是 restrict,将自动执行级联操作。如果级联的用户还从其他用户处获得对 SC 表的 insert 权限,则他们仍具有此权限,系统只收回直接或间接从 U5 处获得的权限。

    SQL 提供了非常灵活的授权机制。数据库管理员拥有对数据库中所有对象的所有权限,并可以根据实际情况将不同的权限授予不同的用户。用户对自己建立的基本表和视图拥有全部的操作权限,并且可以用 GRANT 语句把其中某些权限授予其他用户,被授权的用户如果有 “继续授权” 的许可,还可以把获得的权限再授予其他用户。所有授予出去的权力在必要时又都可以用 REVOKE 语句收回。

    可见,用户可以 “自主” 地决定将数据的存取权限授予何人、决定是否也将 “授权” 的权限授予别人,因此称这样的存取控制是自助存取控制

     

    创建数据库模式的权限:

    GRANT 和 REVOKE 语句向用户授予或收回对数据的操作权限。对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现

    create user 语句用来创建用户,其一般格式为:

    create user <username> [ with ][ DBA | RESOURCE | CONNECT ]

    对 create user 语句说明如下:

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

    拥有 CONNECT 权限的用户不能创建新用户,不能创建模式,也不能建立基本表,只能登录数据库。由数据库管理员或其他用户授予它应有的权限,根据获得的授权情况它可以对数据库对象进行权限范围内的操作。拥有 RESOURCE 权限的用户能创建基本表和视图,成为所创建对象的属主,但不能创建模式,不能创建新的用户。数据库对象的属主可以使用 GRANT 语句把该对象上的存取权限授予其他用户。拥有 DBA 权限的用户是系统中的超级用户,可以创建新的用户、创建模式、常见基本表和视图等;DBA 拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户

    需要注意的是:create user 语句不是 SQL 标准,因此不同的关系数据库管理系统的语法和内容相差甚远。这里介绍该语句的目的是说明对于数据库模式这一类数据对象也有安全控制的需要,也是要授权的。

     

    创建登录用户:

    其一般格式为:

    create login login_name with password='' ;

    数据库用户是数据库级别上的用户,普通用户登录后只能够链接到数据库服务器上,不具有访问数据库的权限,只有成为数据库用户后才能访问此数据库。数据库用户一般都来自于服务器上已有的登录账户,让登录账户成为数据库用户的操作称为‘映射’,一个登录账户可以映射多个数据库用户。默认情况下新建的数据库中已有一个用户:dbo其删除格式为:

    drop login login_name ;

    创建数据库用户并将其映射到登录上:

    create user user_name for/from login login_name
    
    //删除数据库用户
    drop user user_name

    下面来一些完整的应用:

    //创建两个登录用户 jack,kitty,密码都为 '123456'
    create Login jack with password='123456‘
    create Login kitty with password='123456‘
    
    //创建 EDUC 的数据库用户jack_educ, kitty_educ分别映射到上述两个登录账号上
    Use educ   
    create user jack_educ for Login jack 
    create user kitty_educ for Login kitty 
    
    //建立 spj 的数据库用户 jack_spj 映射到 jack 登录账号上
    Use spj   
    create user jack_spj for Login jack
    
    
    //把对表 SC 的 insert 权限授予 E1 用户,并允许它将此权限授予其他用户
    grant insert
    on SC
    to E1
    with grant option ;
    
    //E1 用户把 SC 表的 insert 权限授予 E2,并允许它将此权限授予其他用户
    execute as user='E1';
    grant insert
    on SC
    to E2
    with grant option ;
    
    //E2 用户把 SC 表的 insert 权限授予 E3,不允许它将此权限授予其他用户
    revert 
    execute as user='E2';
    grant insert
    on SC
    to E3 ;
    
    
    

    不同的用户之间还可以彼此切换,以满足对不同用户授予不同权限的需求。

    //用管理员登录,为测试方便,可以在用户间切换:
    Use educ
    
    //1.输出当前用户:
    print user
    
    //2.转到用户jack_educ:
    execute as user=‘jack_educ'
    print user
    
    //3.转到dbo下:
    revert    print user
    // revert 表示返回上一用户,此时已经是 dbo 用户,后面的 print user 是用来显示当前用户的
    

    需要注意的是:一般用户之间无法直接切换,需要转回 dbo 用户后才可切换至其他用户。下面举一些有关用户权限的例子:

    //把对表SC的INSERT权限授予 E1 用户,并允许他再将此权限授予其他用户。
    grant insert     
    on SC     
    to E1
    with grant option;
    
    //E1 用户把对 SC 表的insert权限授权给 E2,并可以传播
    execute as user=‘E1’ 。
    grant insert     
    on SC     
    to E2
    with grant option;
    
    // E2 用户把对 SC 表的 insert 权限授权给 E3 ,不可传播。
    revert
    execute as user=‘E2’ 
    grant insert
    on SC
    to E3;
    

     

    5)、数据库角色

    数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。因此可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。在 SQL 中首先用 create role 语句来创建角色,然后用 grant 语句给角色授权用 revoke 语句收回授予角色的权限

    创建角色的 SQL 语句格式是:

    create role <角色名> ;

    刚刚创建的角色是空的,没有任何内容,可以用 grant 为角色授权

    grant  <角色1>[,<角色2>] ···
    on <对象类型> 对象名
    to <角色> [,<角色>] ···
    //数据库管理员和用户可以利用 grant 语句将权限授予某一个或几个角色

    此外,还可以将一个角色授予其他的角色或用户:

    grant <角色1> [,<角色2>]···
    to <角色3> [,<用户1>]···
    [ with admin option ]

    该语句把角色授予某用户,或授予另一个角色。这样,一个角色(例如角色3)所拥有的权限就是授予它的全部角色(例如角色1和角色2)所包含的权限的总和。授予者或是角色的创建者,或者拥有在这个角色上的 admin option ,如果指定了 with admin option 子句,则获得某种权限的角色或用户还可以把这种权限再授予其他的角色。一个角色包含的权限包括直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限

    用户可以收回角色的权限,从而修改角色拥有的权限。其格式为:

    revoke <权限> [,<权限>]···
    on <对象类型><对象名>
    from <角色1>[,<角色2>]···

    同样,revoke动作的执行者或者是角色的创建者,或者拥有在这个(些)角色上的 admin option 。下面举一些例子:

    //创建一个角色 R1
    create role R1 ;
    
    //授予角色 R1 对表 Student 的 select、update、insert 权限
    grant select,update,insert
    on table Student
    to R1 ;
    
    //将这个角色授予张三、李四、王五,使他们具有角色 R1 所包含的全部权限
    grant R1
    to 张三,李四,王五 ;
    
    //可以一次性地通过 R1 来收回张三的三个权限
    revoke R1
    from 张三
    
    //角色的权限修改 : 增加 Student 表的 delete 权限
    grant delete
    on table Student
    to R1 ;
    
    //减少角色对表 Student 的 select 权限
    revoke select
    on table Student
    from R1 ;
    
    

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

     

    6)、强制存取控制方法

    自主存取控制 ( MAC ) 能够通过授权机制有效地控制对敏感数据的存取。但是由于用户对数据的存取权限 是“自主” 的,用户可以自由地决定将数据的存取权限授予何人,以及决定是否也将“授权”的权限授予别人。在这种授权机制下,仍可能存在数据的 “无意泄露” 。例如:甲将自己权限范围内的某些数据存取权限授权给乙,甲的意图是仅允许乙本人操作这些数据,但甲的这种安全性要求并不能得到保证,因为乙一旦获得了对数据的权限,就可以将数据备份,获得自身权限内的副本,并在不征得甲同意的前提下传播副本。造成这一问题的根本原因就在于,这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记。为解决这一问题,就需要对系统控制下的所有主客体实施强制控制策略。

    所谓强制存取控制是指系统为保证更高程度的安全性,按照 TDI/TCSEC 标准中安全策略的要求所采取的强制存取检查手段。它不是用户能直接感知或进行控制的。强制存取控制适用于那些对数据有严格而固定密级分类的部门,如军事部门或政府部门

    在强制存取控制中,数据库管理系统所管理的全部实体被分为主体客体两大类。主体是系统中的活动实体,既包括数据库管理系统所管理的实际用户,也包括代表用户的各进程。客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。对于主体和客体,数据库管理系统为它们每个实例指派一个敏感度标记

    敏感度标记分成若干级别,例如绝密(TS)、机密(S)、可信(C)、公开(P)等。密级的次序是 TS>=S>=C>=P 。主体的敏感度标记为许可证级别,客体的敏感度标记称为密级强制存取控制机制就是通过对比主体的敏感度标记和客体的敏感度标记,最终确定主体是否能够存取客体

    当某一用户注册入系统时,系统要求它对任何客体的存取必须遵循如下规则1)、仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。2)、仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。规则一的意义是比较明显的,这里解释一下规则二:按照规则二,用户可以为写入的对象赋予高于自己的许可证级别的密级,这样一旦数据被写入,该用户自己也不能再读该数据对象了。如果违反了规则二,就有可能把数据的密级从高流向低,造成数据的泄露。例如:某个 TS 密级的主体把一个密级为 TS 的数据恶意地降为 P ,然后把它写回,这样原来的 TS 密级的数据大家都可以读到了,造成了 TS 密级数据的泄露。

    强制存取控制是对数据本身进行密级标记无论数据如何让复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。前面提到,较高安全性的安全保护要包含较低级别的所有保护,因此在实现强制存取控制(MAC)时要首先实现资助存取控制(DAC),即自助存取控制与强制存取控制共同构成数据库管理系统的安全机制。如下图示:

    系统首先进行自主存取控制检查,对通过自主存取控制检查的允许存取的数据库对象再由系统自动进行强制存取控制检查,只有通过强制存取控制检查的数据库对象方可存取

     

    3、视图机制

    该机制是为不同用户定义不同的视图,把数据对象限制在一定的范围内。也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护

    视图机制主要功能是提供数据独立性,并间接地实现支持存取谓词的用户权限定义。例如,在某大学中假定王平老师只能检索计算机系学生的信息,系主任张明有检索和增删计算机系学生信息的所有权限,这就要求系统能支持 “存取谓词” 的用户权限定义。

    在不直接支持存取谓词的系统中,可以先建立计算机系学生的视图 CS_Student ,然后在视图上进一步定义存取权限,如:

    //先建立视图 CS_Student
    create view CS_Student
    as
    select *
    from Student
    where Sdept='CS' ;
    
    //王平老师只能检索计算机系学生的信息
    grant select
    on CS_Student
    to 王平 ;
    
    //系主任具有检索和增删改计算机系学生信息的所有权限
    grant all privileges
    on CS_Student
    to 张明 ;

     

    4、审计

    前面的用户身份鉴别、存取控制是数据库安全保护的重要技术,但不是全部。为了使数据库管理系统达到一定的安全级别,还需要在其他方面提供相应的支持。审计功能就是数据库管理系统达到 C2 以上安全级别必不可少的一项指标

    任何系统的安全保护措施都不是完美无缺的,蓄意盗窃、破坏数据的人总是想方设法打破控制。审计功能把用户对数据库的所有操作自动记录下来放入审计日志中审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。还可以通过对审计日志分析,对潜在的威胁提前采取措施加以防范

    审计通常是很费时间和空间的,所以数据库管理系统往往都将审计设置为可选特征,允许数据库管理员根据具体应用对安全性的要求灵活地打开或关闭审计功能。审计功能主要用于安全性要求较高的部门

    可审计事件有服务器事件、系统权限、语句事件及模式对象事件,还包括用户鉴别,自主访问控制和强制访问控事件,换句话说,它能对普通和特权用户行为。各种表操作、身份鉴别、自主和强制访问控制等操作进行审计。它既能审计成功操作,也能审计失败操作。

    审计事件

    审计事件一般有多个类别,例如服务器事件(审计数据库服务器发生的事件,包含数据库服务器的启动、停止、数据库服务器配置文件的重新加载)、系统权限(对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的)、语句事件(对 SQL 语句及 DCL 语句的审计)、模式对象事件(对特定模式对象上进行的 select 或 DML 操作的审计。模式对象包括表、视图、存储过程、函数等。模式对象不包括依附于表的索引、约束、触发器、分区表等)

    审计功能

    审计功能主要包括这几方面内容:基本功能(提供多种审计查阅方式:基本的、可选的、有限的,等等),提供多套审计规则(审计规则一般在数据库初始化时设定,以方便审计员管理),提供审计分析和报表功能,审计日志管理功能(包括为防止审计员误删审计记录,审计日志必须先转储后删除;对转储的审计记录文件提供完整性和保密性保护;只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录;等等),系统提供查询审计设置及审计记录信息的专门视图(对于系统权限级别、语句级别及模式对象级别的审计记录也可通过相关的系统表直接查看)。

    AUDIT语句和 NOAUDIT 语句

    AUDIT 语句用来设置审计功能,NOAUDIT 语句则取消审计功能

    审计一般可以分为用户级审计和系统审计。用户级审计是任何用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的 SQL 操作。系统级审计只能由数据库管理员设置,用以检测成功或失败的登录要求、监测授权和收回操作以及其他数据库级权限下的操作

    举个例子:

    //对修改 SC 表结构或修改 SC 表数据的操作进行审计
    audit alter,update
    on SC ;
    
    //取消对 SC 表的一切审计
    noaudit alter,update
    on SC ;

    审计设置以及审计日志一般都存储在数据字典中必须把审计开关打开(即把系统参数 audit_trail 设为 true),才可以在系统表 SYS_AUDITTRAIL 中查看到审计信息。数据库安全审计系统提供了一种事后检查的安全机制。安全审计机制将特定用户或者特定对象相关的操作记录到系统审计日志中,作为后续对操作的查询分析和追踪的依据。通过审计机制,可以约束用户可能的恶意操作。

     

    5、数据加密

    数据加密是防止数据库数据在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据——明文变换为不可直接识别的格式——密文,从而使得不知道解密算法的人无法获知数据的内容

    数据加密主要包括存储加密和传输加密。、

    存储加密:

    对于存储加密,一般提供透明和非透明两种存储加密方式透明存储加密是内核级加密保护方式,对用户完全透明;非透明存储加密则是通过多个加密函数实现的

    透明存储加密是数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密。由于数据加密对用户透明,数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可。当对加密数据进行增、删、改、查询操作时,数据库管理系统将自动对数据进行加、解密工作。基于数据库内核的数据存储加密、解密方法性能较好,安全完备性较高

    传输加密:

    在客户/服务器结构中,数据库用户与服务器之间若采用明文方式传输数据,容易被网络恶意用户截获或篡改,存在安全隐患。因此,为保证二者之间的安全数据交换,数据库管理系统提供了传输加密功能。

    常用的传输加密方式如链路加密端到端加密。其中,链路加密对传输数据在链路层进行加密它的传输信息由报头报文两部分组成,前者是路有选择信息,而后者是传送的数据信息这种方式对报文和报头均加密。相对地,端到端加密对传输数据在发送端和接收端需要密码设备,而中间节点不需要密码设备,因此它所须密码设备数量相对较少,但这种方式不加密报头,从而容易被非法监听者发现并从中获取敏感信息。

    下面说一种基于安全套接层协议的数据库管理系统可信传输方案,采用的是一种端到端的传输加密方式。在这个方案中,通信双方协商建立可信连接,一次会话采用一个密钥传输数据在发送端加密,接收端解密,有效降低了重放攻击和恶意篡改的风险。此外,出于易用性考虑,这个方案的通信加密还对应用程序透明。它的实现思路包含以下三点:1)、确信通信双方端点的可靠性。数据库管理系统采用基于数字证书的服务器和客户端认证方式实现通信双方的可靠性确认。用户和服务器各自持有由知名数字证书认证中心或企业内建 CA 颁发的数字证书,双方在进行通信时均首先向对方提供己方证书,然后使用本地的 CA 信任列表和证书撤销列表对接收到的对方证书进行验证,以确保证书的合法性和有效性,进而保证对方确系通信的目的端。2)、协商加密算法和密钥。确认双方端点的可靠性后,通信双方协商本次会话的加密算法与密钥。在这个过程中,通信双方利用公钥基础设施方式保证了服务器和客户端的协商过程通信的安全可靠。3)、可信数据传输。在加密算法和密钥协商完成后,通信双方开始进行业务数据交换。与普通通信路径不同的是,这些业务数据在被发送之前将被用某一组特定的密钥进行加密和信息摘要计算,以密文形式在网络上传输。当业务数据被接受的时候,需用相同一组特定的密钥进行解密和摘要计算。所谓特定的密钥,是由先前通信双方磋商决定的,为且仅为双方共享,通常称之为会话密钥。第三方即使窃取传输密文,因无会话密钥也无法识别密文信息。一旦第三方对密文进行任何篡改,均将会被真实的接收方通过摘要算法识破。另外,会话密钥的生命周期仅限于本次通信,理论上每次通信所采用的会话密钥将不同,因此避免了使用固定密钥而引起的密钥存储类问题

    数据库加密使用已有的密码技术和算法对数据库中存储的数据和传输的数据进行保护。加密后数据的安全性能够进一步提高。即使攻击者获取数据源文件,也很难获取原始数据。但是,数据库加密增加了查询处理的复杂性,查询效率会受到影响。加密数据的密钥的管理和数据加密对应用程序的影响也是数据加密过程中需要考虑的问题。

     

    6、其他安全性保护

    为满足较高安全等级数据库管理系统的安全性保护要求,在自主存取控制和强制存取控制之外,还有推理控制以及数据库应用中隐蔽信道和数据隐私保护等技术。

    推理控制

    推理控制处理的是强制存取控制未解决的问题。例如,利用列的函数依赖关系,用户能从低安全等级信息推导出其无权访问的高安全等级信息,进而导致信息泄露。

    数据库推理控制用来避免用户利用其能够访问的数据推知更高密级的数据,即用户利用其被允许的多次查询的结果,结合相关的领域背景知识以及数据之间的约束,推导出其不能访问的数据。在推理控制方面,常用的方法如基于函数依赖的推理控制和基于敏感关联的推理控制等。

     

    隐蔽信道

    隐蔽通道处理内容也是强制存取控制未解决的问题。下面的例子就是利用未被强制存取控制的 SQL 执行后反馈的信息进行间接信息传递。

    通常,如果 insert 语句 对属性 unique 属性列写入重复值,则系统会报错且操作失败。那么针对 unique 约束列,高安全等级用户(发送者)可先向该列插入(或者不插入)数据,而低安全等级用户(接受者)向该列插入相同数据。如果插入失败,则表明发送者已向该列插入数据,此时二者约定发送者传输信息位为 0 ;如果插入成功,则表明发送者未向该列插入数据,此时二者约定发送者传输信息位为 1 。通过这种方式,高安全等级用户按事先约定方式主动向低安全等级用户传输信息,使得信息流从高安全等级向低安全等级流动,从而导致高安全等级敏感信息泄露。

     

    数据隐私保护

    数据隐私是控制不愿被他人知道或他人不便知道的个人数据能力。数据隐私范围很广,涉及数据管理中的数据收集、数据存储、数据处理和数据发布等各个阶段。例如,在数据存储阶段应避免非授权的用户访问个人的隐私数据。通常可以使用数据库安全技术实现这一阶段的隐私保护。如使用自主访问控制、强制访问控制和基于角色的访问控制以及数据加密等。

    在数据处理阶段,需要考虑数据推理带来的隐私数据泄露,非授权用户可能通过分析多次查询的结果,或者基于完整性约束信息,推导出其他用户的隐私数据。在数据发布阶段,应使包含隐私的数据发布结果满足特定的安全性标准,如发布的关系数据表首先不能包含原有表的候选码,同时还要考虑准标识符的影响。

    准标识符是能够唯一确定大部分记录的属性集合。在现有安全性标准中,K-匿名化标准要求每个具有相同准标识符的记录组中至少包括 k 条记录,从而控制攻击者判别隐私数据所属个体的概率。还有 1-多样化标准、t-临近标准等,从而使攻击者不能从发布数据中推导出额外的隐私数据。

    要想万无一失地保证数据库安全,使之避免遭到任何蓄意的破坏几乎是不可能的。但高度的安全措施将使蓄意的攻击者付出高昂的代价,从而迫使攻击者不得不放弃他们的破坏企图。

     

     

    展开全文
  • 《数据库》数据库安全性

    千次阅读 2018-04-15 10:21:54
    数据库安全性概述 数据库不安全因素 1.非授权用户对数据库的恶意存取和破坏 数据库管理系统提供的安全措施主要包括用户 身份鉴别、存取控制和视图等技术 2.数据库中重要或敏感的数据被泄露 数据库管理系统...
  • 数据库安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或损坏。系统安全保护措施是否有效是数据库系统的主要技术指标之一。 1. 不安全因素 非授权用户对数据库的恶意存取和破坏,预防措施:用...
  • 数据库系统概论——第四章 数据库安全性 数据库安全性:保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 系统安全保护措施是否有效是数据库系统主要的性能指标之一。 一、数据库安全安全性概论 1. 数据库...
  • 数据库安全性相关习题。

    千次阅读 2020-04-19 20:59:27
    2.举例说明对数据库安全性产生威胁的因素。 1)非授权用户恶意存储和破坏。 2)数据库中敏感或者重要的数据泄露。 3)安全环境的脆弱性。(数据库的安全性与计算机系统的安全性,包括计算机的硬件、操作系统、网络...
  • 威胁数据库安全性因素 掌握 TCSEC和CC标准的主要内容 C2级DBMS、B1级DBMS的主要特征DBMS提供的安全措施 用户身份鉴别、自主存取控制、强制存取控制技术 视图技术和审计技术 数据加密存储和加密传输 使用SQL...
  • 4.1 数据库安全性概述 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改和破坏 4.1.1 数据库的不安全因素 非授权用户对数据库的恶意存取和破坏 数据库中重要或敏感的数据被泄露 安全环境的脆弱...
  • 第四章--数据库安全性

    千次阅读 2021-04-17 22:01:26
    这节课主要讲啦数据库安全性概述和数据库安全性控制这两部分。 一、数据库安全性概述   数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改和破坏。 1.数据库的不安全因素 (1) 非授权用户对...
  • 4.1 数据库安全性概述 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 4.1.1数据库的不安全因素以及应对措施 非授权用户对数据库的恶意存储和破坏:用户身份鉴别、存取控制、视图 ...
  • 第4章-数据库安全性

    千次阅读 2020-05-06 21:20:21
    1、数据库有什么特点? 特点之一是,是由数据库管理系统提供统一的...4、对数据库安全性产生威胁的因素主要有哪几个方面? 1.非授权用户对数据库的恶意存取和破坏 数据库管理系统提供的安全措施主要包括用户身份鉴...
  • 数据库安全性

    2020-05-12 12:13:48
    数据库安全性产生威胁的因素? 非授权用户对数据库的恶意存取和破坏——措施:包括用户身份鉴别、存取控制和视图等技术 数据库中重要或敏感的数据被泄露——措施:强制存取控制、数据加密存储和加密传输等 安全...
  • 1、数据库安全性的概念 2、数据库不安全的因素 3、与数据库有关的安全性策略有哪几种?(P137) 4、在关系数据库系统中存取控制的数据对象包括哪些?操作类型包括哪些?(P141) 5、自主存取控制和强制存取控制...
  • 分析了网络数据库安全的重要,并说明了安全隐患产生的原因和目前所采取的一些安全措施.在全面地分析了网络数据库安全各种因素的基础上,提出了一个网络数据库安全的管理和实现模型.
  • 安全性推动因素 ;安全现状 美国;欧洲的安全管理规程;7;从客户的观点来看;9;Web 应用程序非常优秀;11;12;Oracle 数据库 10g = 25 年以上的安全性领导地位;安全性的最佳应用;15;16;安全性的管理方面;18;20;21;22;...
  • 影响数据库性能的常见因素

    千次阅读 2015-03-22 18:39:39
    1、影响数据库性能的常见因素: -> 读写竞争 -> 事务竞争 -> 频繁的事务处理 2、数据库需要保证数据的准确与安全,提出来事务(transactio)的概念 严格的定义:满足原子、一致、持久和隔离的操作成为事务。...
  • 虽然写这个博客主要目的是为了给我自己做一个思路记忆录,但是...4.1数据库安全性概述 4.1.1数据库的不安全因素 4.1.2安全标准简介 4.2数据库安全性控制 4.2.1用户身份鉴别 4.2.2存取控制 4.2.3自主存取控制...
  • 数据库——安全性

    千次阅读 2019-05-19 11:46:56
    一、安全性概述 1.1不安全因素 1.2安全标准简介 1.2.1 TCSEC/TDI标准 1.2.2 CC标准 1.3安全性控制 二、存取控制 2.1自主存取控制 2.1.1权限的授予和回收 2.1.2创建数据库模式的权限 2.1.3数据库角色 2.2...
  • 第四章 数据库安全性 1.数据库的不安全因素:非授权用户对数据库的恶意存取和破坏;数据库中重要或敏感数据的泄露;安全环境的脆弱性。 2.权限的授权和回收 例题1:把查询Student表的权限授权给用户U1 GRANT ...
  • 1.数据库安全性概述 数据库的安全性是指保护数据库防止不合法使用所造成的数据泄露、更改或破坏。 系统安全保护措施是否有效是数据库系统主要的性能指标之一。 数据库的不安全因素 非授权用户对数据库的恶意存取和...
  • 数据库安全性 4.1数据库安全性概述 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、破坏、更改。 数据库系统中大量数据集中存放,而且为众多终端用户直接共享,从而使安全问题更为突出。 4.1.1 ...
  • 【浅析数据库的不安全因素】分析一下数据库都有哪些不安全因素,给出实例。 (1)非授权用户对数据库的恶意存取和破坏。 一些黑客和犯罪分子在用户存取数据库时...数据库安全性与计算机系统的安全性,包括计算机硬...
  • 【吐血整理】数据库安全性

    千次阅读 多人点赞 2020-04-05 12:10:02
    目录一、数据库安全性概述二、数据库安全性控制1. 用户标识与鉴别2. 存取控制3. 自主存取控制方法4. 授权与回收5. 数据库角色6. 强制存取控制方法三、视图机制四、审计(Audit)五、数据加密六、其他安全性保护 ...
  • 数据库安全性 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 。 数据库的不安全因素 1.非授权用户对数据库的恶意存取和破坏 2.数据库中重要或敏感的数据被泄露 3.安全环境的脆弱...
  • 什么是数据库安全性

    千次阅读 2020-06-13 09:06:21
    数据库安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改和 破坏
  • 六、数据库安全性与恢复技术

    千次阅读 2021-03-11 12:23:43
    数据库安全性 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。 数据库的不安全因素 非授权用户对数据库的恶意存取和破坏 数据库中的敏感信息泄露 安全环境的脆弱性 安全标准 CC标准:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,125
精华内容 38,850
关键字:

影响数据库安全性因素