首页 百科知识 如何做一个别人可以访问的数据库

如何做一个别人可以访问的数据库

时间:2022-10-04 百科知识 版权反馈
【摘要】:数据库由数据库管理系统进行科学的组织和管理,以确保数据库的安全性和完整性。目前,数据库系统中常见的数据模型有层次模型、网状模型和关系模型。数据库安全包含两层含义:第一层是指系统运行安全,第二层是指系统信息安全。数据库系统的安全特性主要是针对数据而言的,包括数据独立性、数据安全性、数据完整性、并发控制、故障恢复等几个方面。MAC对于不同类型的信息采取不同层次的安全策略。

任务概述

随着计算机及网络应用的全面普及,数据库和数据库技术在各行各业起着越来越重要的作用。数据库安全包含两层含义:第一层是指系统运行安全,防止对计算机的物理设备产生危害; 第二层是指系统信息安全,防止对系统数据库进行修改、删除和盗取资料。本任务主要介绍从数据的独立性、数据安全性、数据完整性、并发控制、故障恢复等几个方面对数据库安全进行预防。

任务目标

●能够理解数据库系统的概念、安全性要求、故障类型、基本安全架构和安全特性

●能够了解数据库安全控制模型、数据库的死锁、活锁和可串行化

●能够掌握数据库的备份与恢复方法

●能够熟悉攻击数据库的常用方法

●能够掌握SQL Server数据库的安全机制

学习内容

一、数据库系统简介

1.数据库

数据库(Database,DB),是指长期保存在计算机的存储设备上,并按照某种模型组织起来的各种数据的集合。数据库由数据库管理系统进行科学的组织和管理,以确保数据库的安全性和完整性。数据库技术的研究和发展已成为现代信息化社会具有强大生命力的一个重要领域。

目前,数据库系统中常见的数据模型有层次模型、网状模型和关系模型。其中,层次模型和网状模型是非关系模型,数据库技术的研究与应用绝大多数以关系数据库为基础,无论是Oracle公司的Oracle、IBM公司的DB2,还是微软的SQL Server等,都是关系型数据库。由于互联网应用的兴起,XML格式的数据大量出现,支持XML模型的新型数据库成为需求,但是关系数据库技术仍然是主流,无论是多媒体内容管理、XML数据支持还是复杂对象支持等,都是在关系数据库系统内核技术基础上的扩展。

2.数据库系统的组成

数据库系统分成两部分:一部分是数据库,按一定的方式存取数据;另一部分是数据库管理系统,为用户及应用程序提供数据访问,并具有对数据库进行管理、维护等多种功能。

3.数据库管理系统

数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过数据库管理系统进行数据库的维护工作。DBMS可使多个应用程序和用户用不同的方法、在不同时刻去建立、修改和询问数据库。数据库管理系统的主要功能有:

(1)具有编译功能,正确执行规定的操作。

(2)正确执行数据库命令。

(3)保证数据的安全性、完整性,抵御一定程度的物理破坏,维护和提交数据库内容。

(4)识别用户、分配授权和进行访问控制。

(5)顺利执行数据库访问,保证网络通信功能。

4.DBA的具体职责

数据库管理员(Database Administrator,简称DBA)是一个负责管理和维护数据库服务器的人。数据库管理员负责全面管理和控制数据库系统,其主要职责有:

(1)决定数据库的信息内容和结构。

(2)决定数据库的存储结构和存取策略。

(3)定义数据库的安全性要求和完整性约束条件。

(4)确保数据库的安全性和完整性,不同用户对数据库的存取权限、数据的保密级别和完整性约束条件也应由DBA负责决定。

(5)监督和控制数据库的使用和运行,监视数据库系统的运行,及时处理运行过程中出现的问题。

(6)数据库系统的改进和重组。

二、数据库系统安全概述

数据库是当今信息存储的一个重要形式,数据库系统已经被广泛地应用于政府、军事、金融等众多领域。数据库安全包含两层含义:第一层是指系统运行安全,第二层是指系统信息安全。

1.数据库系统的安全性要求

