精华内容
下载资源
问答
  • 数据库安全设计

    2011-12-25 20:49:13
    数据库安全的设计报告,自己数据库的理解
  • 关于数据库安全管理,深入理解数据库安全的概念。理解SQL Server 的安全体系框架。关于数据库安全管理,深入理解数据库安全的概念。理解SQL Server 的安全体系框架。
  • 对于学习SQL SERVER2005数据库安全管理机制的理解.pdf
  • 数据库模式理解

    万次阅读 2016-07-14 10:12:26
     理解:  ① 一个数据库只有一个模式;  ② 是数据库数据在逻辑级上的视图;  ③ 数据库模式以某一种数据模型为基础;  ④ 定义模式时不仅要定义数据的逻辑结构(如数据记录由哪些数据项构成,数据项的名字、...

    三级模式结构:外模式、模式和内模式

      一、模式(Schema)

      定义:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。

      理解:

      ① 一个数据库只有一个模式;

      ② 是数据库数据在逻辑级上的视图;

      ③ 数据库模式以某一种数据模型为基础;

      ④ 定义模式时不仅要定义数据的逻辑结构(如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等),而且要定义与数据有关的安全性、完整性要求,定义这些数据之间的联系。

      二、外模式(External Schema)

      定义:也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。

      理解:

      ① 一个数据库可以有多个外模式;

      ② 外模式就是用户视图;

      ③ 外模式是保证数据安全性的一个有力措施。

      三、内模式(Internal Schema)

      定义:也称存储模式(Storage Schema),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(例如,记录的存储方式是顺序存储、按照B树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。

      理解:

      ① 一个数据库只有一个内模式;

      ② 一个表可能由多个文件组成,如:数据文件、索引文件。

      它是数据库管理系统(DBMS)对数据库中数据进行有效组织和管理的方法

      其目的有:

      ① 为了减少数据冗余,实现数据共享;

      ② 为了提高存取效率,改善性能。

      1.概念模式(Conceptual Schema)

      概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图,此种描述是一种抽象的描述,它不涉及具体的硬件环境与平台,也与具体的软件环境无关。

      概念模式主要描述数据的概念记录类型及数据以及它们间的关系,它还包括一些数据间的语义约束,对它的描述可用DBMS中的DDL语言定义。

      2.外模式(External Schema)

      外模式也称子模式(Subschema)或称用户模式(User’s schema)它是用户的数据视图,亦即是用户所见到的模式的一个部分,它由概念模式推导而出,概念模式给出了系统全局的数据描述而外模式则给出每个用户的局部描述。一个概念模式可以有若干个外模式,每个用户只关心与它有关的模式,这样可以屏蔽大量无关信息且有利于数据保护,因此对用户极为有利。在一般的DBMS中都提供有相关的外模式描述语言(外模式DDL)。

      3.内模式(Internal Schema)

      内模式又称物理模式(Physical Schema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还不深入到设备级上(如磁盘及磁盘操作),但近年来有向设备级发展的趋势(如原始磁盘、磁盘分块技术等),DBMS一般提供相关的内模式描述语言(内模式DDL)。

      数据模式给出了数据库的数据框架结构,而数据库中的数据才是真正的实体,但这些数据必须按框架所描述的结构组织,以概念模式为框架所组成的数据库叫概念数据库(Conceptual Database),以外模式为框架所组成的数据库叫用户数据库(user’s Database),以内模式为框架所组成的数据库叫物理数据库(Physical Database),这三种数据库中只有物理数据库是真实存在于计算机外存中,其它两种数据库并不真正存在于计算机中,而是通过两种映射由物理数据库映射而成。

      模式的三个级别层次反映了模式的三个不同环境以及它们的不同要求,其中内模式处于最低层,它反映了数据在计算机物理结构中的实际存储形式,概念模式处于中层,它反映了设计者的数据全局逻辑要求,而外模式处于最外层,它反映了用户对数据的要求。

      数据库系统的三级模式是对数据的三个级别抽象,它把数据的具体物理实现留给物理模式,使用户与全局设计者能不必关心数据库的具体实现与物理背景,同时,它通过两级映射建立三级模式间的联系与转换,使得概念模式与外模式虽然并不具物理存在,但是也能通过映射而获得其存在的实体,同时两级映射也保证了数据库系统中数据的独立性,亦即数据的物理组织改变与逻辑概念级改变,并不影响用户外模式的改变,它只要调整映射方式而不必改变用户模式。

      1.概念模式到内模式的映射

      该映射给出了概念模式中数据的全局逻辑结构到数据的物理存储结构间的对应关系,此种映射一般由DBMS实现。

      2.外模式到概念模式的映射

      概念模式是一个全局模式而外模式则是用户的局部模式,一个概念模式中可以定义多个外模式,而每个外模式是概念模式的一个基本视图。外模式到概念模式的映射给出了外模式与概念模式的对应关系,这种映射一般由DBMS实现。

    展开全文
  • 数据库安全技术概述 知识域数据库安全 知识子域数据库安全基础 了解数据库基本概念和主要功能 理解构化查询语言SQL功能 了解数据库安全特性和安全功能 理解数据库视图 的安全功能 理解数据库完整性要求和备份恢复...
  • 数据库安全与保密

    千次阅读 2019-04-01 17:19:38
    数据库安全与保密 随着计算机科学技术的发展与普及, 特别是计算机在国民经济各重要部门的广泛应用 计算机安全已是当前信息社会非常关注的突出问题 而数据库系统 担负着存储和管理上述数据信息的任务。因而 ...

    数据库安全与保密

    随着计算机科学技术的发展与普及,
    特别是计算机在国民经济各重要部门的广泛应用
    计算机安全已是当前信息社会非常关注的突出问题
    而数据库系统
    担负着存储和管理上述数据信息的任务。因而
    如何保证和加强其安全性和保密性
    已成为目前迫切需要解决的热门课题。

    一、 数据库安全与保密概述
    数据库系统
    一般可以理解成两部分一部分是数据库
    按一定的方式存取数据另一部分是数据库管理系统(DBMS)
    为用户及应用程序提供数据访问
    并具有对数据库进行管理、维护等多种功能。
    数据库系统安全
    包含两层含义

    第一层是指系统运行安全
    它包括
    法律、政策的保护
    如用户是否有合法权利
    政策是否允许等
    物理控制安全
    如机房加锁等
    硬件运行安全
    操作系统安全
    如数据文件是否保护等
    灾害、故障恢复
    死锁的避免和解除
    电磁信息泄漏防止。

    第二层是指系统信息安全
    它包括
    用户口令字鉴别
    用户存取权限控制
    数据存取权限、方式控制
    审计跟踪
    数据加密。

    二、 数据库基本安全架构
    数据库系统信息安全性依赖于两个层次一层是数据库管理系统本身提供的用户名/口令字识别、视图、使用权限控制、审计等管理措施
    大型数据库管理系统Oracle、Sybase、Ingress等均有此功能另一层就是靠应用程序设置的控制管理
    如使用较普遍的Foxbase、Forpro等。作为数据库用户
    最关心自身数据资料的安全
    特别是用户的查询权限问题。对此
    目前一些大型数据库管理系统(如Oracle、Sybase等产品)提供了以下几种主要手段。
    ⒈ 用户分类
    不同类型的用户授予不同的数据管理权限。一般将权限分为三类数据库登录权限类、资源管理权限类和数据库管理员权限类。
    有了数据库登录权限的用户才能进入数据库管理系统
    才能使用数据库管理系统所提供的各类工具和实用程序。同时
    数据库客体的主人可以授予这类用户以数据查询、建立视图等权限。这类用户只能查阅部分数据库信息
    不能改动数据库中的任何数据。
    具有资源管理权限的用户
    除了拥有上一类的用户权限外
    还有创建数据库表、索引等数据库客体的权限
    可以在权限允许的范围内修改、查询数据库
    还能将自己拥有的权限授予其他用户
    可以申请审计。
    具有数据库管理员权限的用户将具有数据库管理的一切权限
    包括访问任何用户的任何数据
    授予(或回收)用户的各种权限
    创建各种数据库客体
    完成数据库的整库备份、装入重组以及进行全系统的审计等工作。这类用户的工作是谨慎而带全局性的工作
    只有极少数用户属于这种类型。
    ⒉ 数据分类
    同一类权限的用户
    对数据库中数据管理和使用的范围又可能是不同的。为此
    DBMS提供了将数据分类的功能
    即建立视图。管理员把某用户可查询的数据逻辑上归并起来
    简称一个或多个视图
    并赋予名称
    在把该视图的查询权限授予该用户(也可以授予多个用户)。这种数据分类可以进行得很细
    其最小粒度是数据库二维表中一个交叉的元素。

    ⒊ 审计功能
    大型DBMS提供的审计功能是一个十分重要的安全措施
    它用来监视各用户对数据库施加的动作。有两种方式的审计
    即用户审计和系统审计。用户审计时
    DBMS的审计系统记下所有对自己表或视图进行访问的企图(包括成功的和不成功的)及每次操作的用户名、时间、操作代码等信息。这些信息一般都被记录在数据字典(系统表)之中
    利用这些信息用户可以进行审计分析。系统审计由系统管理员进行
    其审计内容主要是系统一级命令以及数据库客体的使用情况。

    三、 数据库加密
    一般而言
    数据库系统提供的上述基本安全技术能够满足一般的数据库应用
    但对于一些重要部门或敏感领域的应用
    仅靠上述这些措施是难以完全保证数据的安全性
    某些用户尤其是一些内部用户仍可能非法获取用户名、口令字
    或利用其他方法越权使用数据库
    甚至可以直接打开数据库文件来窃取或篡改信息。因此
    有必要对数据库中存储的重要数据进行加密处理
    以实现数据存储的安全保护。
    ⒈ 数据库密码系统的基本流程
    数据加密
    就是将明文数据经过一定的交换(一般为变序和代昀)变成密文数据。
    数据脱密是加密的逆过程
    即将密文数据转变成可见的明文数据。
    一个密码系统包含明文集合、密文集合、密钥集合和算法
    其中密钥和算法构成了密码系统的基本单元。算法是一些公式、法则或程序
    规定明文与密文之间的变换方法
    密钥可以看作算法中的参数。
    数据库密码系统要求将明文数据加密成密文数据
    数据库中存储密文数据
    查询时将密文数据取出脱密得到明文信息。
    ⒉ 数据库加密的特点
    较之传统的数据加密技术
    数据库密码系统有其自身的要求和特点。传统的加密以报文为单位
    加脱密都是从头至尾顺序进行。数据库数据的使用方法决定了它不可能以整个数据库文件为单位进行加密。当符合检索条件的记录被检索出来后
    就必须对该记录迅速脱密。然而该记录是数据库文件中随机的一段
    无法从中间开始脱密
    除非从头到尾进行一次脱密
    然后再去查找相应的这个记录
    显然这是不合适的。必须解决随机地从数据库文件中某一段数据开始脱密的问题。
    ⑴ 数据库密码系统应采用公开密钥
    传统的密码系统中
    密钥是秘密的
    知道的人越少越好。一旦获取了密钥和密码体制就能攻破密码
    解开密文。而数据库数据是共享的
    有权限的用户随时需要知道密钥来查询数据。因此
    数据库密码系统宜采用公开密钥的加密方法。设想数据库密码系统的加密算法是保密的
    而且具有相当的强度
    那么利用密钥
    采用OS和DBMS层的工具
    也无法得到数据明文。
    ⑵ 多级密钥结构
    数据库关系运算中参与运算的最小单位是字段
    查询路径依次是库名、表名、记录名和字段名。因此
    字段是最小的加密单位。也就是说当查得一个数据后
    该数据所在的库名、表名、记录名、字段名都应是知道的。对应的库名、表名、记录名、字段名都应该具有自己的子密钥
    这些子密钥组成了一个能够随时加/脱密的公开密钥。
    可以设计一个数据库
    其中存放有关数据库名、表名、字段名的子密钥
    系统启动后将这些子密钥读入内存供数据库用户使用。与记录相对应的子密钥
    一般的方法应是在该记录中增加一条子密钥数据字段。
    ⑶ 加密机制
    有些公开密钥体制的密码
    如RSA密码
    其加密密钥是公开的
    算法也是公开的
    但是其算法是个人一套
    而作为数据库密码的加密算法不可能因人而异
    因为寻找这种算法有其自身的困难和局限性
    机器中也不可能存放很多种算法
    因此这类典型的公开密钥的加密体制也不适合于数据库加密。数据库加/脱密密钥应该是相同、公开的
    而加密算法应该是绝对保密的。
    数据库公开密钥加密机制应是一个二元函数
    密文=F(密钥
    明文)
    当加密算法F确定之后
    只要给出密钥和待加密的明文
    即可得到相应的密文。脱密过程即是加密过程的逆过程
    明文=F-1(密钥
    密文)
    由此可知
    数据库密码的加密机制应是既可加密又可脱密的可逆过程。
    ⑷ 加密算法
    加密算法是数据加密的核心
    一个好的加密算法产生的密文应该频率平衡
    随机无重码规律
    周期很长而又不可能产生重复现象。窃密者很难通过对密文频率、重码等特征的分析获得成功。同时
    算法必须适应数据库系统的特性
    加/脱密响应迅速。
    著名的MH背包算法就是一种适合数据库加密的算法。它的基本思想是有一个函数F
    使X=F(K,Y)
    在这里X相当于公开密钥向量
    Y相当于明文。在算法F不公开的情况下
    若已知K和X
    要还原出Y来
    穷尽次数为2n次。如果向量的分量n较大时
    用穷尽的方法来还原将是十分困难的。
    ⒊ 数据库加密的范围
    数据加密通过对明文进行复杂的加密操作
    以达到无法发现明文和密文之间、密文和密钥之间的内在关系
    也就是说经过加密的数据经得起来自OS和DBMS的攻击。另一方面
    DBMS要完成对数据库文件的管理和使用
    必须具有能够识别部分数据的条件。据此
    只能对数据库中数据进行部分加密。
    ⑴ 索引字段不能加密
    为了达到迅速查询的目的
    数据库文件需要建立一些索引。不论是字典式的单词索引、B树索引或HASH函数索引等
    它们的建立和应用必须是明文状态
    否则将失去索引的作用。有的DBMS中可以建立簌聚索引
    这类索引也需要在明文状态下建立和维护使用。
    ⑵ 关系运算的比较字段不能加密
    DBMS要组织和完成关系运算
    参加并、差、积、商、投影、选择和连接等操作的数据一般都要经过条件筛选
    这种"条件"选择项必须是明文
    否则DBMS将无法进行比较筛选。例如
    要求检索工资在1000元以上的职工人员名单
    "工资"字段中的数据若加密
    SQL语句就无法辨认比较。
    ⑶ 表间的连接码字段不能加密
    数据模型规范化以后
    数据库表之间存在着密切的联系
    这种相关性往往是通过"外部编码"联系的
    这些编码若加密就无法进行表与表之间的连接运算。
    ⒋ 数据库加密对数据库管理系统原有功能的影响
    目前DBMS的功能比较完备
    特别象Oracle、Sybase这些采用Client/Server结构的数据库管理系统
    具有数据库管理和应用开发等工具。然而
    数据库数据加密以后
    DBMS的一些功能将无法使用。
    ⑴ 无法实现对数据制约因素的定义
    Sybase数据库系统的规则定义了数据之间的制约因素。数据一旦加密
    DBMS将无法实现这一功能
    而且
    值域的定义也无法进行。
    值得注意的是
    数据库中的每个字段的类型、长度都有具体的限定。数据加密时
    数值类型的数据只能在数值范围内加密
    日期和字符类型的数据也都只能在各自的类型范围内加密
    密文长度也不能超过字段限定的长度
    否则DBMS将无法接受这些加密过的数据。
    ⑵ 密文数据的排序、分组和分类
    Select语句中的Group by、Order by、Having子句分别完成分组、排序、分类等操作。这些子句的操作对象如果是加密数据
    那么脱密后的明文数据将失去原语句的分组、排序、分类作用
    显然这不是用户所需要的。
    ⑶ SQL语言中的内部函数将对加密数据失去作用
    DBMS对各种类型数据均提供了一些内部函数
    这些函数不能直接作用于加密数据。
    ⑷ DBMS的一些应用开发工具的使用受到限制
    DBMS的一些应用开发工具不能直接对加密数据进行操作
    因而它们的使用会受到限制。
    在数据库安全和加密技术的研究方面
    我们只是作了一些尝试性的工作
    许多细节有待于进一步深入。通过研究
    我们认识到数据库安全与保密这一领域研究的重要性和迫切性。目前的DBMS对数据库的加密问题基本都没有经过仔细考虑
    如果在DBMS层考虑这一问题
    那么数据库加密将会出现新的格局。

    展开全文
  • 对数据库视图view的理解

    万次阅读 2015-11-02 11:01:42
    首先解释什么是视图: 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,...由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中

    首先解释什么是视图:

    视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表,与真实表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间,并且基表的变化会导致视图相应的改变


    视图的创建:

    CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)]
    AS subquery
    [WITH CHECK OPTION [CONSTRAINT constraint]]
    [WITH READ ONLY]
    其中:
    OR REPLACE:若所创建的试图已经存在,ORACLE自动重建该视图;
    FORCE:不管基表是否存在ORACLE都会自动创建该视图;
    NOFORCE:只有基表都存在ORACLE才会创建该视图:
    alias:为视图产生的列定义的别名;
    subquery:一条完整的SELECT语句,可以在该语句中定义别名;
    WITH CHECK OPTION : 插入或修改的数据行必须满足视图定义的约束;
    WITH READ ONLY : 该视图上不能进行任何DML操作


    在SQL中修改视图中的数据会受到哪些限制?
    ------------------------------------
    1、必须有权限 
    2、对由多表连接成的视图修改数据时,不能同时影响一个以上的基表,也不能删除视图中的数据 
    3、对视图上的某些列不能修改,这些列是:计算列,内置函数列和行集合函数列 
    4、对具有NOT NULL 的列进行修改时可能会出错。通过视图修改或者插入数据时,必须保证未显示的具有NOT NULL 属性的列有值,可以是默认值,IDENTITY 等,否则不能像视图中插入数据行。 
    5、如果某些列因为规则或者约束的限制不能接受从视图插入的数据时,则插入数据可能会失败 
    6、删除基表并不删除视图,建议采用与表明显不同的名字命名规则

    视图的有点:


    1.视图可以隐藏你的查询的复杂性,例如:

    SELECT d.dname,count(*) as NUM_EMPS
     FROM emp e, dept d
     WHERE e.deptno=d.deptno
     GROUP BY dname;

    不需要输入如此复杂的查询(按照今天的标准来说,那其实并不算是复杂),我可以查询如下的一个视图:

    SELECT dname,num_emps FROM my_view;      (前提是你创建了基于上面查询的视图)

    你也能够将好多相当复杂的查询存储为一个视图,这样就会将查询大大的简化。通过这种方式,视图就是一种宏,它可以在幕后做许多事情,并使得这个过程让终端用户或者应用程序看起来非常简单。


    2,视图也可以用于加强安全性。让我们假设一下,我只想要用户BOB看到EMP表中的ENAME 和DEPNO两个列。我可以使用如下所示:
    GRANT select ON emp TO bob;

    但是上面的命令会使BOB看到表的全部内容。我可以写下如下的一个视图,使BOB只看到自己能够看到的列:

    CREATE VIEW bob_emp AS SELECT ename,deptno FROM emp; GRANT select ON bob_emp TO bob;

    通过这两条命令,BOBO只能在视图中看到这个表中的两个列。

    让我们更进一步的讨论一下安全性的概念。假设我们想要使得每个人都可以查询EMP表,但是只是他们自己的记录。我可以写出如下的视图:

    CREATE VIEW my_emp AS SELECT * FROM emp WHERE ename=USER; GRANT select ON my_emp TO public;

    当一个用户查询MY_EMP表示,上述视图只会返回那些ENAME列值为他们自己的用户名

    Oracle视图非常强大的功能之一在于其可以创 建一个带有错误的视图。比如说视图里的字段在基表里不存在,该视图仍然可以创建成功,但是非法的且无法执行。当基表里加入了该字段,或者说某个字段修改成 视图里的该字段名称,那么视图马上就可以成为合法的。

    3.Oracle视图非常强大的功能之一在于其可以创 建一个带有错误的视图

    比如说视图里的字段在基表里不存在,该视图仍然可以创建成功,但是非法的且无法执行。当基表里加入了该字段,或者说某个字段修改成 视图里的该字段名称,那么视图马上就可以成为合法的。
    视图的缺点:

    4.保存复杂查询

    一个查询可能会对表数据进行复杂的计算。用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。
    逻辑数据独立性

    视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

    5.视图的依赖性

    由于视图的定义是一个引用了其他对象(表,视图)的查询,因此视图依赖于其所引用的对象。Oracle 会自动地处理视图的依赖性。例如,当用户移除了一个视图的基表后再重建此表,Oracle 将检查新的基表是否符合视图的定义并判断视图的有效性。

    展开全文
  • 数据库安全

    2013-06-06 23:08:23
    本实验的目的是通过实验使学生加深数据安全性的理解,并掌握SQL Server中有关用户,角色及操作权限的管理方法。 通过企业管理器新建一个SQL SERVER身份“登录”(loginin),登录名为自己姓名,然后在数据库访问...
  • 数据库安全实验

    2015-07-01 10:28:14
    一、 实验目的  加深数据安全性的理解  了解SQL Server的数据安全性控制机制  掌握SQL Server中用户、角色及操作权限的创建和管理方法
  • ch4 数据库安全.ppt

    2019-10-29 10:58:31
    安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。 下面结合Microsoft SQL Server 2008系统的安全特征,分析安全性问题和安全性机制之间的关系。
  • 本章重点 理解数据库安全性控制含义掌握数据库安全性控制方法 理解数据库的完整性控制 理解事务的概念掌握数据库并发控制的方法 掌握数据库备份及恢复的原理和技术;3;4;针对以上四种数据库破坏的可能情况数据库...
  • 目 录 7.2 数据库的安全特性 2 7.3 数据库的安全策略和机制 3 7.4 数据库安全体系与防护 4 7.1 数据库安全... 教学目标 理解数据库安全的概念面临的威胁及隐患 了解数据库安全的层次结构 掌握数据库的安全特性备份和
  • 实验六数据库安全管理 PAGE 实验六数据库安全管理 PAGE # /18 实验六数据库安全管理 PAGE 实验六数据库安全管理 PAGE # /18 实验六数据库安全管理 系别计算机科学与技术系 专业班级计算机科学与技术 5班 姓名 学号 ...
  • 安全性是所有数据库管理...数据库安全控制的一般方法 身份验证 最常用的”用户名/密码” 高级的采用生物特征,如:指纹、虹膜 访问控制 目的是防止非法用户进入系统以及合法用户系统资源的非法利用 用户...

    安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。
    下面结合Microsoft SQL Server 2008系统的安全特征,分析安全性问题和安全性机制之间的关系。

    数据库安全控制的一般方法

    身份验证

    • 最常用的”用户名/密码”
    • 高级的采用生物特征,如:指纹、虹膜

    访问控制

    • 目的是防止非法用户进入系统以及合法用户对系统资源的非法利用
    • 对用户访问数据库各种对象的权限的控制,通过用户分类和数据分类实现。

    文件操作控制

    • 对操作系统用户管理和权限进行合理分配,防止操作系统用户非法进入数据库系统,合理设置数据库文件的访问权限,防止文件被未授权修改

    数据加密存储

    • 将明文变成密

    登录到系统

    • 第一个安全性问题:当用户登录数据库系统时,如何确保只有合法的用户才能登录到系统中?这是一个最基本的安全性问题,也是数据库管理系统提供的基本功能。

    在Microsoft SQL Server 2008系统中,通过身份验证模式和主体解决这个问题。

    身份验证模式是Microsoft SQL Server 2008系统验证客户端和服务器之间连接的方式。Microsoft SQL Server 2008系统提供了两种身份验证模式:Windows身份验证模式和混合模式。

    • 在Windows身份验证模式中,用户通过Microsoft Windows用户账户连接时,SQL Server使用Windows操作系统中的信息验证账户名和密码。Windows身份验证模式使用Kerberos安全协议,通过强密码的复杂性验证提供密码策略强制、账户锁定支持、支持密码过期等。
    • 在混合模式中,当客户端连接到服务器时,既可能采取Windows身份验证,也可能采取SQL Server身份验证。当设置为混合模式时,允许用户使用Windows身份验证SQL Server身份验证进行连接。

    这里要引入主体的概念

    主体是可以请求系统资源的个体、组合过程。例如,数据库用户是一种主体,可以按照自己的权限在数据库中执行操作和使用相应的数据。主体是可以请求系统资源的个体、组合过程。例如,数据库用户是一种主体,可以按照自己的权限在数据库中执行操作和使用相应的数据。

    而在Microsoft SQL Server 2008系统有多种不同的主体,不同主体之间的关系是典型的层次结构关系,位于不同层次上的主体其在系统中影响的范围也不同。位于层次比较高的主体,其作用范围比较大;位于层次比较低的主体,其作用范围比较小。

    • 第二个安全性问题:当用户登录到系统中,他可以执行哪些操作、使用哪些对象和资源?

    这也是一个基本的安全问题,在Microsoft SQL Server 2008系统中,通过安全对象和权限设置来解决这个问题。

    主体和安全对象的结构示意图

    • 第三个安全性问题:数据库中的对象由谁所有?如果是由用户所有,那么当用户被删除时,其所拥有的对象怎么办,难道数据库对象可以成为没有所有者的“孤儿”吗?

    在MS SQL Server 2008系统中,这个问题是通过用户和架构分离来解决的。

    数据库对象、架构和用户之间的关系

    三个认证过程与用户来源

    三个认证过程包括:

    • 系统登录—用户登录到 SQL Server
    • 数据库访问—访问用户数据库、系统数据库
    • 数据操作—对表、视图、存储过程的操作

    一个用户要对某一个数据库进行操作 ,必须同时满足两个条件:

    • 能连接到SQL Server服务器(连接权)
    • 有执行该操作的权限(访问权、操作权)
    • 首先要求能够合法地登录到SQL Server上,其具体表现就是合法的登录账户(用户名/密码),解决了“连接权”
    • 其次要验证是不是特定数据库的合法用户,就需要检查刚才的登录名有没有在数据库中加以映射,解决了“访问权”
    • 最后要验证刚才的用户是否对数据库的特定对象具有操作的权限,解决了“操作权”

    例:学校大门—Windows; 实验楼—SQL Server
          实验室—数据库;   做实验—具体操作

    管理登录名

    • 管理登录名包括创建登录名、设置密码策略、查看登录名信息及修改和删除登录名等。
    • sa是一个默认的SQL Server登录名,拥有操作SQL Server系统的所有权限。该登录名不能被删除。当采用混合模式安装SQL Server系统之后,应该为sa指定一个密码。

    创建登录名

    • 在SQL Server 2008系统中,许多操作都既可以通过T-SQL语句完成,也可以通过SQL Server Management Studio(SSMS)工具来完成。
    • 在创建登录名时,既可以通过将Windows登录名映射到SQL Server系统中,也可以创建SQL Server登录名。

    维护登录名

    • 登录名创建之后,可以根据需要修改登录名的名称、密码、密码策略、默认的数据库等信息,可以禁用或启用该登录名,甚至可以删除不需要的登录名。

    管理数据库用户

    • 数据库用户是数据库级的主体,是登录名在数据库中的映射,是在数据库中执行操作和活动的行动者。
    • 在SQL Server 2008系统中,数据库用户不能直接拥有表、视图等数据库对象,而是通过架构拥有这些对象。数据库用户管理包括创建用户、查看用户信息、修改用户、删除用户等操作。(进入实验楼的不一定都有进入实验室的权限,如守卫楼的阿姨等)

    sa登录

    • sa登录是系统管理员的登录。在以前的SQL Server版本中不存在角色,sa登录具有所有可能的关于系统管理工作的权限。从SQL Server 2005开始,sa登录保持了向后兼容性。sa登录永远是固定服务器角色syadmin中的成员,并且不能从该角色中删除。

    创建用户

    • 可以使用CREATE USER语句在指定的数据库中创建用户。
    • 由于用户是登录名在数据库中的映射,因此在创建用户时需要指定登录名。

    维护用户

    • 可以使用ALTER USER语句修改用户。修改用户包括两个方面,第一,可以修改用户名;第二可以修改用户的默认架构。
    • 修改用户名与删除、重建用户是不同的。修改用户名仅仅是名称的改变,不是用户与登录名对应关系的改变,也不是用户与架构关系的变化。

    修改和删除

    • 如果用户不再需要了,可以使用DROP USER语句删除数据库中的用户。
    • 也可以使用ALTER USER语句修改指定用户的默认架构,这时可以使用WITH DEFAULT_ SCHEMA子句。

    数据库角色

    • 数据库角色是数据库级别的主体,也是数据库用户的集合。数据库用户可以作为数据库角色的成员,继承数据库角色的权限。数据库管理人员可以通过管理角色的权限来管理数据库用户的权限。
    • Microsoft SQL Server 2008系统提供了一些固定数据库角色和public特殊角色

    每个教师都要有浏览全校学生的权限,但有的教师(如辅导员)可以修改学生个人信息与查看学生成绩,而另一些教师(如专业课教师)可以查看学生个人信息与修改学生成绩,怎样分别给他们授权?
    (建立两种权限角色:一个“浏览成绩+修改个人信息”,一个“浏览个人信息+修改成绩”,将每个教师赋予特定的角色标志)

    固定数据库角色

    • 就像固定服务器角色一样,固定数据库角色也具有了预先定义好的权限。使用固定数据库角色可以大大简化数据库角色权限管理工作。
    • SQL Server 2008系统提供了9个固定数据库角色。
    • 固定数据库角色都有预先定义好的权限,不能为这些角色增加或删除权限。

    public角色

    • 除了前面介绍的固定数据库角色之外,SQL Server系统成功安装之后,还有一个特殊的角色,这就是public角色。
    • public角色有两大特点:
      • 初始状态时没有权限;
      • 所有的数据库用户都是它的成员。
    • 虽然初始状态下public角色没有任何权限,但是可以为该角色授予权限。

    管理权限

    • 权限是执行操作、访问数据的通行证。只有拥有了针对某种安全对象的指定权限,才能对该对象执行相应的操作。
    • 在SQL Server 2008系统中,不同的对象有不同的权限。
    • 为了更好地理解权限管理的内容,下面介绍权限的类型、常用对象的权限、隐含的权限、授予权限、收回权限、否认权限等几方面内容。

    权限的类型

    • 在SQL Server 2008系统中,不同的分类方式可以把权限分成不同的类型。如果依据权限是否预先定义,可以把权限分为预先定义的权限和预先未定义的权限。
    • 预先定义的权限是指那些系统安装之后,不必通过授予权限即拥有的权限。
    • 预先未定义的权限是指那些需要经过授权或继承才能得到的权限。

    对象权限

    • 如果按照权限是否与特定的对象有关,可以把权限分为针对所有对象的权限和针对特殊对象的权限。
    • 针对所有对象的权限表示这种权限可以针对SQL Server系统中所有的对象,例如,CONTROL权限是所有对象都有的权限。
    • 针对特殊对象的权限是指某些权限只能在指定的对象上起作用,例如INSERT可以是表的权限,但是不能是存储过程的权限,而EXECUTE可以是存储过程的权限,但是不能是表的权限。下面,详细讨论这两种权限类型。
    • 在SQL Server 2008系统中,针对所有对象的权限包括CONTROL、ALTER、ALTER ANY、TAKE OWNERSHIP、INPERSONATE、CREATE、VIEW DEFINITION等。

    常用对象的权限

    • 在使用GRANT语句、REVOKE语句、DENY语句执行权限管理操作时,经常使用ALL关键字表示指定安全对象的常用权限。
    • 不同的安全对象往往具有不同的权限。
    • 需要注意的是:SQL Server 2008 只提供自主存储控制语句,其安全性达到TCSEC标准的C1级;不提供强制存储控制语句,所以不能达到B1级。

    授予权限

    • 在SQL Server 2008系统中,可以使用GRANT语句将安全对象的权限授予指定的安全主体。这些可以使用GRANT语句授权的安全对象包括应用程序角色、程序集、非对称密钥、证书、约定、数据库、端点、全文目录、函数、消息类型、对象、队列、角色、路由、架构、服务器、服务、存储过程、对称密钥、系统对象、表、类型、用户、视图和XML架构集合等。
    • GRANT语句的语法是比较复杂的,不同的安全对象有不同的权限,因此也有不同的授权方式。

    收回权限

    • 如果希望从某个安全主体处收回权限,可以使用REVOKE语句。
    • REVOKE语句是与GRANT语句相对应的,可以把通过GRANT语句授予给安全主体的权限收回。
    • 也就是说,使用REVOKE语句可以删除通过GRANT语句授予给安全主体的权限。

    否认权限

    • 安全主体可以通过两种方式获得权限:
      • 通过作为角色成员继承角色的权限(祖上的遗产)
      • 直接使用GRANT语句为其授予权限 (个人自己奋斗)
    • 使用REVOKE语句只能删除安全主体通过GRANT得到的权限,要想彻底删除安全主体的特定权限必须使用DENY语句。
    • DENY语句的语法形式与REVOKE语句非常类似。

    SQL Server 2008内置的加密机制

    • SQL Server 2008系统不是简单地提供一些加密函数,而是把成熟的数据安全技术引进到数据库中,形成了一个清晰的内置加密层次结构。
    • 加密是一种保护数据的机制,它通过将原始数据打乱,达到只有经过授权的人员才能访问和读取数据、未授权人不能识别或读取数据的目的,从而增强了数据的保密性。

    对称加密机制和非对称加密机制示意图

     

    展开全文
  • Oracle数据库概念理解

    千次阅读 2010-03-31 12:19:00
    Oracle数据库服务器 Oracle Server是一个对象—关系数据库管理系统,它提供开放的,集成的,全面的信息管理方法。每一个Server由一个Oracle DB和一个Oracle Server的实例构成,它有场地自治性和提供数据存储透明...
  • 最近面试发现面试官都很容易问关于这方面的问题,所以就稍稍总结了下,希望正在找工作的小伙伴们有帮助,如何快速的理解并且记住事务引发的安全性问题,从而在面试中取得好的成绩。 本文主要分三个模块来讲解。...
  • 九江职业技术学院信息工程学院 课程 数据库技术 课题 数据库安全管理 课次 授课时间 授课类型 讲授 课时 2H 授课方法 讲授法启发法 授课班级 教学目标 让学生了解数据库的安全管理机制 教学重点 理解数据库身份认证...
  • 实验 9数据库安全性实验 一 实验目的 加深对数据库安全性的理解 并掌握 SQL Server 中有关用户角色及操作权 限的管理方法 二 实验内容 数据库的安全性实验在 SQL Server 企业管理器中设置 SQL Server 的安全认证模式...
  • 实验四 数据库安全性技术 实验目的 1理解安全性的概念 2在理解用户及相关概念的基础上掌握自主存取控制机制 DAC 3熟悉 MS SQL SERVER 的安全性技术 实验性质 综合性实验 实验导读 1安全性概述 数据库的安全性是指...
  • 4.1 数据库安全性概述 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 4.1.1数据库的不安全因素以及应对措施 非授权用户数据库的恶意存储和破坏:用户身份鉴别、存取控制、视图 ...
  • 数据库安全性与完整性数据库系统原理9.1 计算机安全性概述9.2 数据库的安全性9.3 统计数据库安全性9.4 数据库的完整性第九章 数据库的安全性与完整性学习目标 了解数据库的安全性理论包含的内容理解安全数据库的存取...
  • 数据库个人理解的进阶之路

    千次阅读 2018-09-13 11:12:24
    偶然和朋友聊到了最近的工作,她是... 我个人理解数据库方向应该分为四个阶段:入门、初级、中级、高级  1,入门阶段-学习阶段。这种失职还没有系统的学习一门数据库语言的同学,对数据库的语法、功能等等都没有...
  • 理解数据库安全性保护 • 掌握SQL Server 中有关用户登录认证以及管理的方法 • 理解数据库存取控制机制 • 熟练掌握T-SQL 的数据控制语言,能通过自主存取控制进行权限管理 • 熟悉SQL Server 中角色管理 • ...
  • 第4章 数据库安全性 了解 计算机系统安全性问题 数据库安全性问题 威胁数据库安全性因素 掌握 TCSEC和CC标准的主要内容 C2级DBMS、B1级DBMS的主要特征DBMS提供的安全措施 用户身份鉴别、自主存取控制、强制存取...
  • 说到数据库,你肯定会说:“数据库是我最熟悉的工具了。利用它,我能够设计复杂的表结构、写出炫酷...今天,我就以两种比较常见的数据库 Redis 和 MySQL 为例,来和你一起探讨数据库安全。 ▌Redis 安全 我们首先来.
  • 使学生加深对数据库安全性和完整性的理解。并掌握SQL Server中有关用户、角色及操作权限的管理方法。熟悉通过SQL语句数据进行完整性控制。 二、实验内容和要求  数据库的安全性实验,在SQL Server企业管理器中,...
  • 数据库连接池的理解和使用

    万次阅读 多人点赞 2015-08-27 20:49:47
    个人理解:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。 ...
  • 第九章数据库安全性  一、选择题 1. 以下( D)不属于实现数据库系统安全性的主要技术和方法。 A. 存取控制技术 B. 视图技术 C. 审计技术 D. 出入机房登记和加锁 2. SQL中的视图提高了数据库系统的...
  • 加深数据安全性的理解,并掌握Navicat中有关用户,角色及操作权限的管理方法。 二、实验内容 1、在Navicat中,管理建立用户和分配用户权限。 在这里,我们可以发现root是MySQL最高级别权限的用户,它拥有查看、...
  • 2. 通过安全性相关内容的定义,熟悉了解SQL Server数据库中安全性的内容和实现方法,加深对数据库安全性的理解。 实验环境 采用SQL Server数据库管理系统作为实验平台。SQL Server要求选用要求使用2005、2008或者...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 329,227
精华内容 131,690
关键字:

对数据库安全的理解