数据库安全技术(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-09 03:08:33

点击下载

作者:贺桂英 周杰 王旅

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

数据库安全技术

数据库安全技术试读:

前言

F O R E W O R D

随着网络技术的飞速发展,信息安全问题备受关注。数据库系统中存储了大量数据且一般都是集中存放的,这些数据通过网络为许多最终用户所共享,因此其安全性问题日益突出。数据库管理系统本身能够实现数据库安全性控制的方法和技术有很多,包括用户标识和鉴别、存取控制、视图机制、审计和数据加密等;还有基于Web应用的SQL注入防范技术等。学习数据库安全技术旨在保护数据库以防止非法用户使用数据库,从而造成数据泄露、更改或破坏等。

本书是为应用型院校信息安全及其相关专业编写的一本数据库安全技术实用教材。全书共分8章。第1章介绍数据库安全的基础知识;第2章介绍数据库安全层次,即网络安全、服务器安全和数据库安全;第3章介绍SQL和Web应用基础知识;第4章介绍SQL注入原理和相关的防御技术;第5章介绍数据库管理系统中的访问控制的相关知识和应用设置;第6章介绍数据库备份与恢复的相关知识和技术;第7章介绍如何对数据库中的数据进行加密和审核;第8章介绍大数据应用以及相关的安全技术。本书的编写注重实践操作技能的培养,同时兼顾理论知识,通过讲授和实操两条主线来安排课程内容,旨在使读者通过实例和实操内容讲解来掌握数据库管理系统本身的安全技术和SQL注入防范技术。

本书的主要特色如下。

① 内容全面,实例丰富。书中每个知识点都有相应的实例说明,帮助读者理解和消化所学的内容。

② 递进式的讲解思路。全书采用由浅入深的递进式讲解思路,力求每个内容的介绍从简单到复杂,一步一个实例说明,使读者不厌倦、有激情、想学习。

③ 注重技术应用。数据库安全技术比较分散,理论性强,实际掌握应用技术更加重要。因此,本书编制了大量操作实例,并配有详细的操作说明,帮助读者掌握数据库安全相关技术。

本书第1章、第3章、第8章由贺桂英教授编写,第4章、第5章、第6章、第7章和附录部分由周杰老师编写,第2章由王旅老师编写,焦冬艳和郭玲老师参与了教材部分章节的编写,全书由贺桂英教授审阅定稿。在本书的编写过程中,我们得到了蓝盾信息安全技术股份有限公司田文春博士和深信服科技股份有限公司广东区安全专家袁小辉的大力支持,在此向对本书编写提供帮助的老师和工程技术人员表示衷心的感谢!

由于编者水平有限,书中疏漏之处在所难免,敬请相关专家和广大读者批评指正。作者2017年11月于广州第1章数据库安全基础

随着信息技术的发展,特别是移动互联网的飞速发展,基于网络的分布式信息系统已经在各个行业,特别是电子商务、政府办公、企业事务管理等领域广泛应用。数据库作为信息承载的主体,是信息管理系统的核心和基础,数据的机密性、完整性、可用性、隐私性面临着严重的挑战和风险。保护数据不泄露或不被窃取是数据库管理员和应用系统开发者的重要工作。

本章介绍了数据库相关概念及发展、SQL Server数据库、数据库面临的主要威胁来源及安全对策。1.1 数据库相关概念及发展

数据库(Database,DB)是存储数据的一个集合,一个数据库系统(Database System,DBS)中可以有多个数据库,数据库管理系统(Database Management System,DBMS)是管理数据库的软件,数据库管理员(Database Administrator,DBA)则是使用数据库管理系统管理数据库的人。下面我们对数据库相关概念进行详细介绍。1.1.1 数据

数据是指对客观事物进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合,是可识别的、抽象的符号。简而言之,数据是符号的集合,是对事物特性的描述。这里的“符号”不仅仅指文字、字母、数字和其他特殊符号,还包括图形、图像、声音等多媒体的表示。例如,“0、1、2”“阴、雨、下降、气温”“学生的档案记录、货物的运输情况”等都是数据。

人们通过获得、识别自然界和社会的不同信息来区别不同事物,得以认识和改造世界。信息是加载于数据之上,对数据进行具有含义的解释。数据和信息是不可分离的,信息依赖数据来表达,数据则生动具体地表达出信息。数据是符号,是物理性的,信息是对数据进行加工处理之后所得到的并对决策产生影响的数据,是逻辑性和观念性的;数据是信息的表现形式,信息是数据有意义的表示。数据是信息的表达、载体,信息是数据的内涵,是形与质的关系。数据本身没有意义,数据只有对实体行为产生影响时才成为信息。

例如,在学生基本信息表中,如果单独看待学号、姓名、性别、身份证号、专业、班级,它们就是数据,如果将这些数据共同组合起来看待,则就是学生基本信息。1.1.2 数据表及其设计规范

数据表(或称表,Data Table)是数据库最重要的组成部分之一。数据库只是一个框架,数据表才是其实质内容。如教务管理系统中,教务管理数据库包括:学生基本信息表、班级表、课程表、专业表、成绩表和毕业表等,这些表用来管理学生入学到毕业期间产生的数据,这些数据表通过一定的规则相互关联,相互作用,共同构成、管理学生学籍信息。

数据表是以行列的形式组织及展现数据的,跟Excel表格一样,都要有一个表头(字段),但数据表中存储着若干相互关联的数据,同一列的数据属性相同,同一行的数据不能重复。图1-1为教务管理系统中学生信息表部分数据,为了保密,学号、姓名和身份证号被部分隐藏。图1-1 教务管理系统中学生信息表部分数据

数据库的设计范式是数据库设计所需要满足的规范,满足规范的数据库是简洁的、结构明晰的、无数据冗余的,同时,不会造成操作(插入INSERT、删除DELETE和更新UPDATE)异常。

数据表的建立需要符合一定的要求,就是至少要满足数据库第三范式,否则与Excel表没有区别,发挥不出数据库的优势。

第一范式(1NF):强调的是列的原子性,即列不能再分成其他几列,也就是说一列只代表一个属性,不能代表多个属性。在学生信息表(学号、姓名、性别、电话)中,“电话”字段一般有固定电话和手机,因此,不符合1NF,需要将“电话”字段拆分,得到学生信息表(学号、姓名、性别、固定电话、手机)。1NF比较容易判断。

第二范式(2NF):首先满足1NF,其次表必须有一个主键,且没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。

例如,在成绩表(学号、课程号、课程名称、成绩、学分)中,主键应该是学号和课程号,成绩完全依赖学号和课程号,但课程名称、学分只依赖课程号,因此成绩表不符合2NF,必须将成绩表拆分为成绩表(学号、课程号、成绩)和课程表(课程号、课程名称、学分)才符合2NF。

不符合2NF的设计容易产生冗余数据和操作异常,例如课程名称和学分,如果同一门课程有N个学生选修,则课程名称和学分就要重复N−1次。其次,更新、插入和删除都会产生异常,如果想添加一个没有学生选修的课程,这是根本行不通的。删除和更新都会操作多条记录,否则就会出现数据不一致的情况。

第三范式(3NF):首先满足2NF,其次非主键列必须直接依赖于主键,不能存在传递依赖,即不能存在非主键列A依赖于非主键列B,非主键列B依赖于主键的情况。

在学生基本信息表(学号、姓名、年龄、专业名称、毕业学分)中,主键是学号,因此在表中存在学号决定专业名称,专业名称决定毕业学分的传递依赖,因此不符合3NF;可以将其拆分为学生基本信息表(学号、姓名、年龄、专业名称)和专业信息表(专业名称、毕业学分)两个表就符合3NF。

不符合3NF的设计同样容易产生冗余数据和操作异常。

1NF保证字段不可拆分,2NF消除非主属性对主键的部分函数依赖,3NF消除非主属性对主键的传递函数依赖。表的建立满足 3NF 就满足需求,此外,还可以升级到巴斯-科德范式(Boyce-Codd Normal Form,BCNF),这样就消除了主属性对主键的传递函数依赖。1.1.3 数据库

数据库是按照数据结构来组织、存储和管理数据的仓库。它出现于20世纪60年代,伴随着信息技术的发展,在20世纪90年代后期得到迅速发展,进入21世纪,数据库理论日臻完善,管理和存储功能也日益智能化。

数据库是以一定方式存储在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。通俗地说,数据库是一个存储数据的仓库,这些数据是按照一定的数学模型组织起来的,具有较小冗余度和较高的数据独立性,能够与其他用户共享数据,是有组织、有管理的数据集合。

教务管理系统数据库中包括学生基本信息表、班级表、课程表、专业表、成绩表和毕业表等众多数据表,这些表对象及其视图、存储过程等对象共同组成了一个数据库。1.1.4 数据库管理系统

数据库管理系统是一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,可对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户可以通过数据库管理系统访问数据库,数据库管理员也可以通过它进行数据库的维护工作。

数据库管理系统提供数据定义语言(Data Definition Language,DDL)、数据操作语言(Data Manipulation Language,DML)、数据控制语言(Data Control Language,DCL)和数据查询语言(Data Query Language,DQL),供用户定义数据库的模式结构与权限约束,实现对数据的创建、删除、修改、查询及对用户的授权等操作。

数据定义语言,用于建立、修改数据库的结构,定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。

数据操作语言,为用户提供UPDATE、INSERT和DELETE功能,完成对数据库的更新、插入和删除操作。

数据控制语言,用来授予或回收访问数据库的某种特权,并控制数据库操作事务发生的时间及效果,对数据库实行监视等功能,如GRANT、ROLLBACK和COMMIT。

数据查询语言,基本结构是由SELECT子句、FROM子句、WHERE子句组成的查询块。1.1.5 数据库的发展

数据模型是数据库的核心和基础,决定着数据在数据库中的存储策略,数据库技术的发展阶段是以数据模型的发展演变为主要标志,主要分为三个阶段:第一代是层次、网状数据库系统,第二代是关系数据库系统,第三代是面向对象数据库系统。

1.层次数据库

层次模型是最早出现的数据模型,它是以树状(层次)结构来表示实体类型及实体间联系的数据模型。现实世界中,许多实体之间的联系本来就呈现出一种很自然的层次结构,如家族关系、行政结构等。层次模型是用树状结构表示实体与实体之间的联系,树中的每一个节点代表一个记录类型,树状结构表示实体类型之间的联系,记录之间的联系通过指针实现,查询效率高。层次模型的限制条件是:①有且只有一个节点,无父节点,此节点代表树的根;②其他节点有且只有一个父节点,是树的枝。

采用层次数据模型的数据库称为层次数据库系统,典型代表是IBM公司1968年推出的IMS (Information Management System),这是一个大型的商用数据库管理系统,曾经得到广泛的应用。

2.网状数据库

在现实世界中,事物之间的联系非常复杂,并非都是层次关系的,因此利用层次结构来表示非树状结构就非常不直接,为了实现非树状结构的表示,因此出现了网状模型。网状模型可以有效地解决非树状结构的表示。

网状模型允许一个以上的节点无双亲以及一个节点可以有多于一个的双亲。网状模型能够表示比层次模型更具有普遍性的结构,不受层次模型两个限制的制约,可以直接地去描述现实世界,而层次模型只是它的一个特例。

与层次模型相同的是,网状模型中也是以记录为数据的存储单位,一个记录包含若干数据项,该数据项可以是多值的、复合的数据。每个记录有一个唯一能够标识它的内部标识符,称为码(Database Key,DBK),它是在记录存入数据库时由数据库管理系统自动赋予。码可以看作记录的逻辑地址,可作为记录的替身,或用于寻找记录。网状数据库是导航式(Navigation)数据库,用户在操作数据库时,不但要说明做什么,还要说明怎么做。例如在查找语句中,不但要说明查找的对象,而且要规定存取路径。

1964年美国通用电气公司Bachman等人开发了第一个网状数据库管理系统 IDS(Integrated Data Store),奠定了网状数据库的基础。在20世纪70年代,曾经出现过大量的网状数据库管理系统产品,比较著名的有Cullinet软件公司的IDMS、Honeywell公司的IDSII、Univac公司的DMS1100、HP公司的IMAGE等。

网状模型对层次结构和非层次结构的事物都能够进行比较自然的模拟,在关系数据库之前,网状数据库管理系统比层次数据库管理系统应用得更普遍,在数据库发展史上,网状数据库曾经占有重要的地位。

3.关系数据库

1970年,IBM的研究员E.F.Codd博士发表了论文《大型共享数据库的关系模型》,文章提出了关系模型的概念,后来陆续发表了多篇文章,奠定了关系数据库的理论基础。

关系模型是用二维表的形式表示实体与实体间的联系的数据模型,关系模型是当前的主流数据模型,它的出现使层次模型和网状模型逐渐退出了数据库的历史舞台。关系数据模型提供了关系操作的特点和功能要求,但对数据库管理系统的语言没有具体的语法要求,对关系数据库的操作是高度非过程化的,用户不需要指出特殊的存取路径,路径的选择由数据库管理系统优化机制来完成。Codd在20世纪70年代初期的论文中论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的理论基础。Codd博士也以其对关系数据库的卓越贡献获得了1981年ACM(Association for Computer Machinery)图灵奖。

关系模型有着严格的数学基础,是以集合论中的关系概念为基础发展起来的,无论实体还是实体间的联系均由单一的结构类型——关系来表示,简单清晰,便于理解和使用。在实际的关系数据库中,关系也称为表,它由表名、行和列组成。表的每一行代表一个元组,每一列称为一个属性,一个二维表就是一个关系,数据则看成是二维表中的元素,操作的对象和结果都是二维表。关系数据库是由若干个表组成的。

关系模型与层次模型、网状模型的本质区别在于数据描述的一致性,模型概念单一,描述实体的数据本身能够自然地反映它们之间的联系,而层次模型和网状模型使用指针来存储和体现联系。尽管关系数据库出现得比层次数据库和网状数据库晚,但它以完备的理论基础、简单的模型、说明性的查询语言和便于使用等特点得到了最广泛的应用。

目前关系数据库是市场上的主流,著名产品有甲骨文公司的Oracle数据库,Microsoft公司的SQL Server和Access数据库,此外还有My SQL、Sybase、Informix、Visual Fox Pro等。

4.面向对象数据库

面向对象是一种认识方法学,也是一种新的程序设计方法学。把面向对象模型和数据库技术结合起来可以使数据库系统的分析、设计与人们对客观世界的认识最为相近。面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。

面向对象模型具有以下优点。

① 易维护。采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,维护也只在局部模块,所以维护起来非常方便,成本也较低。

② 质量高。在设计时,可重用现有的、且在以前的项目中已被测试过的类,使系统满足业务需求并具有较高的质量。

③效率高。在软件开发时,根据设计的需要对现实世界的事物进行抽象,从而产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。

④ 易扩展。由于面向对象模型具有继承、封装、多态的特性,基于此设计出的系统结构具有高内聚、低耦合的特点,故面向对象数据库系统更灵活、更容易扩展,而且成本较低。

人工智能(Artificial Intelligence,AI)应用的需求(如专家系统)也推动了面向对象数据库的发展,专家系统常常需要处理各种复杂的数据类型。与关系数据库不同,面向对象数据库不因数据类型的增加而降低处理效率。由于这些应用需求,20世纪80年代已开始出现一些面向对象数据库的商品和许多正在研究的面向对象数据库。多数的面向对象数据库被用于基本设计的学科和工程应用领域。

面向对象数据库研究的另一个进展是在现有关系数据库中加入许多纯面向对象数据库的功能。在商业应用中对关系模型的面向对象扩展着重于性能优化,即处理各种环境对象的物理表示的优化和增加SQL模型以赋予面向对象特征。如Versant、UNISQL、O2等, 它们均具有关系数据库的基本功能,采用类似于SQL的语言,用户很容易掌握。1.1.6 主流数据库管理系统

目前,商品化的数据库产品主要以关系型数据库为主,技术也比较成熟。SQL Server、Oracle、My SQL、DB2是当前数据库管理系统市场中四大主流产品,市场占有率很高。

1.微软公司的数据库产品

微软公司除了 SQL Server 这个数据库产品外,还有一个桌面级的产品—Microsoft Access,它是Office的一个组件。Access是一个小型的桌面数据库,应用简单,操作容易,主要用于少量数据的处理,在早期的网站和小型公司网站中,都采用了Access数据库。Access的发展是随着Office版本发展的,有Access 2000、Access 2003、Access 2007、Access 2010、Access 2013和Access 2016。

SQL Server数据库是一个企业级的产品,正版的软件是收费产品,能够支持海量数据的存取,满足企业对快速响应、数据安全等要求。SQL Server的版本也不断更新,比较成熟的是SQL Server 2000,在当时非常流行。随着版本不断升级、功能不断增加,出现了SQL Server 2005、SQL Server 2008、SQL Server 2012、SQL Server 2014、SQL Server 2016。

SQL Server在事务处理、数据挖掘、负载均衡等方面功能强大,使数据库应用系统的开发、设计变得快捷方便,同时SQL Server在数据库市场占有相当高的份额。

本书主要以SQL Server 2008为基础来讲解数据库安全技术,大家如果有兴趣可以了解更高版本的功能。

2.甲骨文公司的数据库产品

甲骨文(Oracle)公司的Oracle数据库应用非常广泛,与微软公司的数据库产品相比,其操作难度会大一些,对数据库管理人员要求较高。Oracle数据库作为一个成熟的数据库产品,适用于大型数据库系统,稳定性高。

Oracle公司旗下的另一个产品My SQL也是一个关系数据库管理系统,应用非常广泛,特别是在基于Linux系统的Web应用方面,My SQL通常都是最佳的后台数据库(Linux作为操作系统,Apache或Nginx作为Web服务器,My SQL作为数据库,PHP、Perl、Python作为服务器端脚本解释器)。

3.IBM公司的数据库产品

DB2是IBM公司推出的一个重量级数据库产品,主要应用于金融领域等超大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下。

对用户来说,如何选择数据库管理系统呢?可以从构造数据库的难易程度、程序开发的难易程度、对分布式应用的支持、并行处理、可移植性和可扩展性、数据完整性、并发控制、容错能力、安全控制、支持多种文字处理能力、数据恢复的能力、成本等方面进行综合考虑,选择一个最适合自己的数据库管理系统。1.1.7 数据库安全

数据库安全包含两层含义:第一层是指系统运行安全,系统运行安全通常受到的威胁主要指一些网络不法分子通过互联网、局域网等入侵电脑,使系统无法正常启动,或超负荷让电脑运行大量算法,并关闭CPU风扇,使CPU过热烧坏等破坏性活动;第二层是指系统信息安全,系统信息安全通常受到的威胁主要有攻击者入侵数据库,并盗取想要的资料。数据库系统的安全特性主要是针对数据而言的,包括数据独立性、数据安全性、数据完整性、并发控制、故障恢复等几个方面。

根据一些权威机构的数据泄露调查分析报告,以及对已经发生的信息安全事件进行技术分析,总结出信息泄露呈现出的两个趋势。

①通过B/S(Browser/Server,浏览器/服务器)模式应用,以Web服务器为跳板,窃取数据库中的数据,非常典型的攻击就是SQL注入攻击,主要原因是应用和数据库直接访问协议而没有任何控制。

② 数据泄露常常发生在内部,大量的运营维护人员直接接触敏感数据,导致以防外为主的网络安全失去了用武之地。

数据库安全必须在信息安全防护体系中处于被保护的核心位置,不易受到外部攻击者攻击,同时数据库自身应该具备强大的安全措施,能够抵御并发现入侵者。为了保证数据库安全,应该进行事前诊断、事中控制和事后分析三步操作。

① 事前诊断。利用数据库漏洞扫描系统扫描数据库,给出数据库的安全评估结果,暴露当前数据库系统的安全问题。利用专业的安全软件扫描应用系统,发现应用漏洞,及时堵住;模拟攻击者攻击,对数据库进行探测性分析,重点检查用户权限是否越权等,并收集应用系统漏洞和数据库的漏洞;检查敏感数据是否加密,危险的扩展存储过程是否禁用,端口是否安全,访问协议是否安全等。事前诊断越充分,越有利于系统安全。

② 事中控制。及时关闭数据库服务器,切断攻击者与数据库的联系。尽管会面临一定的损失,但总比数据丢失造成的危害小得多。

③ 事后分析。采用数据库审计功能,对数据库访问日志进行分析,及时发现可疑操作和可疑的数据,及时利用数据库备份进行数据恢复。1.2 SQL Server数据库

在SQL Server中,数据库是表、索引、存储过程和视图等数据库对象的集合,是数据库管理系统的核心内容。数据库的数据分别存储在不同的对象中,而这些对象有些是用户在操作时能够看得到的,如表、索引、存储过程和视图等,这就是数据库的逻辑存储结构。但至于这些对象是如何存放在磁盘中的,作为用户我们不需要关心,只有数据库管理员才能处理相应的物理实现,这些就是数据库的物理存储结构。1.2.1 物理存储结构

1.数据库文件

在物理存储方面,SQL Server数据库至少具有两个操作系统文件:数据文件和日志文件。数据文件是用于存放数据库数据和数据库对象的文件,包括数据和对象,例如表、索引、存储过程和视图。数据文件分为主要数据文件和次要数据文件。日志文件包括恢复数据库中的所有事务所需的信息。为了便于分配和管理,可以将数据文件集合起来,放到文件组中。

主要数据文件:包括数据库的启动信息,并指向数据库中的其他文件。用户数据和对象可存储在此文件中,也可以存储在次要数据文件中。每个数据库有一个主要数据文件。主要数据文件的扩展名是.mdf。

次要数据文件:是可选的,由用户定义并存储用户数据。次要数据文件通过将每个文件放在不同的磁盘驱动器上,从而将数据分散到多个磁盘上。另外,如果数据库超过了单个Windows文件大小限制,可以使用次要数据文件,这样数据库就能继续增长。次要数据文件的建议扩展名是.ndf。

事务日志文件:保存用于恢复数据库的日志信息,每个数据库必须至少有一个日志文件。事务日志文件的建议扩展名是.ldf。

默认情况下,数据文件和日志文件被放在同一个驱动器上的同一个路径下。这是处理单磁盘系统采用的方法。但是,在生产环境中,这可能不是最佳的方法,建议将数据文件和日志文件放在不同的磁盘上,从而保护数据库的安全。

2.文件组

每个数据库都有一个主要文件组,包括主要数据文件和未放入其他文件组的所有次要文件。用户可以创建自定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。

例如,可以分别在3个磁盘驱动器上创建3个文件Data1.ndf、Data2.ndf和Data3.ndf,然后将它们分配给文件组filegroup1。然后,可以明确地在文件组filegroup1上创建一个表。对表中数据的查询将分散到3个磁盘上,从而提高了性能。通过使用在RAID(Redundant Array of Independent Disk,独立磁盘冗余阵列)条带集上创建的单个文件也能获得同样的性能提高。但是,文件和文件组能够轻松地在新磁盘上添加新文件。

主要文件组:包括主要文件的文件组。所有系统表都被分配到主要文件组中。

自定义文件组:用户首次创建数据库或以后修改数据库时明确创建的任何文件组。

系统有一个默认文件组,如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组。不管何时,只能将一个文件组指定为默认文件组。默认文件组中的空间必须足够大,能够容纳未分配给其他文件组的所有新对象。在SQL Server中,PRIMARY文件组是默认文件组,除非使用 ALTER DATABASE 语句进行了更改,否则系统对象和表仍然分配给PRIMARY文件组,而不是新的默认文件组。1.2.2 逻辑存储结构

从数据库应用和管理角度看,SQL Server数据库分为系统数据库和用户数据库两类。用户数据库存放的是与用户业务有关的数据,其中的数据是由用户来维护的。安装SQL Server时会自动安装master、msdb、model、resource和tempdb。系统数据库是由SQL Server数据库管理系统自动维护,这些数据库用于存放维护系统正常运行的信息,通常不需要进行管理,只是了解就行。

master数据库:记录SQL Server实例的所有系统级信息。

msdb数据库:用于SQL Server代理计划警报和作业。

model数据库:用作SQL Server实例中创建的所有数据库的模板。对model数据库进行的修改(如数据库大小、排序规则、恢复模式和其他数据库选项)将应用于以后创建的所有数据库。

tempdb数据库:一个工作空间,用于保存临时对象或中间结果集。

resource数据库:一个只读数据库,包括了SQL Server 2008中的系统对象。系统对象在物理上保留在resource数据库中,但在逻辑上显示在每个数据库的sys架构中。

系统数据库存储着整个SQL Server的系统级信息,对系统来说非常重要,也是攻击者获得数据库信息的直接来源。在后续章节中,还会给大家介绍一些非常重要的系统函数或方法来查询系统级信息。1.2.3 数据表

数据表是SQL Server存储数据的基本单元,用来存储数据和操作的逻辑结构,包括行和列。行是组织数据的单位,每一行表示唯一的一条记录;列主要描述数据的属性,每一列表示记录的一个属性,而且同一个表中的列名必须唯一。

SQL Server数据表分为三类:系统表、用户自定义表(用户表)和临时表,其中视图也是一种特殊的表。

系统表(视图):由系统自动创建并维护。master数据库的数据表存储的是所有与SQL Server有关的信息,包括所有的登录账号、数据库的初始信息等。从SQL Server 2012开始,这些信息存储到resource数据库中了,并以系统视图的形式显示在每个数据库的sys架构中,而master数据库里只存储系统级信息,因此大家在master数据库中仅看到少数几个数据表。其次,msdb数据库的数据表存储的信息大多与备份、恢复以及作业调度等相关。model数据库中所有数据库的模板信息是以系统视图的形式存在的。

用户自定义表:也称为用户表,是用户根据自己的业务需要在SQL Server中建立的表,用户可以根据权限创建、修改、删除用户表。

临时表:临时表存储在tempdb数据库中,而不是存储在用户数据库中。临时表的创建和使用与用户表一样,只不过命名上临时表以“#”开始。例如,创建一个临时表:Create Table #Zhuan Ye(Zhuan Yeld int,Zhuan Ye Ming Cheng varchar(20));或清除一个临时表:Drop Table#Zhuan Ye。临时表一般用于数据处理,处理完数据后临时表失去意义,删除即可。1.2.4 数据完整性

数据完整性是保证数据的正确性和相容性,防止不合语义或不正确的数据进入数据库,是否具备完整性关系到数据库能否真实地反映现实世界。数据库安全首先是保证数据的安全,如果被非法者写入冗余数据,会造成操作数据混乱,就会对正确的数据造成干扰。因此,在建立数据库的数据表时,首先要建立一定的规则,保证数据库的完整性。例如:学生的性别必须是男或女,不能为其他的任何值。课程成绩的范围是0~100分,学生学号是固定长度的一系列数字等,其实每个字段都有特殊的意义,也就有了特殊的取值范围。

数据库的完整性有4类,分别是实体完整性、域完整性、参照完整性和用户定义完整性。

实体完整性:表中有一个主键,其值不能为空或重复,且能唯一地标识对应的记录。实体完整性又称为行完整性,通过PRIMARY KEY约束、UNIQUE约束、索引或IDENTITY属性等可以实现数据的实体完整性。例如,学生基本信息表中,学号为主键,每一个学号列能唯一地标识该学生对应的行记录信息,通过学号列建立主键约束实现学生基本信息表的实体完整性。

域完整性:列数据输入的有效性,又称为列完整性,通过CHECK约束、DEFAULT约束、NOT NULL约束、数据类型和规则等实现域完整性。CHECK约束通过显示输入到列中的值来实现域完整性。例如,学生信息表中的性别列,取值只能是男或女,不能为其他值;在成绩表中,课程成绩的范围是0~100分,低于0分或高于100均为非法数值。

参照完整性:保证主表中的数据与从表中的数据一致,又称为引用完整性,在SQL Server中,通过定义主键与外键之间的对应关系实现参照完整性,参照完整性确保键值在所有表中一致。

主键:主表中能唯一标识每个数据行的一个或多个列。

外键:主表中的主键是从表中的一个字段,也就是说从表中的一个或多个列的组合是主表的主键。

在学生信息表中,学号是主键,在成绩表中学号和课程号的组合是主键,这时候,成绩表中的学号就是学生信息表的外键。

参照完整性就是要保证成绩表中的学号必须能够在学生信息表中存在。

用户自定义完整性:不属于其他任何完整性类别的特定业务规则,所有完整性类别都支持用户自定义完整性,包括CREATE TABLE中所有的列级约束和表级约束、存储过程和触发器。1.2.5 数据约束

数据库的约束主要是保证数据库的完整性,常用的约束有UNIQUE约束、CHECK约束、PRIMARY KEY约束、FOREIGN KEY约束、NOT NULL约束。

PRIMARY KEY约束:主键约束,主键列的值必须是非空且不重复的。

UNIQUE约束:用在非主键列,保证非主键列的值是唯一、不重复的。但允许有一个空值NULL。

FOREIGN KEY约束:从表中的一个或多个列的组合是主表的主键,要保证从表中的字段必须能够在主表中存在。

NOT NULL约束:不允许为空值,也就是说必须输入字符,包括空格字符。

注意

这里所说的空值指的是NULL值,而不是空格字符。1.3 数据库安全威胁来源及对策

数据库作为重要信息的承载主体,存储着各种业务信息,直接关系着一个单位能否正常运行,因此保证数据库的安全是非常重要的。一旦数据库建立好,无论是否接入应用系统,其都存在着安全风险。如果利用数据库作为后台开发网络应用系统,数据库的安全风险就更大。大多数的网络攻击者的攻击行为基本上都是针对各种类型的数据库而展开的,可见数据库的安全与否直接关系到应用系统的安全,或者是服务器的安危。数据库的实际应用有非常多的类型,例如:My SQL、SQL Server、Informix、Sybase、Oracle、DB2等,因此,数据库的安全是一个很严重、涉及面很广,但又非常重要的话题。

其实,SQL Server提供了众多的对策来对抗不同的风险,只要利用好系统的功能,即可保证数据库的安全。

对数据库来说,它的风险主要归纳为内部风险和外部风险,内部风险与数据库设置有关,而外部风险与数据库设置无关,与数据库所处的环境有关的。

对于内部风险来说,一方面是数据库管理系统的风险,另一方面是数据库数据的风险,但数据库管理系统的安全也是为了数据的安全。

对于外部风险来说,主要来源于操作系统风险和网络风险,操作系统的风险无处不在;其次,只要数据库所在服务器联网,就会存在网络风险,哪怕是内网连接。网络安全也是一种特殊的操作系统安全,因为网络风险直接攻击的是操作系统。1.3.1 内部风险来源及对策

内部风险主要由数据库本身的特点决定,一般与数据库管理员的设置或操作有关,只要数据库管理员按照高标准、高要求管理数据库管理系统,设置好各种安全参数,就可以将数据库的安全风险降低。

首先,数据库管理员应该具有良好的职业道德,不管是在职期间还是离职后的一段时间内,都要做到不更改、不攻击、不泄露数据(包括备份的数据)。事实证明,网上泄漏的大多数数据都或多或少地与系统管理员有关,也就是通常说的“内鬼”泄露的。

对数据库管理员来说,数据库内部风险的主要来源及对策如下。

①及时安装补丁。很多网络攻击者利用SQL Server系统的漏洞进行攻击,SQL Server系统软件也是不断进行升级的,一般情况下,都会有SP1、SP2、SP3等补丁。这就需要系统管理员定期留意微软发布的补丁,并及时安装补丁文件,这是数据库管理员应该具有的最基本的安全常识。

② SQL Server版本。一般SQL Server有正版和破解版等版本,如果有条件,建议大家使用正版软件,或者购买正版的云数据库以使成本低一些。如果使用破解版本,只要保护措施做得好,安全也是可以保证的。

利用SQL语句可以直接查询到SQL Server版本及补丁版本。

SELECT SERVERPROPERTY('Product Version') as 产品版本编号, SERVERPROPERTY ('Product Level') as当前补丁版本,SERVERPROPERTY('edition') as软件版本

上面语句及运行结果如图1-2所示。图1-2 查询数据库管理系统的版本

③超级管理用户sa。sa是数据库的超级用户,是默认的、公开的,即每个人都知道SQL Server有一个sa用户,这也是非法入侵者首先攻击的对象。一般要禁用sa用户或给sa用户设置一个相当复杂的密码。

④数据库的默认端口1433。它跟sa一样,1433端口是默认的、公开的。攻击者通常利用1433端口并配合sa,一起发起攻击。另外,Do S攻击(Denial of Service,拒绝服务)会让数据库服务器的CPU负荷增大,达到瘫痪数据库服务器的目的。一般情况下,可以将端口修改为其他的端口,尽量让攻击者找不到;采用防火墙过滤掉该数据库对外开放的端口,禁止一切从外部直接探测1433端口的行为,确保数据库安全或者将特定的连接IP设置到白名单中。

⑤安全验证模式。SQL Server提供两种不同概念的验证模式,分别是Windows验证模式和混合验证模式,这是两种不同级别的安全验证模式。Windows验证模式主要是以系统的账号验证策略为基础,其安全性依赖于系统的安全性,所以要保证采用Windows验证模式的数据库的安全性,前提条件是必须保证Windows的账户策略足够安全。而混合验证模式则是以SQL Server自身的验证机制为基础,其安全性并不能得到很好的保证。

⑥ 用户分配权限过大。网络数据库都采用混合验证模式,因此分配账号时,应坚持分配权限最小原则,不要分配过多的权限给用户,权限够用即可。而且,用户要限制在指定的数据库上,不能操作其他的数据库。

⑦ 数据库备份与负载均衡。数据库的备份就是保证数据库被破坏后能够迅速恢复,不至于由于长时间系统瘫痪而造成巨大的损失,给数据库拥有者保留一个“后悔的机会”,且备份的模式和频率也要选择适度。其次,数据库最好采用主从负载均衡模式,一旦主数据库被攻击瘫痪,从数据库就会变成主数据库立即工作,这样数据库就不至于长时间瘫痪了。

⑧信任IP访问。越少的人访问越安全,不能任何IP地址都能访问,因此,要通过设置入站规则或防火墙来限制数据库访问的信任IP地址,只保证合法的IP能够访问即可,从而有效控制来自网络上的安全威胁。

⑨启用网络协议过多。网络数据库通过TCP/IP协议访问即可,把其他的访问协议全部禁止,避免不必要的安全风险。

⑩ 管理好扩展存储过程,加强对系统级存储过程和扩展存储过程的权限控制。其实在多数应用中根本用不到多少系统的存储过程,而数据库所拥有的这么多系统存储过程只是用来适应广大用户需求的,所以请删除不必要的存储过程,因为有些系统存储过程能很容易地被人利用起来提升权限或进行破坏。在众多的扩展存储过程中,最著名的是xp_cmdshell扩展存储过程,其权限非常大,会给用户带来很多强大的功能,但同样也会带来巨大的安全风险,故一定要删除或者在数据库中Drop掉。禁掉不用的功能。例如数据库的邮件功能、管理动态链接库功能,除非必须使用,否则请禁止这些功能。SQL Server的邮件功能可能会为攻击者制造发布木马和其他病毒以及DoS攻击的机会。其次,邮件功能是需要数据库直接联网对外访问的,因此只要访问网络就会增加被攻击的概率。服务器信任,避免连锁危险。服务器彼此间的信任关系,对于数据库服务器而言也是非常重要的,即使前台应用服务器的安全性已经做到足够高了,但是,仍然需要提高警惕,不能把最重要的数据的安全性寄托在另一台服务器的安全上,防止一台服务器被攻陷,其他与之相信任的服务器全部暴露。例如,攻击者通过利用各种应用系统的漏洞攻陷了前台应用服务器,而数据库服务器对于该被攻陷的应用服务器的访问是完全信任的,那么数据库服务器就会很快被攻击者攻陷,如果这些服务器中关联了多个应用系统,则全部的应用系统就会被攻陷,造成严重的连锁反应。简单地说,不管其他和数据库服务器有业务关联或数据关联的服务器的安全性做得如何高,不管外部链接是否能直接访问内部数据库服务器中的内容,数据库服务器都应该做好独立的安全防护。这一点是非常重要的,也是特别需要注意的。

对数据库开发者来说,数据库内部风险主要来源及对策如下。

① 数据完整性及约束。一旦设置不好,数据库就会存在冗余数据或异常操作,要想避免风险只能提高开发者的设计水平。

② 重要数据明文加密存储。重要数据、敏感数据明文存取会面临巨大的安全风险,数据加密能够有效地保护数据,即使被攻击者获取,但在没有密钥的情况下,仍然无法获得真实的数据。

③防止SQL注入风险。SQL注入风险是主要的网络攻击来源,它是利用SQL语句的特点,通过字符串构造非法的SQL语句来获取数据。在后续的章节中会重点讲述,在此不详细展开。1.3.2 操作系统风险来源及对策

操作系统风险来源主要有操作系统及其操作系统所在的服务器安全、机房安全等风险,需要系统管理员认真检查数据库所在操作系统环境,有一个“干净”的环境,自然就有好心情。

① 机房安全。最好自建专业机房,或者租用专业机房。地震、恶劣天气导致的机房坍塌、突然断电等会直接破坏服务器硬件设备,从而造成数据丢失,尽管这种情况的概率非常小。

② 服务器硬件安全。服务器硬件突然损坏导致的系统直接崩溃、磁盘损坏等会使数据无法恢复。由于服务器的寿命都是有年限的,故这种风险的发生概率还是相对较大的。建议在自建机房成本太高的情况下,租用专业机房、云服务器以有效地避免数据安全风险,将风险概率降到最低。

③ 操作系统安全。数据库要依托操作系统才能运行,在很大程度上也要依赖于操作系统的安全。操作系统的安全直接决定了数据库系统的安全,一旦攻击者攻破操作系统,数据库的安全就无从谈起,将直接暴露在攻击者面前,根本不用攻击者再对数据库进行攻击了。因此操作系统要不断升级更新补丁、开启操作系统自带防火墙或购买专业防火墙软件。其次,在数据库所在操作系统上尽量避免安装其他无关的应用软件,以免其他软件存在的安全漏洞导致操作系统被攻破,从而影响数据库的安全。

④数据库安装磁盘安全。建议所有的SQL服务器的数据和系统文件都安装在NTFS分区上并配置相应的ACL(Access Control List),这样就可以充分利用Windows系统中NTFS文件分区的安全性。NTFS文件系统可以将每个用户允许读写的文件限制在磁盘目录或磁盘目录下的任何一个文件夹上。1.3.3 网络风险来源及对策

随着互联网的迅速发展,特别是移动互联网的迅速发展,基于Web的信息管理系统也不断发展,作为Web平台的数据载体——数据库不断面临着被攻击者攻击的风险。任何软件只要联网,就要承受来自网络的攻击,数据库也不例外,而且数据库是网络攻击的主要对象,因为里面的数据是有价值的,而且价值无法估量。网络攻击主要是攻击Web应用系统和操作系统,让操作系统瘫痪或获取应用软件的数据。网络攻击可能直接绕过Web应用系统获取数据库数据,这是管理员不容易察觉的。

网络风险主要来源及对策如下。

① SQL注入安全。SQL注入是攻击者利用开发者的应用系统引起的对数据库的直接攻击。在1.3.1节,将SQL注入写入了内部风险,这主要还是开发者对特殊字符的过滤不足造成攻击者利用漏洞直接攻击数据库。

② 防火墙安全。防止网络攻击,最简单的、最直接的方法就是利用防火墙进行安全防护。防火墙不仅会提供防御主要网络攻击的功能,还会为Web和数据库提供专门的防护功能,比如1433端口、SQL注入、sa防护等。【思考与练习】

一、选择题

1.数据库管理系统(DBMS)是( )。

A.教学软件

B.应用软件

C.辅助设计软件

D.系统软件

2.关于数据库系统,下列说法正确的是( )。

A.数据库系统的构成包括计算机/网络基本系统、数据库、数据库应用程序和数据库管理员

B.数据库系统的构成包括计算机/网络基本系统、数据库和数据库管理系统

C.数据库系统的构成包括数据库、数据库管理系统、数据库应用程序、数据库管理员以及计算机/网络基本系统

D.数据库系统的构成包括计算机/网络基本系统、数据库、数据库管理系统和数据库应用程序

3.下列哪些功能不是数据库管理系统的功能( )。

A.通信控制

B.处理机控制

C.完整性控制

D.故障恢复

4.关于数据库的风险来源,主要包括( )。(多选)

A.数据库管理员风险

B.数据库管理系统风险

C.操作系统风险

D.网络风险

5.数据库管理系统风险,主要包括( )。(多选)

A.定期更新SQL Server补丁

B.禁用sa用户

C.将默认端口1433修改为其他

D.用户权限分配最小化原则

6.按照传统的数据模型分类,数据库系统可以分为( )3种类型。

A.大型、中型和小型

B.层次、网状和关系

C.数据、图形和多媒体

D.西文、中文和兼容

7.SQL Server 2008用于操作和管理系统的是( )。

A.系统数据库

B.日志数据库

C.用户数据库

D.逻辑数据库

8.“日志”文件用于保存( )。

A.程序运行过程

B.数据操作

C.程序执行结果

D.对数据库的更新操作

9.主数据库文件的扩展名为( )。

A.txt

B.db

C.mdf

D.ldf

10.用于存放系统级信息的数据库是( )。

A.master

B.tempdb

C.model

D.msdb

二、思考题

1.举例说明,数据库泄露导致信息泄露的情况。

2.数据库面临的风险很多,请举例说明。第2章数据库安全层次

在网络环境下,由于工作环境的开放性,数据库可能受到来自多方面的安全攻击,从而导致一系列的安全问题。从层次上看,数据库安全可分为3个层次,分别为网络安全、服务器安全和数据库本身的安全。2.1 网络安全

网络安全是指通过采用各种网络管理、控制和技术措施,使网络系统的硬件、软件及其系统中的数据受到保护,不会因为一些不利因素而使这些资源遭到破坏、更改、泄密,使网络系统连续、可靠、安全地运行。网络安全包括网络系统中硬件的安全、软件的安全和数据的安全。2.1.1 网络安全概述

从一般用户的角度来说,希望涉及个人隐私或商业利益的信息在网络上传输时能保证其机密性、完整性和真实性。从网络运行和管理者的角度来说,希望对本地网络信息的访问、读写等操作进行保护和控制,避免遭受病毒感染、非法存取、拒绝服务和网络资源非法占用等安全威胁,制止和防御网络黑客的攻击。从国家、社会的角度,要对非法的、有害的信息进行过滤,避免对社会产生危害、对国家利益造成损失。

下面来了解一下网络安全的属性、网络攻击的形式以及近年来的一些网络安全事件与影响。

1.网络安全的属性

保密性:确保信息不泄露给非授权用户、实体或过程,或供其利用的特性。

完整性:数据未经授权不能进行改变的特性,即信息在存储或传输过程中保持不被篡改和破坏,只有授权的合法用户才能修改数据,并且可以判断出数据是否已被修改。

可用性:可被授权实体访问并按需求使用的特性,即当需要时能存取所需的信息。例如,网络环境下的拒绝服务、破坏网络和影响系统的正常运行等都属于对可用性的攻击。

可靠性:是指系统在规定的条件下和规定的时间内,完成规定功能的概率。可靠性是网络安全最基本的要求之一。

不可抵赖性:也称为不可否认性,是指通信的双方在通信过程中,对于自己所发送或接收的消息不可抵赖。

2.网络攻击的形式

网络主动攻击主要有4种方式:中断、截获、修改和伪造。

中断:以可用性作为攻击目标,破坏系统资源,使网络不可用。

截获:以保密性作为攻击目标,非授权用户通过某种手段获得对系统资源的访问。

修改:以完整性作为攻击目标,非授权用户不仅获得访问,而且对数据进行修改。

伪造:以完整性作为攻击目标,非授权用户将伪造的数据插入到正常传输的数据中。

3.网络安全事件与影响

在网络给我们带来高效和便捷的同时,网络攻击也呈多样化发展,网络安全事件频发。

2011年12月21日,国内知名程序员网站CSDN遭到黑客攻击,大量用户数据库被公布在互联网上,600多万个明文(信息没有经过加密)的注册邮箱被迫“裸奔”。

2011年12月29日,继CSDN、天涯社区用户数据泄露后,互联网行业人心惶惶,而在用户数据最为重要的电商领域,也不断传出存在漏洞、用户信息泄露等消息。乌云漏洞报告平台发布漏洞报告称,支付宝用户的账号大量泄露,被用于网络营销。

2012年2月9日,有商户向亿邦动力网爆料称,收到了某公司发来的电子邮件,其中包括当当、淘宝、1号店、麦考林在内的多家主流B2C网站用户个人信息。同年7月,京东商城、当当网、1号店等多家电商网站再“集体”被曝用户信息泄露,致使用户财产损失、隐私泄露,电商信息安全问题再次引发“围观”。

2012年11月,包括EMS在内的10余家主流快递企业的快递单号信息被大面积泄露,并衍生出多个专门从事快递单号信息交易的网站。在“淘单114”和“单号吧”两家网站上,展示快递单号的信息均被明码标价。由此引发的快递信息安全问题,成为社会关注的焦点。

2013年2月16日,Apple、Facebook和Twitter等科技巨头都公开表示被黑客入侵,其中Twitter被泄露了25万用户的资料。后经证实,黑客在某网站的HTML中内嵌的木马代码利用Java的漏洞侵入了这些公司员工的电脑。

2014年1月25日,央视新闻频道曝光了由360捕获的全球首个安卓手机木马“不死木马”,国内感染的手机超过50万部。该木马会偷偷下载大量色情软件,造成话费损失;频繁联网,造成电量迅速消耗。与以往所有木马不同的是,该木马被写入手机磁盘引导区,杀毒软件无法彻底将其清除,即使可以暂时查杀,但在手机重启后,木马又会“复活”。

2015年9月17日,网上消息曝光非官方下载的苹果开发环境Xcode中包含恶意代码,会自动向编译的App应用注入信息窃取和远程控制功能。经确认,包括微信、网易云音乐、高德地图、滴滴出行、铁路12306,甚至一些手机银行应用均受影响。App Store(苹果手机应用商店)上超过3000个应用被感染。该事件不仅打破了苹果系统的安全神话,也成为2015年国内影响最大的安全事故。

2016年12月,360互联网安全中心发布了《2016敲诈者病毒威胁形势分析报告》,报告显示作为新型网络犯罪生力军的敲诈者病毒已经泛滥成灾。2016年以来,全国至少有497万多台电脑遭到其攻击,在2016年下半年达到高峰。360安全产品单日拦截到的攻击次数超过2万次, 2016年全球范围内出现的敲诈者病毒攻击事件更是数不胜数。所谓敲诈者病毒(也被称为勒索病毒),就是一类特殊形态的木马,它们通过给用户电脑或手机中的系统、屏幕或文件加密的方式,向目标用户进行敲诈勒索。

据报道,互联网诈骗案件中占比最大的就是钓鱼网站诈骗案,仅2012年一年,钓鱼网站或诈骗网站给网民造成的损失就达到300亿元,触目惊心的数字再次为经常网购的用户敲响了警钟。2012年11月28日,由易观国际举办的主题为“网络安全路在何方”第二期易士堂论坛再次就网络安全话题进行了更深入的交流和探讨,“道德自律与监管震慑”成为与会专家达成的最强呼声。网络安全是一个长期、持续的工作,需要采用适当的技术和安全管理策略,保护计算机硬件、软件和数据不遭到攻击和破坏。安全威胁一旦发生,常常令人措手不及,造成极大的损失。2.1.2 Web应用系统架构

随着计算机网络与信息化技术的高速发展,越来越多的企业、政府机构等都构建了自己的网络信息系统,Web技术已经对我们的工作

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载