数据库安全性控制及控制流程和常用方法
Hi,我是无丶味,这篇博客是我对数据库安全性的一些总结以及记录一下我的学习。
记得养好好习惯:先赞后看
文章目录
- 数据库安全性控制
- 非法使用数据库的情况
- 计算机系统的安全模型
- 数据库管理系统安全性控制模型
- 数据库安全性控制流程及常用方法:
- ①用户标识和鉴定
- ②存取控制
- 自主存取控制
- 强制存取控制
- ③视图
- ④审计
- ⑤数据加密
- 授权:授予与回收
- 数据库角色
数据库安全性控制
非法使用数据库的情况
①编写合法程序绕过数据库管理系统及其授权机制
②直接或编写应用程序执行非授权操作
③通过多次合法查询数据库从中推导出一些保密数据
计算机系统的安全模型
系统根据用户标识鉴定用户身份,合法用户才准许进入计算机系统
数据库管理系统还要进行存取控制,只允许用户执行合法操作
操作系统有自己的保护措施
数据以密码形式存储到数据库中
数据库管理系统安全性控制模型
数据库安全性控制流程及常用方法:
①用户标识和鉴定
用户身份鉴别方法:
1.静态口令鉴别
2.动态口令鉴别
3.生物特征鉴别
4.智能卡鉴别
②存取控制
常用存取控制方法:
自主存取控制
通过 SQL 的GRANT 语句和REVOKE 语句实现
用户权限组成:数据对象、操作类型
定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
定义存取权限称为授权
关系数据库系统中的存取权限
强制存取控制
强制存取控制规则
(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表权限授给用户U1GRANT SELECT ON TABLE Student TO U1;
把对Student表和Course表的全部权限授予用户U2和U3GRANT ALL PRIVILIGES ON TABLE Student,Course TO U2,U3;
把查询Student表和修改学生学号的权限授给用户U4GRANT 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表的 SELECT、UPDATE、INSERT权限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
数据库安全性控制及控制流程和常用方法相关推荐
- 数据库安全性 --- 控制
数据库安全性控制 一.用户身份鉴别(Identification & Authentication) 二.存取控制 三.自主存取控制方法 四.授权:授予与回收 1.GRANT: 2.REVOK ...
- 【数据库系统】数据库安全性控制
数据库安全性控制的常用方法: 用户标识和鉴定 存取控制:自主存取控制和强制存储控制 (定义用户权限,并将用户权限登记到数据字典中 分为自主存取控制和强制存取控制) 视图技术 审计技术 数据加密存储和加 ...
- 数据库安全性控制(授权:授予与收回)
数据库安全性控制章节敲代码准备工作: 1.更改认证方式,重启sql服务. 2.创建登录名.(安全性-登录名-新建登录名) 3.某个数据库安全性下创建用户. 4.连接. grant语句向用户授予权限,r ...
- 数据库系统概论——数据库安全性控制
数据库系统概论--数据库安全性控制 层层设置 系统根据用户标识鉴别用户,只允许合法用户进入计算机系统 数据库管理系统进行存取控制,只允许用户合法操作 操作系统自身有保护措施 数据以密码形式存储到数据库 ...
- 数据库实验三-数据控制(安全性部分)
数据控制(安全性部分) 实验环境:Windows 10操作系统.MySQL 8.0.Navicat 实验内容与完成情况: 一.实验目的 (1)熟悉通过SQL对数据进行安全性控制. (2)完成书本上习题 ...
- 数据库系统(三)——数据库安全性控制
一.实验目的: 理解自主存取控制和视图机制在数据库安全性中的应用: 熟练掌握用户管理.授予权限.收回权限的SQL语句,并验证其有效性: 理解角色的作用,能够区分角色和用户. 二.实验内容: 针对不同用 ...
- 数据库防火墙——实现数据库的访问行为控制、危险操作阻断、可疑行为审计...
转自百度百科 数据库防火墙系统,串联部署在数据库服务器之前,解决数据库应用侧和运维侧两方面的问题,是一款基于数据库协议分析与控制技术的数据库安全防护系统.DBFirewall基于主动防御机制,实现数据 ...
- oracle数据库激活控制文件位置,Oracle数据库之Oracle 重建控制文件一例
本文主要向大家介绍了Oracle数据库之Oracle 重建控制文件一例,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 环境:OEL 5.7 + Oracle 10.2.0.5 ...
- scala(三):流程控制-分支控制、嵌套循环、for、while、do…while循环、循环中断、多支循环
目录 流程控制 分支控制 嵌套分支 for循环控制 while和do-while循环控制 循环中断 多重循环 流程控制 分支控制 分支控制可以使程序有选择的执行,分支类型有:单分支.双分支.多分支 单 ...
- 案例分享:Qt激光加工焊接设备信息化软件研发(西门子PLC,mysql数据库,用户权限控制,界面设计,参数定制,播放器,二维图,期限控制,参数调试等)
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127669684 长期持续项目技术分享,有专业Qt需求请 ...
最新文章
- CircleProgressView
- 如何改变eclipse控制台编码
- python和什么一起学_[lvog1]和小菜一起学python(零基础开始学习)
- bltoolkit mysql_.NET 轻量级 ORM 框架 - Dapper 介绍
- iOS开发——手机号,密码,邮箱,身份证号,中文判断
- 04751计算机网络安全讲解,【19份】04751计算机网络安全自考试卷_历年真题自考答案及解析_湖南080901计算机科学与技术(原B080702计算机及应用)专业-自考生资料网...
- 征服 Redis + Jedis + Spring (一)—— 配置常规操作(GET SET DEL)
- 【渝粤教育】国家开放大学2018年春季 8618-21T燃气行业规范 参考试题
- 如何零基础入门产品经理
- 给Photoshop cc 2018添加简体中文语言包
- seafile专业版集成微软的office online实现在线协同编辑
- C++11_关键字_explicit
- 电脑开机时网络连接一直转圈,出现红叉
- pip runpy.py 报错 pip升级后问题及解决
- Gateway杂谈:线上引流和灰度发布
- C语言赋值表达式是从左到右还是从右到左执行?
- 百度周景博:POI知识图谱的构建及应用
- 因果分析系列6--相关,回归与因果
- 赏红叶,是金秋心旷神怡之事
- 技高一筹 行家妙招封堵USB泄密Vista数据
热门文章
- 南海云课堂春季11(T)K1 拓展:单调队列
- 终于有人把搜索引擎讲明白了
- springboot项目部署后项目启动慢
- pyinstaller 打包exe启动慢的问题
- 树莓派做百度云盘离线下载器BaiduPCS-Go web,树莓派与windows互传文件
- 进程调度案例分析:为何不能调度?
- cannot import name '_validate_lengths' from 'numpy.lib.arraypad'
- lighttpd服务器搭建教程
- fastcgi php 进程用户 lighttpd,说说lighttpd的fastcgi
- 输出今天是星期几并计算n天后的日期(万年历)