(1)数据库的完整性,具体指物理完整性和逻辑完整性,可以保持数据的完整结构。

(2)元素的完整性,每个元素中的数据是准确的。

(3)可审计性,能够追踪到谁访问修改过数据库的元素。

(4)访问控制,允许用户只访问被批准的数据,以及限制不同的用户有不同的访问模式。

(5)用户认证,确保正确地识别每个用户,既便于审计追踪,也为了限制对特定的数据进行访问。

(6)可获性,用户一般可以访问数据库以及所有被批准访问的数据。

2.数据库系统安全的含义

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

(2)系统信息安全。系统信息安全包括:用户口令字鉴别;用户存取权限控制;数据存取权限、方式控制;审计跟踪;数据加密。

3.数据库的故障类型

(1)事务内部的故障。事务内部故障是指事务没有运行到预期的终点,未能成功地提交事务,使数据库处于不正确状态。事务内部故障有的可以通过事务程序本身发现,是可预期的故障,但更多的是不可预期的故障,如数据溢出等。当发生事务内部故障时,可强行回滚(ROLLBACK)该事务,这类恢复操作称为撤销(UNDO)。

(2)系统范围内的故障。造成系统停止运行的任何事件统称为系统故障,如停电、操作系统故障。这类故障造成正在运行的事务非正常终止,数据库缓冲区中数据的丢失。若发生此类故障,恢复子系统必须在系统重新启动时让所有非正常终止的事务回滚;若事务只做到一半便发生故障,必须先撤销该事务,然后重做。

(3)存储介质故障。系统故障又称软故障,存储介质故障称为硬故障。硬故障发生的可能性小,但破坏性极大,如硬盘损坏等。

(4)计算机病毒与黑客。其中计算机病毒主要破坏计算机软件系统,由计算机病毒引起的故障属于系统范围的故障。

4.数据库系统的基本安全架构

(1)用户分类:根据访问数据库用户的不同设置不同的级别,一般将权限分为三类:数据库登录权限类、资源管理权限类和数据库管理员权限类。

(2)数据分类:建立视图。

(3)审计功能:监视各用户对数据库施加的动作。有两种方式的审计,即用户审计和系统审计。

5.数据库系统的安全特性

数据库系统的安全特性主要是针对数据而言的,包括数据独立性、数据安全性、数据完整性、并发控制、故障恢复等几个方面。

三、数据库的数据保护

1.数据库中的访问控制

数据库的访问控制(Access Control)是通过某种途径允许或限制用户访问的一种方法。访问控制的目的是使用户只能进行经过授权的相关数据库操作。访问控制系统一般包括主体、客体和安全访问政策。主体(Subject)指发出访问操作、存取要求的主动方,通常指用户或用户的某个进程;客体(Object)指被调用的程序或欲存取的数据。安全访问政策指用以确定一个主体是否对客体拥有访问权限的一套规则。数据库访问控制方式分为自主访问控制、强制访问控制和基于角色的访问控制三种方式。

(1)自主访问控制(Discretionary Access Control,DAC)。DAC是基于用户身份或所属工作组来进行访问控制的一种手段。具有某种访问特权的用户可以把该种访问许可传递给其他用户。DAC允许使用者在没有系统管理员参与的情况下对他们所控制的对象进行权限修改,这就造成信息在移动过程中其访问权限关系会被改变。

(2)强制访问控制(Mandatory Access Control,MAC)。MAC对于不同类型的信息采取不同层次的安全策略。MAC基于被访问对象的信任度进行权限控制,不同的信任度对应不同的访问权限。MAC给每个访问主体和客体分级,指定其信任度。MAC通过比较主体和客体的信任度来决定一个主体能否访问某个客体,具体遵循以下两条规则:其一,仅当主体的信任度大于或等于客体的信任度时,主体才能对客体进行读操作,即所谓的“向下读取规则”;其二,仅当主体的信任度小于或等于客体的信任度时,主体才能对客体进行写操作,即所谓的“向上写入规则”。

