【数据库复习】第四章数据库保护 1

news2024/11/26 9:59:19

数据库安全性:

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

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

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

 

 

用户标识与鉴别

用户名和口令易被窃取,每个用户预先约定好一个计算过程或者函数

存取控制

常用存取控制方法

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

 C2级

 灵活

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

B1级

严格

授权与回收

一、GRANT

GRANT语句的一般格式:

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

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

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

       [WITH GRANT OPTION];

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

发出GRANT的用户

DBA

数据库对象创建者(即属主Owner)

拥有该权限的用户

按受权限的用户

一个或多个具体用户

PUBLIC(全体用户)

WITH GRANT OPTION子句:

指定:可以再授予

没有指定:不能传播

 

 

 

二、REVOKE

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

REVOKE语句的一般格式为:

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

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

      FROM <用户>[,<用户>]...;

 

 

小结:SQL灵活的授权机制

DBA:拥有所有对象的所有权限

不同的权限授予不同的用户

用户:拥有自己建立的对象的全部的操作权限

GRANT:授予其他用户

被授权的用户

“继续授权”许可:再授予

所有授予出去的权力在必要时又都可用REVOKE语句收回

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

DBA在创建用户时实现

CREATE USER语句格式

              CREATE  USER  <username>

            [WITH][DBA | RESOURCE | CONNECT]

 

数据库角色

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

角色是权限的集合

可以为一组具有相同权限的用户创建一个角色

简化授权的过程

类比:Windows操作系统中的用户组

一、角色的创建

CREATE  ROLE  <角色名>

二、给角色授权

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

 ON <对象类型>对象名  

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

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

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

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

[WITH ADMIN OPTION]

四、角色权限的收回

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

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

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

 

 

 

自主存取控制缺点

可能存在数据的“无意泄露”

原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记

解决:对系统控制下的所有主客体实施强制存取控制策略

强制存取控制(MAC)

保证更高程度的安全性

用户不能直接感知或进行控制

适用于对数据有严格而固定密级分类的部门

 军事部门

 政府部门

主体是系统中的活动实体

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

敏感度标记(Label)

绝密(Top Secret)

机密(Secret)

可信(Confidential)

公开(Public)

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

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

强制存取控制规则

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

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

修正规则

主体的许可证级别 <=客体的密级  ——>à   主体能写客体

规则的共同点

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

SQL Server支持两种认证方式

Windows认证模式

混合认证模式

权限分类

对象权限和语句权限

对象权限

针对表、视图、存储过程

决定了能对表、视图、存储过程执行哪些操作,包括UPDATE、DELETE、INSERT、EXECUTE

语句权限

用户是否具有权限来执行某一语句

这些语句通常是一些具有管理性的操作,如创建数据库、表、存储过程等

 

数据库完整性

数据库的完整性

数据的正确性和相容性

数据的完整性和安全性是两个不同概念

数据的完整性

防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据

防范对象:不合语义的、不正确的数据

数据的安全性

保护数据库防止恶意的破坏和非法的存取

防范对象:非法用户和非法操作

为维护数据库的完整性,DBMS必须:

提供定义完整性约束条件的机制

提供完整性检查的方法

违约处理

单属性构成的码有两种说明方法

定义为列级约束条件

定义为表级约束条件

对多个属性构成的码只有一种说明方法

定义为表级约束条件

 

 

插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括:

 检查主码值是否唯一,如果不唯一则拒绝插入或修改

 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改

参照完整性

用REFERENCES短语指明这些外码参照哪些表的主码

例如,关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是主码。Sno,Cno分别参照引用Student表的主码和Course表的主码

 

用户定义的完整性

CREATE TABLE时定义

列值非空(NOT NULL)

列值唯一(UNIQUE)

检查列值是否满足一个布尔表达式(CHECK)

 

 

CONSTRAINT 约束

CONSTRAINT <完整性约束条件名>

[PRIMARY KEY短语   | FOREIGN KEY短语   | CHECK短语 ]

 

 

 修改表中的完整性限制

使用ALTER TABLE语句修改表中的完整性限制

可以先删除原来的约束条件,再增加新的约束条件

   ALTER TABLE Student

         DROP CONSTRAINT C1;

    ALTER TABLE Student

         ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999);

    ALTER TABLE Student

         DROP CONSTRAINT C3;

    ALTER TABLE Student

         ADD CONSTRAINT C3 CHECK (Sage < 40);

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

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

相关文章

电子电气架构——车辆E/E架构常识

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人只有在举棋不定,无从把握的时候才感到疲惫。只有去行动就能获得解放,哪怕做的不好也比无所作为强! 本文主要介绍车辆E/E架构常识,主要涉及E/E架构面临…

LNMP、Tomca

构建Nginx服务器 使用源码包安装nginx软件包 [rootproxy ~]# yum -y install gcc pcre-devel openssl-devel #安装依赖包 [rootproxy ~]# useradd -s /sbin/nologin nginx [rootproxy ~]# tar -xf nginx-1.17.6.tar.gz [rootproxy ~]# cd nginx-1.17.6 [rootproxy …

【Shell编程之循环语句与函数】

目录 一、for循环语句示例:示例1示例2 示例3 二、跳出循环举例 转义符三、while 语句的结构示例: 四、until语句的结构1、基本格式 五、seq命令 一、for循环语句 读取不同的变量值&#xff0c;用来逐个执行同一组命令 #!/bin/bash for(( i0;i<5;i ))i0 定义for循环i变量初…

【逻辑位移和算数位移】

