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

news2024/9/28 17:27:40

教材为数据库系统概论第五版(王珊)
这一章简单记一下那几条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_Student
    AS 
    SELECT  *
    FROM   Student
    WHERE  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.coloradmin.cn/o/375634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法练习(八)计数质数(素数)

1、问题描述&#xff1a; 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 2、示例如下&#xff1a; 3、代码如下&#xff1a; 第一种&#xff1a;比较暴力的算法 class Solution {public int countPrimes(int n) {int count1;if(n<2) return 0;for(in…

【数据结构必会基础】关于树,你所必须知道的亿些概念

目录 1.什么是树 1.1浅显的理解树 1.2 数据结构中树的概念 2.树的各种结构概念 2.1 节点的度 2.2 根节点/叶节点/分支节点 2.3 父节点/子节点 2.4祖先节点/子孙节点 2.5兄弟节点 2.6树的度 2.7节点的层次 2.8森林 3. 如何用代码表示一棵树 3.1链式结构 3.1.1 树节…

01-mybatis-快速入门、代理、CRUD练习

文章目录MybatisMybatis入门案例1、创建User表&#xff0c;添加数据2、创建模块&#xff0c;搭建框架2.1 创建模块注意&#xff1a;完善项目目录2.2 导入坐标2.3 编写 MyBatis 核心配置文件2.4 编写sql映射文件2.5 编码3、解决SQL映射文件的警告提示Mapper代理开发1、定义同名接…

python下如何安装并使用matplotlib(画图模块)

在搜索命令中输入cmd&#xff0c;以管理员身份运行。 输入以下命令&#xff0c;先对pip安装工具进行升级 pip install --upgrade pip 升级完成 之后使用pip安装matplotlib pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple 也可以使用pycharm来安装matp…

《嵌入式应用开发》实验一、开发环境搭建与布局(上)

1. 搭建开发环境 去官网&#xff08;https://developer.android.google.cn/studio&#xff09;下载 Android Studio。 安装SDK&#xff08;默认Android 7.0即可&#xff09; 全局 gradle 镜像配置 在用户主目录下的 .gradle 文件夹下面新建文件 init.gradle&#xff0c;内容为…

弹性盒子布局

目录一、弹性盒子属性二、认识flex的坐标轴三、简单学习父级盒子属性三、属性说明3.1、flex-grow一、弹性盒子属性 说明&#xff1a; div的默认样式&#xff1a;display:block 块盒子 display:flex弹性盒子&#xff08;可以控制下级盒子的位置&#xff09; 当两种盒子单独出现…

springboot 虚拟线程demo

jd19支持虚拟线程&#xff0c;虚拟线程是轻量级的线程&#xff0c;它们不与操作系统线程绑定&#xff0c;而是由 JVM 来管理。它们适用于“每个请求一个线程”的编程风格&#xff0c;同时没有操作系统线程的限制。我们能够创建数以百万计的虚拟线程而不会影响吞吐。 做个 spri…

实验心理学笔记01:引论

原视频链接&#xff1a; https://www.bilibili.com/video/BV1Qt41137Kv 目录 一、实验心理学&#xff1a;定义、内容及简要历史回顾 二、实验心理学和普通心理学、认知心理学的区别 三、实验方法与非实验方法 四、实验范式 五、实验中的各种变量 六、The science of psy…

Java项目---博客系统

博客系统url : 链接 项目已上传gitee : 链接 前言 之前笔者已经使用Servlet结合MySQL实现了第一版的个人博客。在这一版的博客系统中&#xff0c;将进行以下功能的升级&#xff1a; 框架升级&#xff1a;SSM版本&#xff0c;即&#xff08;Spring SpringMVC MyBatis&…

@Import注解的原理

此注解是springboot自动注入的关键注解&#xff0c;所以拿出来单独分析一下。 启动类的run方法跟进去最终找到refresh方法&#xff1b; 这里直接看这个org.springframework.context.support.AbstractApplicationContext#refresh方法即可&#xff0c;它下面有一个方法 invoke…