(3)基于角色的访问控制(Role-Based Access Control,RBAC)。在基于角色的访问控制中,引入了角色(Role)这一重要概念。所谓角色,就是一个或一群用户在组织内可执行操作的集合。角色可以根据组织中不同的工作任务创建,然后根据用户的职责分配角色,用户可以轻松地进行角色转换。RBAC根据用户在组织内所处的角色进行访问授权与控制。只有系统管理员有权定义和分配角色。用户与客体无直接联系,只有通过角色才享有该角色所对应的权限,从而访问相应的客体。RBAC的主要优点在于授权管理的便利性,一旦一个RBAC系统建立起来后,主要的管理工作即为分配或取消用户的角色。RBAC的另一优点在于系统管理员在比较抽象的层次上控制访问权限,与企业通常的业务管理类似。

2.数据库加密。

数据库的加密通常分为库外加密、库内加密、硬件加密三种方式。

(1)库外加密。因文件型数据库是基于文件系统的,因此库外加密就针对I/O操作而言。数据库管理系统与操作系统的接口方式主要有以下三种:一是直接利用文件系统的功能,二是利用操作系统的I/O模块,三是利用直接调用存储器管理。所以在采用库外加密时可以将数据先在内存中进行加密,再将加密后的文件写入数据库中。

(2)库内加密。从关系数据库的对象组成出发,可理解库内加密的思想。通常我们访问数据库时都是以二维表方式进行的,二维表的每一行就是数据库的一条记录,二维表的列是数据库中的一个字段。如果以记录为单位进行加密,那么每读写一条记录只需进行一次加密操作,但是由于每一条记录都必须有一个密钥与之匹配,因此产生和管理各条记录的密钥会比较复杂。

(3)硬件加密。相对于软件加密,硬件加密是指在物理存储器与数据库系统之间加上硬件作为中介,加密和解密工作都由此硬件来完成。由于添加硬件与原计算机可能存在兼容问题,在读写数据方面比较烦琐。

3.数据库的完整性保护

数据库的完整性是指数据库中数据的正确性和相容性。如数据库中学生的性别必须为男或女,年龄只能为整型数据等。为维护数据库的完整性,数据库管理系统必须具备以下几个功能:①提供定义完整性约束条件的机制;②提供完整性检查的方法;③提供违约处理手段。

数据完整性约束的分类:

(1)域完整性:对表字段取值进行约束,规定一个给定域的有效入口,包括数据类型、取值范围、格式等规定。实现域完整性可以通过Check约束、Foreign约束、Default约束、Not Null约束等来实施。

(2)实体完整性:以表记录为单位进行约束,规定每一个表中的每一行必须是唯一的。设计时需指出一个表中的一列作为它的主键,表中的每行必须含有一个唯一的主键。主键不能为空值,且唯一。可以通过列的Identity属性、主键约束、唯一性约束来实现。

(3)参照完整性:在关系数据库中,实体与实体之间的关联同样采用关系模式来描述,通过引用对应实体的关系模式的主键,来表示对应实体之间的关联。参照完整性约束又称为引用完整性约束,是指两个表的主键和外键的数据要对应一致。可以通过“外键约束”、“触发器”、“存储过程”来实施。

(4)用户定义完整性:以上数据完整性约束有一定的局限性。例如,毕业时间不能早于入学时间。实现诸如此类的数据完整性保护,需开发者自己通过创建存储过程和触发器、规则等来实现。

四、死锁、活锁和可串行化

1.死锁与活锁

某个事务永远处于等待状态称为活锁。两个或两个以上的事务永远无法结束,彼此都在等待对方解除封锁,结果造成事务永远等待,这种封锁叫死锁。

2.可串行化

并行事务执行时,系统的调度是随机的,因此,需要一个尺度去判断事务执行的正确性。当并行操作的结果与串行操作的结果相同时,我们就认为这个并行事务处理结果是正确的。这个并行操作调度称为可串行化调度。可串行化是并行事务正确性的准则。这个准则规定,一个给定的交叉调度,当且仅当它是可串行化的,才认为是正确的。

3.时标技术

