《数据库系统概论》学习笔记——第四章 数据库安全

news/2024/4/26 13:56:08/文章来源:https://blog.csdn.net/qq_51684393/article/details/129247989

教材为数据库系统概论第五版(王珊)
这一章简单记一下那几条sql的用法和两种存取控制和审计(今年期末考了)吧,不知道有啥好考的

数据库安全性

  • 问题的提出
    • 数据库的一大特点是数据可以共享
    • 数据共享必然带来数据库的安全性问题
    • 数据库系统中的数据共享不能是无条件的共享

例: 军事秘密、国家机密、新产品实验数据、
市场需求分析、市场营销策略、销售计划、
客户档案、医疗档案、银行储蓄数据

4.1 计算机安全性概述

4.1.1 计算机系统的三类安全性问题

计算机系统安全性

为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。

三类计算机系统安全性问题

  • 技术安全类
  • 管理安全类
  • 政策法律类

4.1.2 安全标准简介

  • TCSEC标准
  • CC标准

TCSEC/TDI标准的基本内容

TCSEC/TDI,从四个方面来描述安全性级别划分的指标

  • 安全策略
  • 责任
  • 保证
  • 文档

TCSEC/TDI安全级别划分

B2以上的系统

  • 还处于理论研究阶段
  • 应用多限于一些特殊的部门,如军队等
  • 美国正在大力发展安全产品,试图将目前仅限于少数领域应用的B2安全级别下放到商业应用中来,并逐步成为新的商业标准

CC(通用准则)

  • 提出国际公认的表述信息技术安全性的结构
  • 把信息产品的安全要求分为
    • 安全功能要求
    • 安全保证要求

4.2 数据库安全性控制

非法使用数据库的情况

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

计算机系统中,安全措施是一级一级层层设置

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

  • 用户标识和鉴定
  • 存取控制
  • 视图
  • 审计
  • 密码存储

4.2.1 用户标识与鉴别

用户标识与鉴别(Identification & Authentication)

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

4.2.2 存取控制

存取控制机制组成

  • 定义用户权限
  • 合法权限检查

用户权限定义和合法权检查机制一起组成了DBMS的安全子系统

常用存取控制方法

  • 自主存取控制(Discretionary Access Control ,简称DAC)
    • C2级
    • 灵活
  • 强制存取控制(Mandatory Access Control,简称 MAC)
    • B1级
    • 严格

4.2.3 自主存取控制方法

通过 SQL 的 GRANT 语句和 REVOKE 语句实现

用户权限组成

  • 数据对象
  • 操作类型

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

定义存取权限称为授权

4.2.4 授权与回收

GRANT

语句的一般格式:

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

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

WITH GRANT OPTION子句:

  • 指定:可以再授予
  • 没有指定:不能传播

不允许循环授权

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

GRANT   SELECT 
ON   TABLE   Student 
TO   U1;

例:把对Student表和Course表的全部权限授予用户U2和U3

GRANT ALL PRIVILIGES 
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;

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

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

GRANT INSERT 
ON TABLE SC 
TO U5
WITH GRANT OPTION;

REVOKE

  • 授予的权限可以由DBA或其他授权者用REVOKE语句收回

语句的一般格式为:

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

例:把用户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权限收回的时候必须级联(CASCADE)收回,因为U5授权给了U6,U6授权给了U7。

如果U6和U7从别处获得了对SC表的INSERT权限,则这里使用CASCADE只收回U5的权限。

小结:SQL灵活的授权机制

  • DBA:拥有所有对象的所有权限
    • 不同的权限授予不同的用户
  • 用户:拥有自己建立的对象的全部的操作权限
    • GRANT:授予其他用户
  • 被授权的用户
    • “继续授权”许可:再授予
  • 所有授予出去的权力在必要时又都可用REVOKE语句收回

三、创建数据库模式的权限

CREATE USER语句格式

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

4.2.5 数据库角色

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

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

一、角色的创建

CREATE  ROLE  <角色名>

二、给角色授权

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

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

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

四、角色权限的收回

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

通过角色来实现将一组权限授予一个用户。
步骤如下:

  1. 首先创建一个角色 R1

    CREATE  ROLE  R1;
    
  2. 然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限

    GRANT SELECTUPDATEINSERT 
    ON TABLE Student 
    TO R1;
    
  3. 将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限

     GRANT  R1 TO 王平,张明,赵玲;
    
  4. 可以一次性通过R1来回收王平的这3个权限

    REVOKE  R1 
    FROM 王平;
    

角色的权限修改

GRANT DELETE 
ON TABLE Student
TO R1

4.2.6 强制存取控制方法

  • 可能存在数据的“无意泄露”
  • 原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
  • 解决:对系统控制下的所有主客体实施强制存取控制策略

强制存取控制(MAC,Mandatory access control )

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

    • DBMS所管理的实际用户
    • 代表用户的各进程
  • 客体是系统中的被动实体,是受主体操纵的

  • 文件

  • 基表

  • 索引

  • 视图

