数据库系统概论(超详解!!!)第四节 数据库安全性

问题的提出:

数据库的一大特点是数据可以共享

数据共享必然带来数据库的安全性问题

数据库系统中的数据共享不能是无条件的共享。

1.数据库的安全概述

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

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

数据库的不安全因素:

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

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

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

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

3.安全环境的脆弱性

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

TCSEC/TDI标准的基本内容:

TCSEC/TDI,从四个方面来描述安全性级别划分的指标 :安全策略、 责任 、保证、 文档

TCSEC/TDI安全级别划分

四组(division)

七个等级  D 、 C(C1,C2) 、 B(B1,B2,B3) 、 A(A1)

按系统可靠或可信程度逐渐增高

各安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护要包含较低级别的所有保护要求,同时提供更多或更完善的保护能力

D级 :将一切不符合更高标准的系统均归于D组

典型例子:DOS是安全标准为D的操作系统  。DOS在安全性方面几乎没有什么专门的机制来保障

C1级: 非常初级的自主安全保护。 能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。 现有的商业系统稍作改进即可满足。

C2级 :安全产品的最低档次 。提供受控的存取保护,将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。 达到C2级的产品在其名称中往往不突出“安全”(Security)这一特色。

典型例子:  Windows 2000  ,Oracle 7

B1级 :标记安全保护。“安全”(Security)或“可信的” (Trusted)产品。 对系统的数据加以标记,对标记的主体和客体实施强制存取控制(MAC)、审计等安全机制 。

B1级典型例子:  操作系统 :惠普公司的HP-UX BLS release 9.09+  。

数据库: Oracle公司的Trusted Oracle 7, Sybase公司的Secure SQL Server version 11.0.6。

B2级: 结构化保护。 建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC和MAC。

B3级: 安全域 。该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。

A1级: 验证设计,即提供B3级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现。

2.数据库安全性控制

1.用户身份鉴别

用户身份鉴别   (Identification &  Authentication)

系统提供的最外层安全保护措施

用户标识:由用户名和用户标识号组成(用户标识号在系统整个生命周期内唯一)

用户身份鉴别的方法

1.静态口令鉴别 :静态口令一般由用户自己设定,这些口令是静态不变的

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

3.生物特征鉴别: 通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等

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

2.存取控制

存取控制机制组成 :

定义用户权限,并将用户权限登记到数据字典中 ,用户对某一数据对象的操作权力称为权限。 DBMS提供适当的语言来定义用户权限,存放在数据字典中,称做安全规则或授权规则。

合法权限检查, 用户发出存取数据库操作请求。 DBMS查找数据字典,进行合法权限检查

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

常用存取控制方法 :

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

 C2级 ,用户对不同的数据对象有不同的存取权限。 不同的用户对同一对象也有不同的权限 。用户还可将其拥有的存取权限转授给其他用户。

强制存取控制(Mandatory Access Control,简称 MAC)

B1级, 每一个数据对象被标以一定的密级。 每一个用户也被授予某一个级别的许可证 。对于任意一个对象,只有具有合法许可证的用户才可以存取。

3.自主存取控制方法

通过 SQL 的GRANT 语句和REVOKE

语句实现 :用户权限组成 (数据对象, 操作类型 )

定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作

定义存取权限称为授权。

关系数据库系统中存取控制对象 

4.授权:授予与回收

1.GRANT

GRANT语句的一般格式:        

GRANT <权限>[,<权限>]...        

ON <对象类型> <对象名>[,<对象类型> <对象名>]…        

TO <用户>[,<用户>]...        

[WITH GRANT OPTION];

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

发出GRANT: 数据库管理员 ,数据库对象创建者(即属主Owner), 拥有该权限的用户 。

按受权限的用户: 一个或多个具体用户 ,PUBLIC(即全体用户)  

WITH GRANT OPTION子句:

指定:可以再授予

没有指定:不能传播

注:不允许循环授权

把查询Student表权限授给用户U1

      GRANT   SELECT 
      ON    Student 
      TO   U1;

把对Student表和Course表的全部权限授予用户U2和U3
      GRANT ALL 
      ON Student
      TO U2,U3;
     
      GRANT ALL 
      ON Course 
      TO U2,U3;

把对表SC的查询权限授予所有用户

     GRANT SELECT 
     ON TABLE SC 
	  TO PUBLIC;

把查询Student表和修改学生学号的权限授给用户U4
  
	  	GRANT UPDATE(Sno), SELECT 
		ON  Student 
		TO U4;

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

