热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库安全性自主存取控制、强制存取控制、视图机制

数据库安全性数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。数据库的不安全因素1.非授权用户对数据库的恶意存取和破坏2.数据库中重要或敏感的数据被泄露3.
数据库安全性

数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 。

数据库的不安全因素

1.非授权用户对数据库的恶意存取和破坏

2.数据库中重要或敏感的数据被泄露

3.安全环境的脆弱性

数据库安全性控制

存取控制

1.自主存取控制

  • 同一用户对不同的数据对象有不同的存取权限
  • 不同的用户对同一对象也有不同的权限
  • 用户还可将其拥有的存取权限转授给其他用户

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

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

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

1.1通过GRANT (授予)语句和REVOKE(收回) 语句实现

GRANT语句的一般格式:    (不允许循环授权)    

GRANT <权限>[,<权限>]&#8230;        

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

TO <用户>[,<用户>]&#8230;        

[WITH GRANT OPTION];     ###指定:可以再授予 没有指定:不能传播

eg:

GRANT  ALL PRIVILIGES      ON TABLE Student,Course    TO U2,U3; #把对Student表和Course表的全部权限授予用户U2和U3

GRANT SELECT      ON TABLE SC       TO PUBLIC; #把对表SC的查询权限授予所有用户

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

GRANT   UPDATE(Sno), SELECT         ON TABLE Student         TO U4;

REVOKE语句一般格式 :(由数据库管理员或其他授权者用REVOKE语句收回)

REVOKE <权限>[,<权限>]&#8230;    

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

FROM <用户>[,<用户>]&#8230;[CASCADE | RESTRICT];

eg:

REVOKE SELECT         ON TABLE SC         FROM PUBLIC; #收回所有用户对表SC的查询权限

 

1.2创建新用户时授权:只有系统的超级用户才有权创建一个新的数据库用户

CREATE  USER                

[WITH][DBA|RESOURCE|CONNECT];

语句说明

  • 新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA 如没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。
  • 拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库
  • 拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主。但不能创建模式,不能创建新的用户
  • 拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户

拥有的权限

可否执行的操作

CREATE USER

CREATE SCHEMA

CREATE TABLE

登录数据库 ,执行数据查询和操纵

DBA

可以

可以

可以

可以

RESOURCE

不可以

不可以

不可以

不可以

CONNECT

不可以

不可以

不可以

可以,但必须拥有相应权限

1.3数据库角色

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

1.角色的创建

CREATE  ROLE  <角色名> 、

2.给角色授权  

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

ON <对象类型>对象名    

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

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

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

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

[WITH ADMIN OPTION]

4.角色权限的收回

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

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

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

2.强制存取控制        (不仅对用户,还对数据)

  • 每一个数据对象被标以一定的密级
  • 每一个用户也被授予某一个级别的许可证
  • 对于任意一个对象,只有具有合法许可证的用户才可以存取

 

在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类

1.  主体是系统中的活动实体  

                     数据库管理系统所管理的实际用户  

                     代表用户的各进程

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

                    文件、基本表、索引、视图

对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)  

敏感度标记分成若干级别

  • 绝密(Top Secret,TS)
  • 机密(Secret,S)
  • 可信(Confidential,C)
  • 公开(Public,P)
  • TS>=S>=C>=P

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

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

 强制存取控制规则  

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

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

 

视图机制

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

间接地实现支持存取谓词的用户权限定义

 

 

 


推荐阅读
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
author-avatar
上海悠u7_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有