时标技术是为了避免因出现数据不一致而破坏数据库的完整性。它不会产生死锁的问题。时标技术和封锁技术的区别是:封锁技术是使一组事务的并发执行同步,它等价于这些事务的某一串行操作;时标技术也是使一组事务的交叉执行同步,但是它等价于这些事务的一个特定的串行执行,即由时标的时序所确定的一个执行。如果发生冲突,通过撤销并重新启动一个事务解决。

五、数据库的备份与恢复

1.数据库备份

数据库备份就是通过特定的办法,将数据库系统相关文件复制到转储设备的过程,转储设备是指用于放置数据库副本的磁带或磁盘等存储设备。数据库常用备份方法有以下3种:

(1)冷备份:冷备份是指在没有最终用户访问它的情况下关闭数据库,并将其备份。

(2)热备份:热备份是指在数据库正在被写入的数据更新时进行的备份。热备份严重依赖日志文件。

(3)逻辑备份:逻辑备份使用软件技术从数据库提取数据并将结果写入一个输出文件。

2.数据库恢复

数据库恢复就是把数据库由存在故障的状态转变为无故障状态的过程。根据出现故障的原因,数据库恢复分为实例恢复、介质恢复两种类型。实例恢复是当数据库实例出现失效后,数据库系统进行的恢复;介质恢复是当存放数据库的介质出现故障时所做的恢复。

装载(Restore)物理备份与恢复(Recover)物理备份是介质恢复的手段。装载物理备份是将备份拷回到磁盘,恢复物理备份是通过重做日志(即Redo日志,物理备份的一部分)、修改磁盘上的数据文件(物理备份的另一部分)来恢复数据库的过程。

根据数据库的恢复程度,将数据库恢复分为两种类型:完全恢复,不完全恢复。

(1)完全恢复:完全恢复是指将数据库恢复到失效时的状态。这种恢复是通过装载数据库备份,再合并所有的Redo日志实现的。

(2)不完全恢复:不完全恢复是指将数据库恢复到数据库失败前某一时刻数据库的状态。这种恢复是通过装载数据库备份,再合并部分日志实现的。

例如,在下午14时,由于磁盘损坏导致数据库失效,从而中止使用。现在使用两种方法进行数据库的恢复:第一种方法使数据库可以正常使用,且恢复后的数据与损坏时刻数据库中的数据完全相同,这种恢复方法就属于完全恢复;第二种方法能使数据库正常使用,但只能使恢复后的数据与损坏前9点钟时刻数据库中的数据相同,无法恢复数据库到失败时的状态,这种恢复方法就属于不完全恢复。

六、SQL Server 2005数据库安全机制

1.SQL Server 2005安全体系结构

SQL Server 2005提供了以下四层安全防护。

(1)操作系统级别的安全防护:Windows网络管理员负责建立用户组,设置账号并注册,同时决定不同的用户对不同系统资源的访问级别。用户只有拥有了一个有效的Win-dows账号才能对网络进行访问。

(2)SQL Server 2005级别的安全防护:SQL Server 2005通过登录账号设置来实现附加安全层。用户只有登录成功,才能与SQL Server 2005建立数据库连接。

(3)SQL Server 2005数据库级别的安全防护:SQL Server 2005的所有数据库都有自己的用户和角色,数据库只能由它的用户或角色访问,其他用户无权访问其数据。数据库系统可以通过创建和管理不同数据库的用户和角色,来保证数据库不被非法用户访问。

(4)SQL Server 2005数据库对象级别的安全防护:SQL Server 2005可以对所有数据库对象的访问权限进行管理。SQL Server 2005完全支持SQL标准的数据控制语言(Data Control Language,DCL)功能,并通过DCL功能保证合法用户即使进入了数据库也不能超越权限进行存取操作,即合法用户必须在自己的权限范围内进行数据操作。数据库系统有内置数据加密功能,以及内置的加密函数、应用程序编程接口(API),使用户可以更容易地建立加密安全框架。SQL Server 2005支持三种加密类型,每种类型使用一种不同的密钥,并且具有多个加密算法和密钥强度。