把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
     
    GRANT INSERT 
    ON  SC 
    TO U5
    WITH GRANT OPTION;

传播授权:
上一例执行后,U5不仅拥有了对表SC的INSERT权限,还可以传播此权限:
             GRANT INSERT 
             ON  SC 
             TO U6
             WITH GRANT OPTION;
      同样,U6还可以将此权限授予U7:
            GRANT INSERT 
	         ON  SC 
             TO U7;
      但U7不能再传播此权限。

2.REVOKE

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

REVOKE语句的一般格式为:    

REVOKE <权限>[,<权限>]...    

ON <对象类型> <对象名>[,<对象类型><对象名>]…    

FROM <用户>[,<用户>]...[CASCADE | RESTRICT]

把用户U4修改学生学号的权限收回

		REVOKE UPDATE(Sno)
		ON  Student 
		FROM U4;

收回所有用户对表SC的查询权限

		REVOKE SELECT 
		ON  SC 
		FROM PUBLIC;
把用户U5对SC表的INSERT权限收回
		REVOKE INSERT 
		ON   SC 
		FROM U5 CASCADE ;

将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句。

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

3.创建数据库模式的权限

数据库管理员在创建用户时实现

CREATE USER语句格式 :             

CREATE  USER  <username>              

[WITH][DBA|RESOURCE|CONNECT];

注: CREATE USER不是SQL标准,各个系统的实现相差甚远

CREATE USER语句格式说明 :

只有系统的超级用户才有权创建一个新的数据库用户

新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA

如没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。

拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库

拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主。但不能创建模式,不能创建新的用户

拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户

5.数据库角色

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

1.角色的创建

CREATE  ROLE  <角色名>

2.给角色授权  

GRANT  <权限>[,<权限>]…  

ON <对象类型>对象名    

TO <角色>[,<角色>]…

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

GRANT  <角色1>[,<角色2>]…

TO  <角色3>[,<用户1>]…

[WITH ADMIN OPTION

该语句把角色授予某用户,或授予另一个角色

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

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

一个角色的权限:直接授予这个角色的全部权限加上其他角色授予这个角色的全部权

4.角色权限的收回

REVOKE <权限>[,<权限>]…

ON <对象类型> <对象名>

FROM <角色>[,<角色>]…

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

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

通过角色来实现将一组权限授予一个用户。
步骤如下:
(1)首先创建一个角色 R1
    	  CREATE  ROLE  R1;
(2)然后使用GRANT语句,使角色R1拥有Student表的	SELECT、UPDATE、INSERT权限
       GRANT SELECT, UPDATE, INSERT 
    	 ON  Student 
    	 TO R1;
(3)将这个角色授予u1,u2,u3。使他们具有角色R1所包含的全部权限
    alter role r1 add member u1
    exec sp_addrolemember  u1,u2
(4) 可以一次性通过R1来回收u1的这3个权限
     	alter role r1 drop member u1
          exec sp_droprolemember  u1,u2

角色的权限修改
        GRANT DELETE 
        ON  Student
        TO R1;
   
使角色R1在原来的基础上增加了Student表的DELETE 权限

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)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体

强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。

实现强制存取控制时要首先实现自主存取控制

原因:较高安全性级别提供的安全保护要包含较低级别的所有保护

自主存取控制与强制存取控制共同构成数据库管理系统的安全机制

3.视图机制

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

间接地实现支持存取谓词的用户权限定义

建立计算机系学生的视图,把对该视图的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  张明; 

4.审计(Audit)

什么是审计 :

启用一个专用的审计日志(Audit Log)    

将用户对数据库的所有操作记录在上面 。审计员利用审计日志 ,监控数据库中的各种行为,找出非法存取数据的人、时间和内容。 C2以上安全级别的DBMS必须具有审计功能

审计功能的可选性 :

审计很费时间和空间 。DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能 。审计功能主要用于安全性要求较高的部门。

1.审计事件

服务器事件: 审计数据库服务器发生的事件

系统权限 :对系统拥有的结构或模式对象进行操作的审计 。要求该操作的权限是通过系统权限获得的。

语句事件: 对SQL语句,如DDL、DML、DQL及DCL语句的审计 。

模式对象事件 :对特定模式对象上进行的SELECT或DML操作的审计。

2.审计功能

基本功能 :提供多种审计查阅方式 。

多套审计规则:一般在初始化设定。

提供审计分析和报表功能

 审计日志管理功能: 防止审计员误删审计记录,审计日志必须先转储后删除。 对转储的审计记录文件提供完整性和保密性保护。 只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等。 提供查询审计设置及审计记录信息的专门视图。

