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

    万次阅读 多人点赞 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),即自主存取控制与强制存取控制共同构成数据库管理系统的安全机制。

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

    展开全文
  • IPv6的安全性

    千次阅读 2019-09-25 14:29:55
    IPv6的安全性 IPv6的优势及特点 扩展地址空间及应用。IPv6设计之初主要是解决互联网迅速发展使IPv4地址空间将被耗尽问题,以免影响整个互联网的进一步扩展。由于IPv4采用32位地址长度,大约只有43亿个地址,而...

    IPv6的安全性

    IPv6的优势及特点

    1)扩展地址空间及应用。IPv6设计之初主要是解决互联网迅速发展使IPv4地址空间将被耗尽问题,以免影响整个互联网的进一步扩展。由于IPv4采用32位地址长度,大约只有43亿个地址,而IPv6采用128位地址长度,极大地扩展了IP地址空间。

    IPv6的研发还解决了IPv4的其他多种问题,如安全性、端到端IP连接、服务质量(QoS)、多播、移动性和即插即用等功效。IPv6还对报头进行重新设计,由一个简化长度固定的基本报头和多个可选的扩展报头组成。既可加快路由速度,又能灵活地支持多种应用,便于扩展新的应用。IPv4和IPv6的报头如图所示。
    IPV4的IP报头
    在这里插入图片描述
    IPV6基本报头
    在这里插入图片描述
    2)提高网络整体性能。IPv6的数据包增大,使应用程序可用最大传输单元MTU获得更快、更可靠的数据传输,并在设计上改进选路结构,采用简化的报头定长结构和更合理的分段方法,使路由器加快数据包处理速度,从而提高了转发效率,并提高了网络的整体吞吐量等性能。

    3)加强网络安全性能。IPv6用内嵌安全机制要求强制实现IP安全协议IPSec,提供支持数据源发认证、完整性和保密性能力,同时可抗重放攻击.安全机制主要由两个扩展报头实现:认证头AH和封装安全载荷ESP。

    4)提供更好服务质量。IPv6在分组的头部中定义业务流类别字段和流标签字段两个重要参数,以提供对服务质量(QoS)的支持。业务流类别字段将IP分组的优先级分为16个等级。对于需要特殊QoS的业务,可在IP数据包中设置相应的优先级,路由器根据IP包的优先级来分别对这些数据进行不同处理。流标签用于定义任意一个传输的数据流,以便网络中各结点可对此数据进行识别与特殊处理。

    5)实现更好地组播功能。组播是一种将信息传递给已登记且计划接收该消息的主机功能,可同时给大量用户传递数据,传递过程只占用一些公共或专用带宽开销而不在整个网络广播,以减少带宽。IPv6还具有限制组播传递范围的一些特性,组播消息可被限于一特定区域、公司、位置或其他约定范围,从而减少带宽的使用并提高安全性。

    6)支持即插即用和移动性。当联网设备接入网络后,以自动配置可自动获取IP地址和必要的参数,实现即插即用,简化了网络管理,易于支持移动结点。IPv6不仅从IPv4中借鉴了很多概念和术语,还提供了移动IPv6所需的新功能。

    7)提供必选的资源预留协议(Resource Reservation Protocol,RSVP)功能,用户可在从源点到目的地的路由器上预留带宽,以便提供确保服务质量的图像和其他实时业务。

    IPv4与IPv6安全问题比较

    比较IPv4和IPv6下的安全问题,有些安全问题的原理和特征基本无变化,有的却发生很大变化。主要包括:
    1)与IPv4下的情况比较,原理和特征基本未发生变化的安全问题可划分为三类:网络层以上的安全问题;与网络层数据保密性和完整性相关的安全问题和与网络层可用性相关的安全问题。如窃听攻击、应用层攻击、中间人攻击、洪泛攻击等。

    2)网络层以上的安全问题:主要是各种应用层的攻击,其原理和特征无任何变化。

    3)网络层数据保密性和完整性相关的安全问题:主要是窃听和中间人攻击。由于IPSec没有解决大规模密钥分配和管理的难点,缺乏广泛的部署,在IPv6网络中,仍可存在相同安全问题。

    4)同网络层可用性相关安全问题:主要是指网络系统的洪泛攻击,如TCP SYN flooding攻击等。

    5)原理和特征发生明显变化的安全问题,主要4个方面:
    ① 侦测。是一种基本攻击方式,也是其他网络攻击方式的初始步骤。黑客为攻击得手,需要获得被攻击网络地址、服务、应用等尽可能多的情报。IPv4协议的子网地址空间只有28位容易被侦测,IPv6的默认子网地址空间为264位天文数字安全很多。
    ② 非授权访问。IPv6下的访问控制同IPv4下情形类似,依赖防火墙或路由器访问控制表(ACL)等控制策略,由地址、端口等信息实施控制。
    ③ 篡改分组头部和分段信息。在IPv4网络中的设备和端系统都可对分组进行分片,分片攻击通常用于两种情形:一是利用分片逃避网络监控设备,如防火墙和IDS。二是直接利用网络设备中协议栈实现的漏洞,以错误的分片分组头部信息直接对网络设备发动攻击。
    ④ 伪造源地址。IPv4网络的源地址伪造的攻击很多,如SYN Flooding、UDP Flood Smurf等攻击。对其防范主要有两类方法:一是基于事前预防的过滤类方法,如准入过滤等;二是基于事后追查的回溯类方法。实际上,这些方案都存在部署困难等缺陷,由于存在网络地址转换(NAT),使攻击后追踪更难。

    IPv6的安全机制

    1)协议安全。如上所述,在协议安全层面,IPv6全面支持认证头AH认证和封装安全有效载荷ESP扩展头。支持数据源发认证、完整性和抗重放攻击等。

    2)网络安全。IPv6安全主要体现在4个方面:
    ① 实现端到端安全。两端主机对报文IPSec封装,中间路由器实现对有IPSec扩展头IPv6报文封装传输即可实现。
    ② 提供内网安全。当内部主机与Internet其他主机通信时,可通过配置IPSec网关实现内网安全。
    ③ 由安全隧道构建安全VPN。通过IPv6的IPSec隧道实现的VPN,可在路由器之间建立IPSec安全隧道。
    ④ 以隧道嵌套实现网络安全

    3)其他安全保障。由于网络的安全威胁为多层且分布于各层之间。对物理层的安全隐患,可通过配置冗余设备、冗余线路、安全供电、保障电磁兼容环境和加强安全管理进行防护。

    移动IPv6的安全性

    (1) 移动IPv6的特性
    从IPv4到IPv6使移动IP技术发生根本性变化,IPv6的许多新特性也为结点移动性提供更好支持.IPv6组网技术极大简化网络重组,更有效促进因特网移动性。

    (2) 移动IPv6面临的安全威胁
    移动IPv6基本工作流程只针对于理想状态的互联网,并未考虑现实网络的安全问题。且移动性的引入也会带来新安全威胁,如对报文窃听、篡改和拒绝服务攻击等。因此,在移动IPv6的具体实施中须谨慎处理这些安全威胁,以免降低网络安全级别。
    移动IP主要用于无线网络,不仅要面对无线网络所有的安全威胁,还要处理由移动性带来的新安全问题,所以,移动IP相对有线网络更脆弱和复杂。

    移动IPv6的安全机制

    移动IPv6协议针对上述安全威胁,在注册消息中通过添加序列号以防范重放攻击,并在协议报文中引入时间随机数。

    对其他形式攻击,可用<移动结点,通信结点> 和 <移动结点,归属代理>之间信令消息传递进行有效防范。移动结点和归属代理之间可通过建立IPSec安全联盟,以保护信令消息和业务流量。由于移动结点归属地址和归属代理为已知,所以可以预先为移动结点和归属代理配置安全联盟,并使用IPSec AH和ESP建立安全隧道,提供数据源认证、完整性检查、数据加密和重放攻击防护。

    展开全文
  • 【数据库系统设计】数据库安全性

    千次阅读 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必须具有审计功能

    小结

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

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

    千次阅读 多人点赞 2020-04-05 12:10:02
    本文主讲 数据库的安全性,欢迎阅读~ ????目录一、数据库安全性概述二、数据库安全性控制1. 用户标识与鉴别2. 存取控制3. 自主存取控制方法4. 授权与回收5. 数据库角色6. 强制存取控制方法三、视图机制四、审计...

    本文主讲 数据库的安全性,欢迎阅读~


    前言:

    数据库的一大特点是数据共享
    数据共享必然带来数据库的安全性问题
    数据库系统中的数据共享不能是无条件的共享
    数据库的安全性:
    保护数据库以防止不合法使用所造成的数据泄露、更改或破坏
    · 系统安全保护措施是否有效是数据库系统主要的性能指标之一


    一、数据库安全性概述

    1 . 数据库的不安全因素

    非授权用户对数据库的恶意存取和破坏
    猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
    数据库中重要或敏感的数据被泄露
    黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。
    安全环境的脆弱性
    数据库安全性与计算机系统安全性紧密联系(计算机硬件、操作系统、网络等安全性)

    2 . 安全标准简介
    在这里插入图片描述
    CC(Common Criteria):2008年,CC V3.1 ISO/IEC15408-2008
    CC评估等级分为EAL1、EAL2、EAL3、EAL4、EAL5、EAL6和EAL7共七个等级,等级越高,表示通过认证需要满足的安全保证要求越多,系统的安全特性越可靠。
    国际标准化组织(International Organization for Standardization,ISO)


    二、数据库安全性控制

    非法使用数据库的情况:
    ① 编写合法程序绕过DBMS及其授权机制
    直接(或编写应用程序)执行非授权操作
    ③ 通过多次合法查询数据库从中推导出一些保密数据

    计算机系统中,安全措施是一级一级层层设置的:
    在这里插入图片描述
    用户标识鉴定用户身份,合法用户准许进入系统
    数据库管理系统还要进行存取控制,只允许用户执行合法操作
    操作系统有自己的保护措施
    数据密文形式存储到数据库中
    (ps:数据以密文形式存储在数据库中,即使前三层被攻破,最后看到的是密文的话,是比较有安全性的)

    数据库安全性控制的常用方法:
    用户标识和鉴定、存取控制、视图、审计、数据加密

    数据库管理系统安全性控制模型:
    在这里插入图片描述

    1. 用户身份鉴别

    静态口令鉴别
    静态口令一般由用户自己设定,这些口令是静态不变的(例如自己设置的各种登陆密码即静态口令)
    动态口令鉴别
    口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法(例如有的地方每次登陆需要手机短信验证,每次发的验证码就是动态口令~)
    生物特征鉴别
    通过生物特征进行认证的技术,生物特征如人脸、指纹等(现在这个技术比较普遍啦,很多智能手机上都有指纹识别和人脸识别)
    智能卡鉴别
    智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能(例如:IC银行卡,IC卡是以芯片作为介质的银行卡,与磁条卡相比,芯片卡安全性高,卡内敏感数据难以被复制)

    2. 存取控制

    存取控制机制组成:

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

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

    • 自主存取控制(DAC)
      用户对不同的数据对象有不同的存取权限
      不同的用户对同一对象也有不同的权限
      用户还可将其拥有的存取权限转授给其他用户
    • 强制存取控制(MAC)
      每一个数据对象被标以一定的密级
      每一个用户也被授予某一个级别的许可证
      对于任意一个对象,具有合法许可证的用户才可以存取

    3. 自主存取控制方法

    通过 SQL 的GRANT 语句和REVOKE 语句实现
    定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些操作
    关系数据库系统中存取控制对象:
    在这里插入图片描述
    (ps:ALL PRIVLEGES 即全部权限)

    4. 授权:授予与回收

    ① GRANT 授予

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

    WITH GRANT OPTION子句:
    指定:可以再授予
    没有指定:不能传播
    语义:将对指定操作对象的指定操作权限授予指定的用户(即写了WITH GRANT OPTION的话,TO之后的用户能继续传播相应的权限)
    — — — — — — — — — — — — — — — — — — — — — — — —
    这里举例需要用到很多用户,所以咱们先来新建几个用户
    关于如何创建登录名和用户,在查阅了大量资料和自己实践后,我写了一篇博客(做了基础的讲解和示范):SQL Server 创建登录名和用户名【详细介绍】
    这里我采用如下格式在STUDENT数据库下创建了U1~U7用户及对应的登录名:

    CREATE LOGIN U1 WITH PASSWORD = 'henry626626', DEFAULT_DATABASE = STUDENT;
    CREATE USER U1 FOR LOGIN U1;  
    

    用以下SQL语句可查看当前数据库下的所有用户:

    exec sp_helpuser;
    

    在这里插入图片描述
    好了~创建成功啦,接下来一大波例子来袭👣
    — — — — — — — — — — — — — — — — — — — — — — — —
    🌟来看例 1: 把查询Student表权限授给用户U1:

    GRANT SELECT 
    ON TABLE Student 
    TO U1;
    

    不是,这第一个例子就这么不友好吗……
    在这里插入图片描述
    这里T-SQL中是不支持上面的标准SQL的写法的,将TABLE去掉后方能正常运行:

    GRANT SELECT 
    ON Student 
    TO U1;
    

    在这里插入图片描述
    如下图查看用户U1确实被授予了查询Student表的权限:
    在这里插入图片描述
    🌟来看例 2: 把对Student表和Course表的全部权限授予用户U2和U3:

    GRANT ALL PRIVILIGES 
    ON TABLE Student, Course 
    TO U2, U3;
    
    -- 有了刚才的经验教训我去掉了TABLE
    GRANT ALL PRIVILIGES 
    ON Student, Course 
    TO U2, U3;
    

    emmm,这……(T-SQL和标准SQL要不干脆干一架算了😶)
    在这里插入图片描述
    因为提示的是"PRIVILIGES"附近有语法错误,所以我查看了SQL官方文档:GRANT (Transact-SQL),发现T-SQL中是有PRIVILEGES这个参数的,其解释是:包含此参数是为了符合 ISO 标准。 请不要更改 ALL 的行为。emm(人类迷惑行为?😅,诶,等等我的单词好像写错了,是PRIVILEGES
    然后有如下图中的报错,原来是因为ON后面只能跟一个对象,所以我将其拆分成了两个SQL语句:
    在这里插入图片描述

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

    在这里插入图片描述
    这会儿提示的是:ALL 权限已不再推荐使用,并且只保留用于兼容性目的。它并不表示对实体定义了 ALL 权限。 官方文档中对参数ALL有以下讲解,很不错👏!
    在这里插入图片描述
    很明显,这里的例子中安全对象是表Student和Course,所以授予了U2和U3相应的权限(这里以U2为例查看)
    在这里插入图片描述
    🌟来看例 3: 把对表SC的查询权限授予所有用户:

    GRANT SELECT 
    ON TABLE SC 
    TO PUBLIC;
    
    -- T-SQL如下
    GRANT SELECT 
    ON SC 
    TO PUBLIC;
    

    这里的PUBLIC即表示授权给所有的用户~
    🌟来看例 4: 把查询Student表和修改学生学号的权限授给用户U4:

    GRANT UPDATE(Sno), SELECT 
    ON TABLE Student 
    TO U4;
    
    -- T-SQL如下
    GRANT UPDATE(Sno), SELECT 
    ON Student 
    TO U4;
    

    在这里插入图片描述
    注意: 在对属性列授权时必须明确指出相应属性列名 ,如这里授予修改学生学号的权限,但是如果不加(Sno)那就成了授予修改整个表的权限了,,啥都能改,这不行哈

    🌟来看例 5: 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户

    GRANT INSERT 
    ON TABLE SC 
    TO U5
    WITH GRANT OPTION;
    
    -- T-SQL如下
    GRANT INSERT 
    ON SC 
    TO U5
    WITH GRANT OPTION;
    

    在这里插入图片描述
    加上WITH GRANT OPTION后,U5不仅拥有了对表SC的INSERT权限,还可以传播此权限

    🌟来看例 6: 使用登录名U5登录后执行如下语句(因为在一个数据库中登录名和用户名是一一对应的,所以登录U5后切换至STUDENT数据库进行如下操作实验),将权限授予给U6:
    (ps:登录名必须映射到数据库用户才能连接到数据库。 一个登录名可以作为不同用户映射到不同的数据库,但在每个数据库中只能作为一个用户进行映射

    GRANT INSERT 
    ON TABLE SC 
    TO U6
    WITH GRANT OPTION;
    
    -- T-SQL如下
    GRANT INSERT 
    ON SC 
    TO U6
    WITH GRANT OPTION;
    

    在这里插入图片描述
    🌟来看例 7: 如上面的方法,U6还可以将此权限授予U7:

    GRANT INSERT 
    ON SC 
    TO U7;
    

    因为没有WITH GRANT OPTION,所以U7不能再传播此权限!!用登录名U7登录之后执行以下语句,系统报错:无法对 对象 'SC' 执行 查找,因为它不存在,或者您没有所需的权限,显然STUDENT数据库中是有SC表的,所以原因是U7不能传播该权限
    在这里插入图片描述
    — — — — — — — — — — — — — — — — — — — — — — — —

    ② REVOKE 回收
    语句的一般格式为:

    REVOKE <权限>[,<权限>]... 
    ON <对象类型> <对象名>[,<对象类型><对象名>]FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
    

    🌟来看例 1: 把用户U4修改学生学号的权限收回:

    REVOKE UPDATE(Sno)
    ON TABLE Student 
    FROM U4;
    
    -- T-SQL如下
    REVOKE UPDATE(Sno)
    ON Student 
    FROM U4;
    

    在这里插入图片描述
    U4修改学生学号的权限UPDATE(Sno)已成功收回~
    🌟来看例 2: 收回所有用户对表SC的查询权:

    REVOKE SELECT 
    ON TABLE SC 
    FROM PUBLIC;
    
    -- T-SQL如下
    REVOKE SELECT 
    ON SC 
    FROM PUBLIC;
    

    🌟来看例 3: 把用户U5对SC表的INSERT权限收回:

    REVOKE INSERT 
    ON TABLE SC 
    FROM U5 CASCADE ;
    
    -- T-SQL如下
    REVOKE INSERT 
    ON SC 
    FROM U5 CASCADE ;
    

    因为U5还将该权限传播给了U6和U7,所以将U5的INSERT权限收回的时候应该使用CASCADE(级联收回),否则拒绝执行该语句
    如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限。如下如U6的该权限还从dbo获得,所以当收回U5授予的权限之后,他仍然具有对SC表的INSERT权限。
    在这里插入图片描述
    执行上面的SQL语句后:
    在这里插入图片描述

    5. 数据库角色

    角色(ROLE):被命名的一组与数据库操作相关的权限
    角色是权限的集合。可以为一组具有相同权限的用户创建一个角色(所以在修改权限等的操作时对角色ROLE修改即可,不用再去麻烦地对每一个用户修改)
    它的优点是:简化授权的过程
    — — — — — — — — — — — — — — — —
    1.角色的创建

    CREATE ROLE <角色名> 
    

    2.给角色授权

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

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

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

    ps:该语句把角色授予某用户或授予另一个角色,授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION(即授予者能传播该权限)
    指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色(能继续传播该权限)

    一个角色的权限:直接授予这个角色的全部权限 + 其他角色授予这个角色的全部权限(这和上面例子中用户权限可以叠加起来(来自很多用户授予)是一样的,即这里某个角色的权限可以来自很多角色)

    4.角色权限的收回

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

    用户可以回收角色的权限,从而修改角色拥有的权限
    REVOKE执行者是:①角色的创建者;②拥有在这个(些)角色上的ADMIN OPTION

    🌟来看例 1: 通过角色来实现将一组权限授予一个用户:
    步骤如下:
    1)首先创建一个角色 R1

    CREATE ROLE R1;
    

    在这里插入图片描述
    2)然后使用GRANT语句,使角色R1拥有Student表的 SELECT、UPDATE、INSERT权限

    GRANT SELECT, UPDATE, INSERT 
    ON TABLE Student 
    TO R1;
    
    -- T-SQL
    GRANT SELECT, UPDATE, INSERT 
    ON Student 
    TO R1;
    

    (ps:这里UPDATE和SELECT的权限在图中看不到,需要把滚动条拉到下面,我就不截图啦)
    在这里插入图片描述
    3)将这个角色授予夏雨,夏雪,夏冰雹。使他们具有角色R1所包含的全部权限
    (首先,需要创建夏雨,夏雪,夏冰雹玲这三个用户,因为这里只是需要用于做角色的实验,所以我就不新建登录名啦~ 能让他们能被授予权限就ok,实在想创建登录名的小伙伴看我上面讲解用户时写的就行~)
    在这里插入图片描述
    在这里插入图片描述

    GRANT R1 
    TO 夏雨, 夏雪, 夏冰雹;
    

    在这里插入图片描述
    emmm,T-SQL中不支持此写法,官方文档CREATE ROLE (Transact-SQL)中有相关介绍:
    在这里插入图片描述
    附上链接:ALTER ROLE (Transact-SQL)
    在这里插入图片描述
    所以咱们可以通过下面的SQL语句来为角色R1添加成员相当于为成员授予了角色R1拥有的权限

    ALTER ROLE R1 ADD MEMBER 夏雨;
    ALTER ROLE R1 ADD MEMBER 夏雪;
    ALTER ROLE R1 ADD MEMBER 夏冰雹;
    

    (ps:需要注意的是,一条SQL语句只能添加一个角色!!)
    在这里插入图片描述
    4) 可以一次性通过R1来回收夏雨的这3个权限

    REVOKE R1 
    FROM 夏雨;
    

    同样的因为T-SQL不支持此写法,所以我们通过删除角色成员的方式来达到回收其权限的目的

    ALTER ROLE R1 DROP MEMBER 夏雨;
    

    在这里插入图片描述
    🌟来看例 2: 角色的权限修改:

    GRANT DELETE 
    ON TABLE Student
    TO R1;
    
    -- T-SQL
    GRANT DELETE 
    ON Student
    TO R1;
    

    在这里插入图片描述
    使角色R1在原来的基础上增加了Student表的删除权限
    🌟来看例 3:

    REVOKE SELECT 
    ON TABLE Student
    FROM  R1;
    
    -- T-SQL
    REVOKE SELECT 
    ON Student
    FROM  R1;
    

    在这里插入图片描述
    使R1减少了SELECT权限
    — — — — — — — — — — — — — — — — — — — — — — — —

    6. 强制存取控制方法

    自主存取控制缺点: 可能存在数据的“无意泄露”
    原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
    (自主存取控制能够通过授权机制有效地控制其他用户对敏感数据的存取。但是由于用户对数据的存取权限是“自主”的,用户可以自由地决定将数据的存取权限授予何人、决定是否也将“授权”的权限授予别人。在这种授权机制下,仍可能存在数据的“无意泄露”)
    解决:对系统控制下的所有主客体实施强制存取控制策略

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

    在强制存取控制中,数据库管理系统所管理的全部实体被分为主体客体两大类
    · 主体是系统中的活动实体,即:数据库管理系统所管理的实际用户
    · 客体是系统中的被动实体,即:文件、基本表、索引、视图

    敏感度标记(Label): 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
    敏感度标记分成若干级别:

    绝密(Top Secret,TS)
    机密(Secret,S)
    可信(Confidential,C)
    公开(Public,P)
    TS>=S>=C>=P

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

    强制存取控制规则:
    (1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能相应的客体
    (2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能相应的客体

    简单记作:向下读,向上写

    就比如,某个TS(绝密)密级的主体把一个密级为TS的数据恶意地降为P(公开),然后把它写回。这样原来是TS密级的数据大家都可以读到了,这样就导致了TS密级数据的泄露
    另一方面,如果许可证级别大于客体的密级能写的话也很可怕,因为上级(领导)能在大家不知道的情况下随意修改,这,,,肯定是不行的
    至于为什么等于,是因为自己写的东西自己肯定也要能看到吖,不然自己写完就看不到了,写错了或是想再看看也没办法了,no way,,,


    三、视图机制

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

    视图机制间接地实现支持存取谓词的用户权限定义
    🌟来看例子: 建立计算机系学生的视图,把对该视图的SELECT权限授于夏雨,把该视图上的所有操作权限授于夏冰雹:

    -- 先建立计算机系学生的视图CS_Student
    CREATE VIEW CS_Student
    AS
    SELECT *
    FROM Student
    WHERE Sdept = 'CS';
    
    -- 在视图上进一步定义存取权限
    GRANT SELECT
    ON CS_Student  
    TO 夏雨;
    
    GRANT ALL PRIVILIGES
    ON CS_Student  
    TO 夏冰雹; 
    

    在这里插入图片描述
    在这里插入图片描述
    🙋什么是“存取谓词”?
    我的理解是,存取谓词是能直接对数据进行操作(增删改查)的谓词,需要系统能支持给用户定义相关的存取谓词的权限,在不支持存取谓词的系统中,可以先建立相关视图,然后在视图上进一步定义存取权限。
    🙋为什么要用视图间接实现,直接用基本表不可以么?
    emmm,可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内,也就是说,通过视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护(不想让他看到的数据就不定义在视图里,这相对于直接给他看基本表要安全很多)


    四、审计(Audit)

    什么是审计:

    • 审计日志(Audit Log): 将用户对数据库的所有操作记录在上面(就像记录流水账一样的)
    • 审计员利用审计日志:
      监控数据库中的各种行为
      找出非法存取数据的人、时间和内容。

    审计功能的可选性:
    · 审计很费时间和空间
    · DBA可以打开或关闭审计功能
    · 审计功能主要用于安全性要求较高的部门

    AUDIT语句和NOAUDIT语句:
    AUDIT语句:设置审计功能
    NOAUDIT语句:取消审计功能

    🌟来看例 1: 对修改SC表结构或修改SC表数据的操作进行审计:

    AUDIT ALTER, UPDATE  
    ON SC;
    

    这里T-SQL是不支持这样写的,具体写法暂时没搞明白,待弄清楚之后第一时间回来更新补充上~
    先附上官方文档:SQL Server 审核(数据库引擎),惭愧惭愧,没看明白这个官方文档😅
    🌟来看例 2: 取消对SC表的一切审计:

    NOAUDIT ALTER, UPDATE  
    ON SC;
    

    五、数据加密

    数据加密: 防止数据库中数据在存储和传输中失密的有效手段
    加密的基本思想: 根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text)
    加密方法: ①存储加密;②传输加密
    — — — — — — — — — — — — — — — — — —
    存储加密:

    • 透明存储加密
      内核级加密保护方式,对用户完全透明
      ②将数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密
      ③数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可
      内核级加密方法: 性能较好,安全完备性较高

    • 非透明存储加密:通过多个加密函数实现

    传输加密(结合计算机网络学习,我暂时还没学习相关内容,所以这里就只是写个大概,嘻嘻):

    • 链路加密
      ①在链路层进行加密
      ②传输信息由报头和报文两部分组成
      ③报文和报头均加密
    • 端到端加密
      ①在发送端加密,接收端解密
      ②只加密报文不加密报头
      ③所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息

    关于数据库安全性 部分到这里也就结束啦,感谢你耐心地阅读~😊
    如有不恰当的地方,望提出指正~
    咱们下期 ~
    在这里插入图片描述

    展开全文
  • 商用密码应用与安全性评估之(四)密码应用安全性评估实施要点商用密码应用安全性评估的...商用密码应用安全性评估的主要内容 1、 评估依据和基本原则 测评机构开展评估应当遵循商用密码管理政策和GM/T 0054-2018《信
  • 大型网站核心要素之前我们介绍了4个,今天讲讲这最后一个:安全性,从互联网诞生开始,安全威胁就一直伴随着网站的发展,各种web攻击和信息泄露也从未停止,那么我们今天就从下面这几点谈谈网站架构的安全性:网站...
  • 理解什么是线程安全性、原子性

    万次阅读 2019-12-29 11:56:30
    •原子 加锁机制 •写在前面 进程想要执行任务需要依赖线程,换句话说就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。提到多线程这里要说两个概念,就是串行和并行,搞清楚这个我们才能更好...
  • 你的NAS真的安全了么?本文将从部署、配置和使用三个方面来介绍我们在使用的NAS的过程中怎样才能够保证NAS的使用安全、如何才能确保自己的数据安全。文末有NAS官方关于NAS被攻击后的数据安全策略建议。
  • 信息安全性与保密性

    千次阅读 2019-08-20 17:37:27
    安全性与保密性设计 信息安全,具体地说就是保证信息的保密性、完整性、真实性、占有性。 保密性是指系统中的信息必须按照该信息拥有者的要求保证一定的秘密性,不会被未经许可的第三方非法获取。系统必须阻止一切...
  • 实验三 数据库的安全性和完整性控制 实验教室 913 实验日期 2018年10月22日 学 号 2016214220 姓 名 ** 专.....
  • 软件系统安全性测试列表

    千次阅读 2019-06-16 14:55:47
    随着互联网应用的普及,软件安全性越来越重要,今天我整理了一个软件安全测试的列表,请大家仔细看看,看看有没有漏项,多给力,给予补充,在此谢过! 1. 系统安全性及测试方法 软件系统的安全性 系统安全规范与...
  • 银行家算法和安全性算法笔记

    万次阅读 多人点赞 2018-07-01 15:57:55
    condition: 资源请求合法检查 op1=&amp;amp;gt;operation: 进行尝试的资源分配 op2=&amp;amp;gt;operation: 不合法处理 st-&amp;amp;gt;cond1 cond1(no)-&amp;amp;gt;op2
  • 5G的影响、安全性以及现状

    千次阅读 2019-06-12 14:49:57
    5G消灭了基于手机用户识别码(IMSI)的用户非法定位威胁,保障了用户数据的完整性,降低了漫游区欺骗风险,增强了运营商之间链接的安全性,提升了物联网抵御DDoS攻击的能力……可以说是带来了很多正面的、积极的影响...
  • 一个密码系统的安全性主要与两个方面的因素有关。 (1)一个是所使用密码算法本身的保密强度。密码算法的保密强度取决于密码设计水平、破译技术等。可以说一个密码系统所使用密码算法的保密强度是该系统安全性的...
  • 数据库安全性概述及TCSEC/TDI安全性能指标

    千次阅读 多人点赞 2020-04-23 11:34:06
    文章目录数据库安全问题数据库安全性概述数据库的不安全因素1.非授权用户对数据库的恶意存取和破坏2.数据库中重要或敏感的数据被泄露3.安全环境的脆弱性安全标准简介TCSEC/TDI安全性能的指标 数据库安全问题 有...
  • API接口安全性设计

    千次阅读 2018-10-28 13:21:09
    接口的安全性主要围绕token、timestamp和sign三个机制展开设计,保证接口的数据不会被篡改和重复调用,下面具体来看: Token授权机制: 用户使用用户名密码登录后服务器给客户端返回一个Token(通常是UUID),并将...
  • 数据的安全性: 保护数据库以防止不合法的使用所造成的数据泄露、更改、或破坏。 ** 数据库的不安全因素: ** 非授权用户对数据库的恶意存取和破坏。 数据库中重要或敏感的数据被泄露。 安全环境的脆弱性。 数据...
  • 数据传输安全性保证

    千次阅读 2018-07-07 17:43:42
    数据传输过程中,安全性十分重要,尤其是对于一些敏感的用户信息,其安全性保证更应当被重视。 现代软件开发中,无论是基于敏捷式的软件开发,或者基于前后端分离的软件开发,都离不开提供对外接口,而请求这些接口...
  • 密码应用安全性评估包括两部分内容:信息系统规划阶段对密码应用方案的评审/评估和建设完成后对信息系统开展的实际测评。 1、 设计原则 密码应用方案设计是信息系统密码应用的起点,它直接决定着信息系统的密码应用...
  • 软件安全性测试

    万次阅读 2017-07-08 23:18:44
    软件安全性是一个广泛而复杂的主题,每一个新的软件总可能有完全不符合所有已知模式的新型安全性缺陷出现。要避免因安全性缺陷问题受各种可能类型的攻击是不切实际的。在软件安全测试时,运用一组好的原则来避免不...
  • 安全性分析之“面向全场景的鸿蒙系统”

    万次阅读 多人点赞 2020-10-19 13:24:02
    调用数据的设备越多,自然面临的安全风险就越大。在提供优质服务与绝佳用户体验的同时,安全与隐私保护问题也就成了用户无法忽视的焦点。面向全场景的鸿蒙系统在现实中都存在哪些挑战呢?面对这些挑战,采用分布式...
  • 【安全测试】接口安全性

    千次阅读 2019-05-04 21:33:49
    之前这边负责的项目后来被主管说接口这里有些风险,特此参考学习接口的安全性测试点。 一.接口防刷 1.为什么会有人要刷接口? 牟利:黄牛在 12306 网上抢票再倒卖。 恶意攻击竞争对手:如短信接口被请求一次,会...
  • 系统开发和安全性分析

    千次阅读 2017-12-03 17:57:49
    1. 术语 安全性(Safety):风险可接受的状态 损害(harm):人身伤害,财产损失或对环境造成的危害 故障(fault):项目或系统的一个非预期异常,故障的发生可能导致失效 失效(failure):功能缺失,或者系统或系统某...
  • 记一次启动win10设备安全性经历

    千次阅读 2020-07-04 18:36:53
    最近新装的电脑,装完win10后打开win安全中心发现‘设备安全性’下面出现如下提示: 所以尝试去网上搜索如何打开这些选项。点开‘了解更多信息’后,再打开的页面中找到下面信息: 如图所说,想要打开‘设备...
  • 怎么保证系统的安全性

    万次阅读 2018-10-13 15:19:51
    最近在完善一个后台管理系统,上级的需求是安全,安全,再...本系统用户密码采用MD5加密,这是一种安全性非常高的加密算法,是普遍使用广泛应用于文件验证,银行密码加密等领域,由于这种加密的不可逆性,在使用1...
  • 论信息系统的安全性与保密性设计

    千次阅读 2017-12-30 13:34:54
    论信息系统的安全性与保密性设计 摘要: 2015年初,我所在的公司承担了某集团公司的移动信息化开放平台的建设工作。我在该项目中担任系统架构设计师的职务,主要负责设计平台系统架构和安全体系架构。该平台以移动...
  • 实验四 数据库的安全性

    万次阅读 多人点赞 2018-04-30 18:39:17
    实验内容 1、修改服务器的身份验证模式为“SQL Server和Windows身份验证模式”。 2、在服务器级别上创建二个以SQL Server身份验证为方式的登录名,登录名称分别为login_1、login_2。 create login login_1 with ...
  • 商用密码应用安全性评估,以下简称密评: Q1:运营单位怎么判定是否需要开展商用密码应用安全性评估? 1)《密码法》第二十七条 法律、行政法规和国家有关规定要求使用商用密码进行保护的关键信息基础设施,其运营者...
  • 微服务详解(七):微服务的安全性 微服务详解(八):最佳做法和一般原则 微服务详解(九):故障排除指南 微服务是我们部署在处所内或者云基础设施中的组件,微服务可以提供API或者web应用程序。 本章中将介.....
  • 一般为了安全性,token都会设置一个过期时间,在过期之后就无法请求相关接口了,这时应该怎么办呢,是直接退出登录吗? 我觉得为了更好的用户体验,应该选择手动刷新token。登录请求成功后,会返回一个token和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,284,409
精华内容 913,763
关键字:

安全性