<< 运算符 && >> 运算符 正数位移 当 x>>n 中 x 为正数时&#xff0c;会将x的所有位右移x位&#xff0c;同时左边高位补0 显而易见&#xff0c;运算结束后&#xff0c;值为1 。 可知右移n位&#xff0c;结果就是 x / 2^n&#xff1a;7 / 2 ^2 1;…

运行vue项目报DONE Build complete. The dist directory is ready to be deployed.解决办法

一、问题描述 今天在运行一个vue项目时发现运行途中报这样一个错误&#xff0c;经过查阅相关资料可知&#xff0c;这是dist文件夹下 二、解决办法 根据官方文档&#xff0c;目录需要启动一个 HTTP 服务器来访问 (除非你已经将 publicPath 配置为了一个相对的值)&#xff0c;所…

flex垂直方向布局与overflow结合使用

主要是需要留意 flex布局和overflow 之间的关系&#xff0c; 最外面的container 和 里面的main-box 之间分别使用了flex布局 和 overflow:hiddenmain-box 和 里面的main-body 之间分别使用了 flex布局 和 overflow:auto 有点类似于聊天的窗口布局 <!DOCTYPE html> <h…

zabbix监控远程主机

zabbix监控远程主机 在Zabbix服务器上安装Zabbix代理程序 在远程主机上安装Zabbix代理程序。安装方式取决于操作系统&#xff0c;可以从Zabbix官网上下载相应的安装包进行安装。 监控agent1 在agent1上安装agent yum install zabbix-agent另外在zabbix server上要关闭防火…

【前端知识】内存泄漏与垃圾回收机制 (上)

【前端知识相关分享】内存泄漏与垃圾回收机制 &#xff08;上&#xff09; 1. 内存的生命周期1.1 内存生命周期的一般流程1.2 C&#xff0c;JS和python内存分配和释放的区别 2. JS中的内存管理2.1 两种数据类型与两种内存一个思考2.2 两种内存空间的区别对比 3. 内存泄漏的定义…

HMM理论学习笔记-隐马尔可夫模型的三个元素、假设和问题

文章目录 概率论基础条件概率全概公式边缘概率联合概率联合概率与边缘概率的关系贝叶斯公式&#xff08;条件联合概率&#xff09;马尔科夫链的概念 HMM简述HMM的三个元素符号定义1、状态转移概率矩阵A2、观测概率矩阵B3、初始状态概率向量π HMM的三个假设1、齐次马尔可夫假设…

netstat命令解析

一、linux系统中netstat命令的帮助信息 └──╼ $netstat -h usage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}netstat [-vWnNcaeol] [<Socket> ...]netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }-r, --route …

VMware12安装图解

目录 一、介绍VMware虚拟机 二、安装VMware12虚拟机 三、VMware虚拟机内部新建虚拟机 清理磁盘 一、介绍VMware虚拟机 VMware是一个虚拟机。 什么是虚拟机&#xff1f;字面意思‘虚拟’&#xff0c;那就不算是真的&#xff1b;‘机’可以理解为一台电脑或者一个电脑系统。…

SimpleDateFormat以及Date的使用

Date Date currentTime new Date(); 获取当前的时间 输出&#xff1a; System.out.println(currentTime); 就会以这样的格式输出 那我们不想要这样的格式&#xff0c;而是输出格式怎么办呢&#xff1f; SimpleDateFormat闪亮登场 食用方法&#xff1a; SimpleDateForma…

前端埋点采集到的数据怎么发送到服务端?

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 目录 1. Image请求 2. Ajax请求 3. WebSocket 连接 1. Image请求 1. 通过 Image请求将采集的数据发送到服务器。这种方式比较适合少量数据的采集&#xff0c;因为 lmage请求不需要返回任何数据…

【Python】中文乱码问题与解决方案 深入分析

一直以来&#xff0c;python中的中文编码就是一个极为头大的问题&#xff0c;经常抛出编码转换的异常&#xff0c;python中的str和unicode到底是一个什么东西呢&#xff1f; 在本文中&#xff0c;以哈来解释作示例解释所有的问题&#xff0c;“哈”的各种编码如下&#xff1a; …

数据库单实例升级

一、单实例环境,全时长二个半钟多。详细图文说明到这下载 1、停止所有oracle相关进程。 Emctlstop dbconsole Isqlplusctl stop Lsnrctl stop sqlplus /nolog sql>conn /as sysdba Connectedtoanidleinstance. sql>shutdown 然后&#xff0c;冷备份下数据库cp…

c++学习之运算符重载详解

目录 1.运算符重载的基本概念 2.重载加法运算符 3.重载运算符<<(全局函数实现) 4.重载>>&#xff08;输入&#xff09;运算符&#xff08;全局函数实现&#xff09; 5. 重载/--运算符 6.重载运算符 7.可以重载的运算符 1.运算符重载的基本概念 运算符重载&…

研读Rust圣经解析——Rust learn-16(高级trait,宏)

研读Rust圣经解析——Rust learn-16&#xff08;高级trait&#xff0c;宏&#xff09; 高级trait关联类型Type为什么不用泛型而是Type 运算符重载&#xff08;重要等级不高&#xff09;重名方法消除歧义never typecontinue 的值是 ! 返回闭包 宏自定义宏&#xff08;声明宏&…

day7 实现TCP通信

目录 函数介绍 代码实现 函数介绍 socket函数与通信域&#xff1a; #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); -domain&#xff1a;指定通信域&#xff08;通信地址族&#xff09;&#xff1b; AF_I…