3. AUDIT语句和NOAUDIT语句

AUDIT语句:设置审计功能

NOAUDIT语句:取消审计功能

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

系统级审计: 只能由数据库管理员设置 。监测成功或失败的登录要求、监测授权和收回操作以及其他数据库级权限下的操作。

对修改SC表结构或修改SC表数据的操作进行审计
           AUDIT ALTER,UPDATE  
           ON  SC;

取消对SC表的一切审计
           NOAUDIT  ALTER,UPDATE  
           ON  SC;

5.数据加密

数据加密 :

防止数据库中数据在存储和传输中失密的有效手段。

加密的基本思想 :根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式­—密文(Cipher text )

加密方法: 存储加密, 传输加密。

存储加密:

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

内核级加密方法: 性能较好,安全完备性较高 。非透明存储加密 。通过多个加密函数实现。

传输加密:

链路加密: 在链路层进行加密。传输信息由报头和报文两部分组成。 报文和报头均加密 。

端到端加密: 在发送端加密,接收端解密 。只加密报文不加密报头 。所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息。

6.其他安全性保护

推理控制: 处理强制存取控制未解决的问题 。避免用户利用能够访问的数据推知更高密级的数据 常用方法。 基于函数依赖的推理控制 。基于敏感关联的推理控制。

数据隐私保护: 描述个人控制其不愿他人知道或他人不便知道的个人数据的能力 。

范围很广:数据收集、数据存储、数据处理和数据发布等各个阶段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/541682.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Xcode 15.0 新 #Preview 预览让 SwiftUI 界面调试更加悠然自得

概览 从 Xcode 15 开始&#xff0c;苹果推出了新的 #Preview 宏预览机制&#xff0c;它无论从语法还是灵活性上都远远超过之前的预览方式。#Preview 不但可以实时预览 SwiftUI 视图&#xff0c;而且对 UIKit 的界面预览也是信手拈来。 想学习新 #Preview 预览的一些超实用调试…

2024年MathorCup数学建模C题物流网络分拣中心货量预测及人员排班解题文档与程序

2024年第十四届MathorCup高校数学建模挑战赛 C题 物流网络分拣中心货量预测及人员排班 原题再现&#xff1a; 电商物流网络在订单履约中由多个环节组成&#xff0c;图1是一个简化的物流网络示意图。其中&#xff0c;分拣中心作为网络的中间环节&#xff0c;需要将包按照不同流…

无人机巡检技术革命性变革光伏电站运维管理

在中国广袤的大地上&#xff0c;光伏电站如雨后春笋般崛起&#xff0c;晶体硅组件板在阳光下熠熠生辉&#xff0c;为人们带来了源源不断的绿色能源。然而&#xff0c;随着光伏产业的迅猛发展&#xff0c;电站运维管理面临着前所未有的挑战。而无人机巡检技术的引入&#xff0c;…

webpack or vite? vuex or pinia?

2022.2.18, 新建一个vue3的项目&#xff0c;过程如下&#xff1a; 目录结构如下&#xff1a; 当还在犹豫选择webpack还是vite&#xff0c;vuex或者pinia的时候&#xff0c;尤大大已经给出了默认选择&#xff0c;vite && pinia。

算法100例(持续更新)

算法100道经典例子&#xff0c;按算法与数据结构分类 1、祖玛游戏2、找下一个更大的值3、换根树状dp4、一笔画完所有边5、树状数组&#xff0c;数字1e9映射到下标1e56、最长回文子序列7、超级洗衣机&#xff0c;正负值传递次数8、Dijkstra9、背包问题&#xff0c;01背包和完全背…

Django模型入门

Django模型入门 为了能够学会使用Django模型&#xff0c;本节通过构建一个实际的Django模型来帮助读者尽快入门。 3.2.1 定义模型 既然Django模型实现了ORM功能&#xff0c;那么它就是对数据库实例的描述和实现。下面&#xff0c;我们通过一个简单的实例进行讲解。 如果需…

SF506DS-ASEMI开关电源二极管SF506DS

编辑&#xff1a;ll SF506DS-ASEMI开关电源二极管SF506DS 型号&#xff1a;SF506DS 品牌&#xff1a;ASEMI 封装&#xff1a;TO-252 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;5A 最大循环峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;600V 最大…

【opencv】示例-pca.cpp PCA图像重建演示

// 加载必要的头文件 #include <iostream> // 用于标准输入输出流 #include <fstream> // 用于文件的输入输出 #include <sstream> // 用于字符串的输入输出流操作#include <opencv2/core.hpp> // OpenCV核心功能的头文件 #include "o…