①对称加密。SQL Server 2005支持RC4、RC2、DES和AES系列加密算法。对称密钥是既可用于加密也可用于解密的单个密钥,使用对称加密可以快速执行加密和解密操作。因此,对称加密非常适合SQL Server 2005中大量数据的加密。

②非对称加密。非对称密钥由一个私钥及相应的公钥组成。这两个密钥中的每个密钥都可以解密用另一个密钥加密的数据。通常情况下,开发人员使用非对称加密方法加密用于数据库存储的对称密钥。公钥不像证书具有特定的格式,因此开发人员不能将其导出至文件。

③证书。使用证书是非对称加密的另一种形式。证书是一个数字签名的安全对象,它将公钥值绑定到持有相应私钥的用户、设备或服务。认证机构(CA)颁发和签署证书。用户可以使用证书并通过数字签名将一组公钥和私钥与其拥有者相关联。用户可以针对SQL Server 2005使用外部生成的证书,也可以使用SQL Server 2005生成证书。通常情况下,开发人员使用证书加密数据库中其他类型的密钥。

2.SQL Server 2005身份认证

身份认证是指数据库系统对用户访问数据库时所输入的用户名、密码进行确认的过程。内容包括账号是否有效、能否访问系统、能访问系统的哪些数据。

(1)Windows身份认证模式:Windows身份认证模式是指SQL Server 2005服务器通过使用Windows当前用户权限来控制用户对SQL Server 2005服务器的登录及访问权限。它允许一个网络用户登录到一个SQL Server 2005服务器后,不必再提供一个单独的登录用户名及口令,从而实现SQL Server 2005服务器与Windows登录的安全集成。

(2)SQL Server 2005身份认证模式:此模式要求用户必须输入有效的SQL Server 2005登录用户名、口令。这个登录名独立于操作系统的用户账号,从而可以在一定程度上避免操作系统层次上对数据的非法访问。

(3)混合模式:此模式用户在登录时提供SQL Server 2005登录用户名、口令,则系统将使用SQL Server 2005身份验证对其验证。若没有SQL Server 2005账号则用Windows身份验证。

3.SQL Server 2005访问控制

保障数据库安全的主要目标是通过各种安全机制实现数据库的保密性、完整性和可用性,并确保只有授权用户才能在权限范围内进行操作。访问控制策略一般有三种:自主型访问控制(DAC)、强制型访问控制(MAC)和基于角色的访问控制(RBAC)。DAC控制能力比较弱,MAC控制能力过强,且这两种方式都不便于管理;而RBAC可有效克服前两种访问控制方式的不足,降低授权管理的复杂性,提高授权的灵活性。SQL Server 2005的访问控制机制采用的正是RBAC方式。

基于角色的访问控制( Role-Based Access Control,RBAC)是近年来在信息安全领域访问控制方面的研究热点和重点。它通过引入角色的概念来实施访问控制策略。不同的角色和它所应具有的权限许可互相联系,用户作为某些角色的成员,获得角色所拥有的权限。角色可以根据实际的单位、组织的不同工作职能和权限来划分,依据用户所承担的不同权利和义务来对相应角色进行授权。对于一个存在大量用户和权限管理工作的系统来说,从用户到角色的管理,简化了权限分配的复杂性,提高了安全管理的效率和质量。

在RBAC中,权限被赋予角色,而不是用户。当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。角色是一个强大的工具,通过角色可以将用户集中到一个单元中,然后对该单元分配权限。对一个角色授予、拒绝或废除的权限同时适用于该角色的任何成员。可以建立一个角色来代表单位中一类工作人员所执行的工作,然后给这个角色授予适当的权限。当工作人员开始工作时,只需要将他们添加为该角色成员;当他们离开工作时,将他们从该角色中删除。而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限。权限在用户成为角色成员时自动生效。

如果根据工作职能定义了一系列角色,并给每个角色指派了适合这项工作的权限,则很容易在数据库中管理这些权限。之后,不用管理各个用户的权限,而只需在角色之间移动用户即可。如果工作职能发生改变,则只需更改一次角色的权限,并使更改自动应用于角色的所有成员,操作简洁而灵活。

