数据库复习5——安全性

数据库复习


CH7 安全性

7.1 数据库安全性介绍

如果说完整性是针对授权用户的数据库保护措施,那么安全性就是针对非授权用户的数据库保护措施

安全性问题涉及的层面很多,非法用户可以从以下各层面对数据库的窃取或篡改:

层面 窃取或篡改行为 应对措施
数据库系统 获取高级用户数据库权限 身份验证,权限和可获取数据对等
操作系统 获取操作系统root权限想干啥就能干啥,不仅仅限于对数据库的操作了 提升操作系统安全级别
网络 通过网络窃听和身份伪装也能窃取线上机密数据 身份验证和加密传输
物理 物理上窃取和破坏存储设备 机柜上锁和其他安全防护,备份措施

7.2 权限管理

一般数据库安全性管理从三个角度入手:

  • 服务器OS登陆身份验证
  • 数据库DBMS登陆身份验证
  • 数据库DBMS权限管理

权限管理属于自定义式(Discretionary)的访问控制,还有一种机制是强制(Mandatory)访问控制(从安全模型、数据对象标签等角度)

我们主要讨论数据库的权限管理,不难想到,数据库有以下一些权限:

  • 读数据权限
  • 插入数据权限
  • 修改数据权限
  • 删除数据权限
  • 创建删除索引权限
  • 关系创建权限
  • 关系修改权限
  • 关系删除权限
  • 等等

前面提到的视图算是一种权限管理机制(用户访问符合授权的视图),除此之外用授权图来表示权限管理等级也是常用方法(用户和DBA均参与,略)

7.3 SQL安全性

概念性的部分结束,下面进入复习基础的SQL数据库安全管理操作

(1)授权

SQL基本授权语句的语法如下,执行授权语句的用户必须已经获取相应操作的授权权力才能授权(DBA有所有权力):

grant <privilege list> on <relation name or view name> to <user list>;

包括了:

  • select
  • insert
  • update
  • delete
  • references,即外键声明权限
  • usage,允许使用特殊的域(某些自定义域?)
  • all privileges,即所有可能的权限
  • with grant option(后缀),即对某操作的授权权力

可以是以下三种格式:

  • user-id:用户唯一标识编号
  • public:所有有效用户
  • role:角色

角色(Role)是SQL-99中引入的概念,它用于用户组别权限管理权限层次管理(by the way,这两个是根据我理解自己造的词)

我们先看一个role分配权限的例子:

create role worker;
create role manager;

grant select on Staff_Account to worker;
grant update, insert, delete on Staff_Account to manager;

grant worker to manager;

grant worker to U1, U2, U3;
grant manager to U0;

create role worker;create role manager;创建普通员工和经理两个角色,接着授予普通员工在表Staff_Account上的select权限,然后授予经理在表Staff_Account上的update、insert和delete权限

接下来grant worker to manager;是角色间的授权,也就是把worker的所有权力都赋予manager,然后最后授予U1、U2、U3普通员工的角色以及授予U0经理的角色(即赋予他们相应角色的权利)

那么上例中,

用户组别权限管理是指把现实身份相同的U1、U2、U3分成一组,直接分配给他们worker的权力。那么如果新来一个普通员工U4就不必再去思考赋予给他什么权力而是直接授予他worker的身份即可。涉及多个表的不同的权限分配可能会很复杂,我们只用对同一个组别的统一的身份授权,再去管理用户身份即可管理复杂的权限分配。

而权限层次管理是利用用户现实身份的层次关系,借助面对对象设计中继承的思想来划分权限的层次,让权限层次清晰分明的管理方法。具体到上例来说就是经理也是员工,只是是特殊身份的员工,那么manager身份的人可以继承worker身份已经分配的权力。权限层次管理的好处在于让我们对待manager角色时只需要考虑他的特殊权限即可。

另外需要注意的是,授予关于视图的权限并不意味着授予其基本表的响应权限

(2)取消授权

SQL取消授权的基础语法是:

revoke <privilege list> on <relation name or view name> from <user list> [restrict|cascade];

和和上小节定义一致,而restrict(限制)和cascade(级联)后缀的含义和我们在学习外键时的含义相同:restrict就是不向后传播,cascade就是说用户X授予Y权限A,一旦revoke了X的A权限那么Y的A权限也被取消

(3)SQL权限管理的局限性

SQL的权限管理有自己的缺陷,其中主要有:

  • 权限的粒度不够细化,即无法细致到某个关系中某个元组的权限:比如学生只能查看成绩表中自己的成绩,这个需求SQL的权限管理就无法很好的满足
  • 某一个应用的所有端系统用户都映射到同一个数据库用户,即角色划分很难根据用户定制

7.4 其他安全管理措施

还有一个常见的数据库安全管理措施叫做审计跟踪(Audit Trail),即DBMS在特殊文件或数据库中记录每个用户的具体操作,那么DBA可以查看记录是否越权等,在数据库恢复中我们也经常使用审计跟踪的手段(见后续章节)