数据结构之单链表相关刷题

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构 数据结构之单链表的相关知识点及应用-CSDN博客 下面题目基于上面这篇文章&#xff1a; 下面有任何不懂的地方欢迎在评论区留言或…

OpenAI CEO山姆·奥特曼推广新AI企业服务,直面微软竞争|TodayAI

近期&#xff0c;OpenAI的首席执行官山姆奥特曼在全球多地接待了来自《财富》500强公司的数百名高管&#xff0c;展示了公司最新的人工智能服务。在旧金山、纽约和伦敦的会议上&#xff0c;奥特曼及其团队向企业界领袖展示了OpenAI的企业级产品&#xff0c;并进行了与微软产品的…

ansible的常见用法

目录 ##编辑hosts文件 ##copy模块##复制过去 ##fetch模块##拉取 ##shell模块 ##好用 ##command模块## ##file模块### ##cron模块### ##crontab 计划任务 ##下载好时间插件 ##script模块 ##yum模块## ##yum下载源配置文件 /etc/yum.repos.d/CentOS-Base.repo ##ser…

【opencv】示例-minarea.cpp 如何寻找一组随机生成的点的最小外接矩形、三角形和圆...

// 包含OpenCV库的高GUI模块和图像处理模块的头文件 #include "opencv2/highgui.hpp" #include "opencv2/imgproc.hpp"// 包含标准输入输出流的头文件 #include <iostream>// 使用命名空间cv和std&#xff0c;这样我们就可以直接使用OpenCV和标准库的…

Vitis HLS 学习笔记--ap_int.h / ap_fixed.h(1)

目录 目录 1. 概述 2. 简要规则 3. 浮点运算的复杂性 2.1 对阶 3.2 尾数运算 3.3 规格化和舍入 3.4 特殊值的处理 4. 示例&#xff08;ap_fixed.h&#xff09; 5. 量化模式&#xff08;ap_fixed.h&#xff09; 5.1 AP_SAT* 模式会增加资源用量 1. 概述 ap_int.h 和…

【网站项目】摄影竞赛小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【opencv】示例-opencv_version.cpp 输出OpenCV的版本和构建配置的示例

#include <opencv2/core/utility.hpp> // 引入OpenCV核心工具库 #include <iostream> // 引入标准输入输出流库// 定义一个包含命令行参数的字符串 static const std::string keys "{ b build | | print complete build info }" // 定义参数b&#xff…

2024年大唐杯官网模拟题

单选(出题角度很奇怪&#xff0c;不用太纠结&#xff09; 5G NR系统中&#xff0c;基于SSB的NR同频测量在measconfig里最多可以配置&#xff08; &#xff09;个SMTC窗口。 A、3 B、4 C、1 D、2 答案&#xff1a;D 2个 5G 中从BBU到AAU需要保证&#xff08; &#xff09;Gbps…

千视电子携NDI 6前沿技术,亮相北京CCBN展呈现轻量化媒体解决方案

千视携NDI 6技术闪耀2024 CCBN展会&#xff0c;呈现轻量化媒体解决方案 2024年4月24日至26日&#xff0c;北京首钢会展中心将举办第三十届中国国际广播电视网络技术展览会&#xff08;CCBN2024&#xff09;。这是中国广播电视行业的一项重要盛会&#xff0c;将有国内外超600家…

Linux硬件管理

文章目录 Linux硬件管理1.查看磁盘空间 df -h2.查看文件的磁盘占用空间 du -ah3.查看系统内存占用情况 htop Linux硬件管理 1.查看磁盘空间 df -h 语法 df [选项][参数]选项 -a或–all&#xff1a;包含全部的文件系统&#xff1b; –block-size<区块大小>&#xff1a;…

Unity打包出来的apk安装时提示应用程式与手机不兼容,无法安装应用程式

1、遇到的问题 * 2、解决办法 这是因为你在Unity中导出来的apk手机安装包是32位的&#xff0c;才导致上述问题发生&#xff0c;要解决这个办法&#xff0c;需要在Unity中导出64位的手机安装包。 32位跟64位的区别&#xff0c;以及如何区分打出来的手机安装包是否是32位或者是…

Centos服务器安装MySQL

Centos服务器安装MySQL 利用闲置服务器安装MySQL&#xff0c;用于项目练手 Linux版本&#xff1a;Centos7.9 MySQL版本&#xff1a;8.0.36 一、下载MySQL 从Oracle官网下载最新版本的MySQL wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36-1.el7.x86_64.rp…