Linux基础命令-fdisk管理磁盘分区表

文章目录 fdisk 命令介绍 命令格式 基本参数 1&#xff09;常用参数 2&#xff09;fdisk菜单操作说明 创建一个磁盘分区 1&#xff09;创建分区 2&#xff09;创建交换分区 参考实例 1&#xff09; 显示当前分区的信息 2&#xff09; 显示每个磁盘的分区信息 命令…

关于单目标约束优化问题的讲解及实现过程

一、前沿 优化问题一直是工程领域、路径规划领域等绕不开的话题,而真正的实际问题不是只是单目标优化问题,而是涉及到高维度且带多约束的问题,其中约束包含等式约束、不等式约束或者二者都有,这给优化研究提高了难度。 在中学的时候,应该都遇到过线性规划问题,类似于如…

LeetCode 热题 C++ 200. 岛屿数量 206. 反转链表 207. 课程表 208. 实现 Trie (前缀树)

LeetCode200 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设…

虹科新闻|虹科与iX systems正式建立合作伙伴关系

近日&#xff0c;虹科与美国iXsystems公司达成战略合作&#xff0c;虹科正式成为iXsystems公司在中国区域的认证授权代理商。未来&#xff0c;虹科将携手iXsystems&#xff0c;共同致力于提供企业级存储解决方案。虹科及iXsystems双方的高层领导人员都对彼此的合作有很大的信心…

【JVM】垃圾回收

6、垃圾回收机制 6.1、对象成为垃圾的判断依据 在堆空间和元空间中&#xff0c;GC这条守护线程会对这些空间开展垃圾回收⼯作&#xff0c;那么GC如何判断这些空间的对象是否是垃圾&#xff0c;有两种算法&#xff1a; 引用计数法&#xff1a; 对象被引用&#xff0c;则计数…

搜广推 NeuralCF - 改进协同过滤+矩阵分解的思想

😄 NeuralCF:2017新加坡国立大学提出。【后文简称NCF】 😄 PNN:2016年上海交通大学提出。 文章目录 NeuralCF动机原理general NCFNCF终极版(GMF+MLP的结合)缺点优点ReferenceNeuralCF 动机 前面学了MF,可知MF在用户-物品评分矩阵的基础上做矩阵分解(用户矩阵Q和物品…

Codeforces Round #851 (Div. 2)(A~D)

A. One and Two给出一个数组&#xff0c;该数组仅由1和2组成&#xff0c;问是否有最小的k使得k位置的前缀积和后缀积相等。思路&#xff1a;计算2个数的前缀和即可&#xff0c;遍历判断。AC Code&#xff1a;#include <bits/stdc.h>typedef long long ll; const int N 1…

Maxwell系列:Maxwell采集Mysql到Kafka

目录 Apache Hadoop生态-目录汇总-持续更新 1&#xff1a;直接命令行启动(开发环境使用) 1.1&#xff1a;创建topic&#xff08;可忽略&#xff0c;默认会自动创建&#xff09; 1.2&#xff1a;命令行方式启动maxwell采集通道 1.3&#xff1a;测试流程 2&#xff1a;通过配…

taobao.top.once.token.get( 网关一次性token获取 )

&#xffe5;开放平台免费API必须用户授权聚石塔内调用 网关一次性token获取&#xff0c;对接文档: 公共参数 HTTP地址:http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求示例 TaobaoClient client new Defa…

2023前端一面vue面试题合集

函数式组件优势和原理 函数组件的特点 函数式组件需要在声明组件是指定 functional:true不需要实例化&#xff0c;所以没有this,this通过render函数的第二个参数context来代替没有生命周期钩子函数&#xff0c;不能使用计算属性&#xff0c;watch不能通过$emit 对外暴露事件&…