SQL Server 2005提供了一些预先定义的用户角色,它们具有一些特定的管理权限。还可为特定环境需求创建定制的角色,再在数据库上分配权限给这些角色,再根据人们工作职责的变化从这些角色中添加和删除相应的各个用户。SQL Server 2005内置的五种角色及其权限、功能如下:

(1)结构设计师:定义系统的端对端技术和基础结构设计,并定义项目的前景、范围和互操作性。

(2)管理员:运行系统的日常操作。具体而言,包含系统可用性、性能监视和优化、部署、升级、故障排除和配置等各个方面。

(3)分析人员:创建供个人使用也可能供单位中其他人使用的报表和数据模型。分析人员可以是数据处理专业人员,但更多的时候负责分析在完成相关工作过程中获得的企业数据。

(4)开发人员:设计、实现并测试网页、报表或应用程序,以实现由结构设计人员设计的整体系统的特定部分。特别是,数据库开发人员设计、实现和测试数据库中的架构和对象(如表和存储过程)。

(5)信息工作者:信息工作者(information worker)指在工作中涉及创建、收集、处理、分发和使用信息的人。信息工作者将系统中的可用数据转换为商业信息。

4.SQL Server 2005访问审计

数据库安全审计系统通过对网络数据的采集、分析、识别,实时监控网络中数据库的所有访问操作,发现各种违规数据库操作行为,及时报警,实现数据库安全事件的准确跟踪定位,保障数据库系统安全。数据库安全审计系统首先收集来自用户的事件,当用户进行数据库访问操作时,采集器根据审计数据字典,判断其数据库访问行为是否为审计事件。当数据库访问事件满足审计报警记录条件时,分析器则向管理人员发送报警信息并把用户对数据库的所有操作自动记录下来,存放在审计日志中。审计日志记录的内容一般包括:用户名,操作时间,操作类型(如修改、查询、删除),以及操作所涉及的相关数据(如表、视图等)等。利用这些信息,可以进一步找出非法修改数据库的人员及其修改时间、修改内容等;同时管理人员也可以通过手工查询分析审计信息,并形成数据库审计报告。审计报告通常包括用户名、时间、具体数据库操作(包括采用什么命令访问哪些数据库表、字段等)。

当发现某些数据库访问操作具有潜在危害性,而数据库审计系统的规则库内未制定相应的审计规则,则管理人员可以在审计规则库中更新审计规则。在数据库安全审计模型中,数据库审计日志信息起着非常关键的作用,它记录了各种类型的数据库访问事件,为管理人员提供了事后查询的依据,同时可以帮助管理人员实时掌握数据库操作事件的动态信息。

数据库安全审计系统的实现有两种方式:第一种是依靠数据库系统自身具备的审计功能,第二种是使用独立的数据库审计系统。通常采用独立的数据库审计系统效果更好,对数据库系统的运行效率等影响较小,但独立的数据库审计系统价格都比较昂贵。在经费等条件不允许的情况下,可采用数据库系统自身具备的审计功能来实现数据库审计。

SQL Server 2005中有一个“事件探查器”工具,它从服务器捕获SQL Server 2005事件。事件保存在一个跟踪文件中,可对该文件进行分析,也可在试图诊断某个问题时,用它来重播某一系列的数据库操作。基于这个跟踪文件,可进行数据库系统的审计数据采集,并对这些统计数据进行分析,判断是否发生入侵,如果发生入侵,则把信息保存下来以便系统管理员进行分析。

当事件探查器正在运行时,它能捕获正在向SQL Server实际发送的命令。例如,如果某用户向SQL Server发送了只由一个存储过程调用组成的批处理命令,就能够捕获和记录每个存储过程中的所有语句。它还能跟踪表的每一次访问、每一次加锁操作、每一次发生的错误。利用SQL Server 2005的事件探查器实现的数据库审计功能相对比较弱,SQL Server 2008的数据库审计功能有了显著增强。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