敏感度标记(Label)

  • 绝密(Top Secret)
  • 机密(Secret)
  • 可信(Confidential)
  • 公开(Public)

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

客体的敏感度标记称为密级(Classification Level)

强制存取控制规则

(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
(2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体

修正规则

  • 主体的许可证级别 <=客体的密级 -> 主体能写客体

规则的共同点

  • 禁止了拥有高许可证级别的主体更新低密级的数据对象

4.3 视图机制

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

  • 主要功能是提供数据独立性,无法完全满足要求

例:建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明

先建立计算机系学生的视图CS_Student

CREATE VIEW CS_StudentAS SELECT  *FROM   StudentWHERE  Sdept='CS'

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

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

4.4 审计(Audit)

什么是审计

  • 审计日志(Audit Log)
    • 将用户对数据库的所有操作记录在上面
  • DBA利用审计日志
    • 找出非法存取数据的人、时间和内容
  • C2以上安全级别的DBMS必须具有

审计分为

  • 用户级审计
    • 针对自己创建的数据库表或视图进行审计
    • 记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作
  • 系统级审计
    • DBA设置
    • 监测成功或失败的登录要求
    • 监测GRANT和REVOKE操作以及其他数据库级权限下的操作

AUDIT语句:设置审计功能

NOAUDIT语句:取消审计功能

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

AUDIT ALTERUPDATE  ON  SC;

例:取消对SC表的一切审计

NOAUDIT  ALTERUPDATE  
ON  SC;

4.5 数据加密

数据加密

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

加密方法

  • 替换方法
  • 置换方法
  • 混合方法

4.6 统计数据库安全性

统计数据库

  • 允许用户查询聚集类型的信息(如合计、平均值等)
  • 不允许查询单个记录信息

统计数据库中特殊的安全性问题

  • 隐蔽的信息通道
  • 能从合法的查询中推导出不合法的信息

规则1:任何查询至少要涉及N(N足够大)个以上的记录

规则2:任意两个查询的相交数据项不能超过M个

规则3:任一用户的查询次数不能超过1+(N-2)/M

数据库安全机制的设计目标:试图破坏安全的人所花费的代价 >> 得到的利益

ps:这一章看不懂在讲啥,考试也没重点考,简单了解就好

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

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

相关文章

idea远程调试线上jar包

有时候本地代码没问题但在线上运行会报错&#xff0c;这时候可以使用idea的remote功能调试线上jar包 步骤1 步骤2&#xff1a;新建remote 步骤3&#xff1a;配置服务器ip和端口 并复制生成的JVM参数供之后使用 步骤4&#xff1a;打jar包&#xff0c;并将生成的jar包放到服务…

Uncaught ReferenceError: jQuery is not defined

今天在拉取项目部署到本地的时候遇到了一个问题特此记录一下 &#xff08;以后闭坑&#xff09; 我和同事同时拉取了一样的代码&#xff0c;结果同事的页面加载正常而我的页面像被狗啃了一样&#xff0c;知道是js的问题但是不知道问题出在哪里&#xff1f;后来还是同事帮我解决…

栈与队列小结

一、理论基础1.队列是先进先出&#xff0c;栈是先进后出2.栈和队列是STL&#xff08;C标准库&#xff09;里面的两个数据结构。栈提供push和pop等等接口&#xff0c;所有元素必须符合先进后出规则&#xff0c;所以栈不提供走访功能&#xff0c;也不提供迭代器。3.栈是以底层容器…

CRM客户管理系统哪个好用?盘点前十名!

CRM客户管理系统排行&#xff1f;盘点前十名&#xff01; CRM客户管理系统是一种集成多种功能的软件系统&#xff0c;可以帮助企业跟进和管理客户关系、提高销售业绩、优化营销策略等。对于企业来说&#xff0c;选择一款适合自己的CRM系统非常重要&#xff0c;因为它能够直接影…

python之web自动化测试框架

梳理下搭建web自动化框架的流程&#xff1a; 创建目录&#xff1a; cases&#xff1a;存放测试用例&#xff0c;unittest框架要求用例名必须以test开头&#xff0c;所以命名test_case.py test_case.py代码如下&#xff1a;继承unittest.TestCase类下面的方法setupclass(),te…

学习 Python 之 Pygame 开发魂斗罗(六)

学习 Python 之 Pygame 开发魂斗罗&#xff08;六&#xff09;继续编写魂斗罗1. 创建碰撞类2. 给地图添加碰撞体3. 让人物可以掉下去4. 实现人物向下跳跃5. 完整的代码继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗&#xff08;五&#xff09;中&#xff0c;我…

感知趋势,洞察发展:2023(第十届)趋势与预测大会成功举办

2023年2月23日&#xff0c;运联年会&#xff1a;2023&#xff08;第十届&#xff09;趋势与预测大会在深圳机场凯悦酒店成功闭幕。自2014年开始&#xff0c;“运联年会&#xff1a;趋势与预测”已经连续举办九届。这场大会&#xff0c;既是一次行业性的“年终总结”&#xff0c…

(四)K8S 安装 Nginx Ingress Controller

ingress-nginx 是 Kubernetes 的入口控制器&#xff0c;使用NGINX作为反向代理和负载均衡器 版本介绍 版本1&#xff1a;Ingress NGINX Controller(k8s社区的ingres-nginx) 以 NGINX 开源技术为基础&#xff08;kubernetes.io&#xff09;&#xff0c;可在GitHub的 kubernet…

记一次java.lang.ClassNotFoundException问题排查过程

记一次java.lang.ClassNotFoundException问题排查过程 同事提供一个or-simulation-engine.jar包&#xff08;非maven项目&#xff0c;内部依赖很多其他jar&#xff0c;这个包是手动打出来的&#xff09;给我&#xff0c;我集成到我的springboot项目中&#xff0c;在本地IDEA启…

Telnet 基础实验1: Telnet 实验

Telnet 基础实验1&#xff1a; Telnet 实验 拓扑图 配置命令 R1 的配置 undo ter mo sys sys R1 interface g0/0/0 ip address 192.168.1.1 255.255.255.0 qR2 的配置 undo ter mo system-view sysname R2 interface g0/0/0 ip address 192.168.1.2 255.255.255.0 q两台设…

day21_IO

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、File 三、IO流 四、字节输入&输出流 零、 复习昨日 见晨考 一、作业 见答案二、File 2.1 介绍 File,通过一个路径代表文件或者文件夹 …

mysql(一) 使用注意事项及优化

初学mysql的时候、写了一份 "什么是CRUD&#xff1f; CRUD的操作" 的文章&#xff08;18年的&#xff09; 我开心看到有朋友经常在下面讨论一些问题、 但是以现在&#xff08;今天 23年&#xff09;回头看觉得 那些只是入门需要知道和掌握的、也刚好最近不是很忙 所…

区块链行业遭供应链攻击,上万加密钱包被“抄底”损失上亿美元

当地时间8月2日晚间&#xff0c; 区块链行业遭遇了一次行业重创 。据科技媒体TechCrunch报道&#xff0c; 若干名攻击者“抄底”了上万个加密钱包&#xff0c;钱包内有价值上亿美元的代币。 据了解遭受攻击的加密钱包包括Phantom、Slope和TrustWallet等。涉及到的币种除了SOL、…

网上招聘系统

技术&#xff1a;Java、JSP等摘要&#xff1a;当今&#xff0c;人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等…

为什么文档对 SaaS 公司至关重要?

在过去十年左右的时间里&#xff0c;SaaS的兴起使全球数百家公司成为家喻户晓的公司。但他们并不是仅仅依靠产品的力量到达那里的。客户服务和支持是使一切在幕后顺利进行的原因——其中很大一部分是文档。以正确的风格和正确的位置在您的网站上找到适当的用户文档对于将浏览器…

RNN相关知识总结

目录RNN结构与原理1.模型总览2.反向传播LSTM结构与原理1.模型总览2.如何解决RNN梯度消失/爆炸问题&#xff1f;GRU结构及原理1.模型总览LSTM与GRU的区别RNN结构与原理 1.模型总览 上图是RNN的展开结构图&#xff0c;由输入层、隐藏层和输出层组成。当前时间步t 的隐藏状态hth_…

【神经网络】Transformer基础问答

1.Transforme与LSTM的区别 transformer和LSTM最大的区别就是LSTM的训练是迭代的&#xff0c;无法并行训练&#xff0c;LSTM单元计算完T时刻信息后&#xff0c;才会处理T1时刻的信息&#xff0c;T 1时刻的计算依赖 T-时刻的隐层计算结果。而transformer的训练是并行了&#xff0…

快速找到外贸客户的9种方法(建议收藏)

所有外贸企业想要做好外贸出口的头等大事&#xff0c;就是要快速的找到优质的外贸客户和订单&#xff0c;没有订单的达成&#xff0c;所有的努力都是图劳&#xff0c;还有可能会陷入一种虚假的繁荣&#xff0c;每天都很忙&#xff0c;但是没有结果。今天&#xff0c;小编就来分…

第一章 1:函数

函数概念 函数我们可以简单的理解为一个自变量只对应一个函数值&#xff0c;如图&#xff1a; 如图所示的图像&#xff0c;我们可以把其理解为函数&#xff0c;那非函数呢&#xff1f; 这个就叫做非函数&#xff0c;因为我们的一个自变量对应了两个函数值。 函数的两要素&…

极智项目 | 实战pytorch arcface人脸识别

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多经验分享 大家好&#xff0c;我是极智视界&#xff0c;本文介绍 实战pytorch arcface人脸识别&#xff0c;并提供完整项目源码。 本文介绍的实战arcface人脸识别项目&#xff0c;提供完整的可以一键训练、测试的项目工程…