时间: 2024-10-08 10:03:45

数据库复习5——安全性的相关文章

数据库复习4——视图

数据库复习 CH6 视图 6.1 视图的概念 视图是从一个或多个表(或视图)导出的虚表,DBMS仅在数据字典中存放视图的定义,而视图的数据仍然实际存储于导出它的基表中 Tutorial D中定义视图的基本语句如下: VAR <view_name> VIEW (<relational_condition>) {<property_list>}; 那么视图有什么作用呢? 为hidden data提供安全性,即屏蔽某些不希望外界用户看到的机密数据 提供一种简写的方式,有了视图

数据库复习1——数据库体系结构和关系系统

数据库复习 CH2 数据库体系结构 2.1 数据库体系结构层次 数据库体系结构可以分成3个层次: 外部层次 概念层次 内部层次 外部层次是指每个用户用不同的高级语言来访问数据库所面对的接口,概念层次数据库信息的表示以及模的式定义(包括安全性和完整性约束等等),而内部层次就是的存储表示(非物理记录也非机器相关),数据库的设计需要保证这三个层次之间的独立性: 概念层和内部层之间物理数据的独立性 外部层和概念层之间逻辑数据的独立性 2.2 DBA和DBMS DBA(数据库管理员)必须很好的了解企业的数

数据库复习2——SQL基础

数据库复习 CH4 SQL SQL(Structured Query Language,结构化查询语言)是通用的关系数据库系统操作语言,下面从几个方面来复习SQL基础 4.1 DDL SQL语句可根据其操作性质分成三类: DDL(Data Definition Language) DCL(Data Constraint Language) DML(Data Manipulation Language) DCL完成完整性和安全性的约束,也可以看作从属于DDL,下面介绍DCL除外的DDL部分SQL语

Sql复习之安全性与权限管理+vmware增加硬盘容量

参考资料: http://www.cnblogs.com/Jackeyzhang/archive/2011/05/18/2049621.html VmWare虚拟机增加硬盘容量的方法 http://blog.csdn.net/superchanon/article/details/8255566 DOS中切换盘符(直接CD不行) ? 参考资料:http://blog.csdn.net/songyuhongnannan/article/details/7279070 SQLServer 角色与权限

数据库复习7——恢复

数据库复习 CH14 恢复 13.1 恢复的概念 数据库系统中恢复是指让数据库从发生某些"失败"后的不一致的状态恢复到正常的一致状态的行为,恢复的基础是冗余(物理上冗余,非逻辑上) 这些失败包括了: 事务失败:包括逻辑错误(事务不满足某些条件不能执行)和系统错误(DBMS强制终止事务,如事务发生死锁) 系统崩溃:断电.物理硬件损坏.软件系统(如OS)崩溃,本章假设系统崩溃不会改变非易失存储器 磁盘失败:磁盘存储发生错误,本章假设可利用检查和监测磁盘失败 大体上,恢复策略分成两个步骤:

数据库复习10——PL/SQL

数据库复习 CH10 PL/SQL 10.1 PL/SQL简介 PL/SQL是Oracle对SQL的过程化的扩展,PL/SQL可以实现SQL相关的过程化程序,并且能够以存储过程和函数的方式让一段SQL业务逻辑驻留在SQL服务器中,以便减少客户机计算任务并减少网络I/O 10.2 PL/SQL编程基础 (1)简介 PL/SQL编程框架为: DECLARE <Variable List> BEGIN <Extented SQL Execution> EXCEPTION <Exce

数据库复习6——事务

数据库复习 CH13 事务 13.1 事务的概念 事务是作为单个逻辑工作单元执行的一系列数据库操作,这些操作可能会修改多个表中的多个元组 事务正常执行的结构是: begin; SQL execution 1 SQL execution 2 ... SQL execution N commit; begin标志开始一个事务,多个SQL语句就是事务逻辑工作单元,commit(提交)是结束当前事务并提交事务内数据变更,让其生效 数据库一致性在事务上表现的比较特殊,具体来说:事务执行的过程中可以让数据库

数据库复习笔记(一)

为了解决冗余 这个地方一直有问题,不知道是什么原因?敲on primary老是出错 把数据库保存到某个磁盘的某个目录下的某个文件,下次可以用记事本打开这个.sql的文件,要运行则需要将这些内容拷贝到新建的 "新建查询"中 切换数据库using School 在特定的数据库中建表,注意有时需要人为的选择 都没有数据的脚本 生成数据库的脚本 生成表的脚本 在每一段的后面加一个go,是批处理的意思 这是什么意思? 若有重复的行则会自动去除,所以只会增加3行 修改数据类型的两种方法 先删除表,

数据库复习笔记(二)

update语句 备份的两种方法 1.把数据库脱机分离,然后拷贝出来 2 备份完之后需要还原才可以用备份的数据库 具体要做的时候再参考视频资料. 替换语句 即使表中的内容全部删掉,插入的时候还是继续编号 数据库复习笔记(二)