数据库安全性控制及控制流程和常用方法

在这里插入图片描述

Hi,我是无丶味,这篇博客是我对数据库安全性的一些总结以及记录一下我的学习。
记得养好好习惯:先赞后看

数据库安全性控制

非法使用数据库的情况

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

计算机系统的安全模型

在这里插入图片描述
系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统
数据库管理系统还要进行存取控制,只允许用户执行合法操作
操作系统有自己的保护措施
数据以密码形式存储到数据库中

数据库管理系统安全性控制模型

在这里插入图片描述

数据库安全性控制流程及常用方法:

①用户标识和鉴定

用户身份鉴别方法:
1.静态口令鉴别
2.动态口令鉴别
3.生物特征鉴别
4.智能卡鉴别

②存取控制

常用存取控制方法:

自主存取控制

通过 SQL 的GRANT 语句和REVOKE 语句实现
用户权限组成:数据对象、操作类型
定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
定义存取权限称为授权

关系数据库系统中的存取权限
在这里插入图片描述

扫描二维码关注公众号,回复: 11130749 查看本文章

强制存取控制

强制存取控制规则
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
例如银行的高管可以看到别人的帐户余额,而不能修改余额
(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
例如银行的员工可以修改余额,但不能看到余额

强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
实现强制存取控制时要首先实现自主存取控制
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
自主存取控制与强制存取控制共同构成数据库管理系统的安全机制
在这里插入图片描述
先进行自主存取控制检查,通过自主存取控制检查的数据对象再由系统进行强制存取控制检查,只有通过强制存取控制检查的数据对象方可存取。

③视图

④审计

⑤数据加密

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

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

加密方法:
1.存储加密
2.传输加密

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

传输加密

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

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

其他安全性保护
推理控制:
处理强制存取控制未解决的问题
避免用户利用能够访问的数据推知更高密级的数据

常用方法:
基于函数依赖的推理控制
基于敏感关联的推理控制

隐蔽信道:
处理强制存取控制未解决的问题

数据隐私保护:
描述个人控制其不愿他人知道或他人不便知道的个人数据的能力
范围很广:数据收集、数据存储、数据处理和数据发布等各个阶段

授权:授予与回收

1.GRANT
GRANT语句的一般格式:

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

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

谁可以发出GRANT
1.数据库管理员
2.数据库对象创建者(即属主Owner)
3.拥有该权限的用户

接受权限的用户 :
1.一个或多个具体用户
2.PUBLIC(即全体用户)

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;
把查询Student表和修改学生学号的权限授给用户U4
  
	  	GRANT UPDATE(Sno), SELECT 
		ON TABLE Student 
		TO U4;

2.REVOKE
授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
REVOKE语句的一般格式为:

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

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

		REVOKE UPDATE(Sno)
		ON TABLE Student 
		FROM U4;

数据库管理员:
拥有所有对象的所有权限
根据实际情况不同的权限授予不同的用户

用户:
拥有自己建立的对象的全部的操作权限
可以使用GRANT,把权限授予其他用户

被授权的用户:
如果具有“继续授权”的许可,可以把获得的权限再授予其他用户
所有授予出去的权力在必要时又都可用REVOKE语句收回

数据库角色

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

CREATE  ROLE  <角色名> 

例:

创建一个角色 R1:
 CREATE  ROLE  R1;

2.给角色授权

 GRANT  <权限>[,<权限>]ON <对象类型>对象名  
 TO <角色>[,<角色>]
使用GRANT语句,使角色R1拥有Student表的	SELECTUPDATEINSERT权限
       GRANT SELECT, UPDATE, INSERT 
    	 ON TABLE Student 
    	 TO R1;

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

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

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

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

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

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

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

4.角色权限的收回

REVOKE <权限>[,<权限>]ON <对象类型> <对象名>
FROM <角色>[,<角色>]
可以一次性通过R1来回收王平的这3个权限
     	  REVOKE  R1 
     	  FROM 王平;

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

在这里插入图片描述

发布了17 篇原创文章 · 获赞 255 · 访问量 9601

猜你喜欢

转载自blog.csdn.net/weixin_43730105/article/details/105748854
今日推荐