资深程序员10年开发经验的总结,深入剖析SQL Server 2012的精髓
全面涵盖SQL Server 2012数据库基础、安全、管理、开发及性能优化
视频教学:专门录制了18小时高清配套教学视频,便于读者更加高效、直观地学习
内容全面:从基础的SQL语法,到复杂的性能优化,涵盖了SQL Server 2012大部分功能
内容新颖:紧跟SQL Server数据库技术的新趋势,总结了大量的全新观点和应用
示例丰富:提供了670个精巧示例和操作,并用T-SQL语句和可视化操作两种方式实现
由浅入深:从基本的数据库概念和操作开始,逐步深入到数据库安全、开发和性能优化
讲解详细:对每个知识点都从概念、语法、示例、技巧和应用等多个角度进行分析
对比分析:对SQL Server 2005/2008/2012等几个最常用版本的不同特性进行了对比分析
《SQL Server 2012王者归来:基础、安全、开发及性能优化》由浅入深,全面细致地讲述了SQL Server 2012的功能特性和开发应用。从SQL Server数据库基础到数据库安全,再到SQL Server开发及数据库性能优化,涵盖SQL Server 2012的所有重要知识点。本书讲解时结合了大量实例,便于读者通过实践更加深刻地理解所学知识。另外,作者专门为本书录制了18小时高清配套教学视频,与本书实例源文件一起收录于配书DVD光盘中。除此外,光盘中还赠送了22小时SQL Server学习视频和3部《程序员面试宝典》电子书,非常超值。
《SQL Server 2012王者归来:基础、安全、开发及性能优化》共22章,分4篇。第1篇SQL Server基础,介绍SQL Server的发展历史、架构、安装及工具等,还介绍了T-SQL基础、数据库基本操作和SQL Server 2012的特色;第2篇数据安全,介绍SQL Server安全、数据文件安全与灾难恢复、复制;第3篇SQL Server开发,介绍数据库设计、SQL Server与CLR集成、在SQL Server中使用XML、使用ADO.NET、使用SMO编程管理数据库对象、高级T-SQL语法、Service Broker——异步应用程序平台、空间数据类型、跨实例链接、数据库管理自动化及商务智能;第4篇数据库性能优化,介绍数据存储与索引、数据查询、事务处理和数据库系统调优工具。
《SQL Server 2012王者归来:基础、安全、开发及性能优化》内容全面,示例精巧而详尽,适合所有想全面学习SQL Server数据库技术的人员阅读,是各个层次的数据库学习人员和广大程序员学习SQL Server的极佳读物,更是IT开发人员的案头必备资料。
超值、大容量DVD光盘
本书涉及的实例源文件
18小时高清配套教学视频
10小时SQL Server入门教学视频
12小时SQL Server进阶实例教学视频
《C#与.NET程序员面试宝典》电子书
《C/C++程序员面试宝典》电子书
《Java程序员面试宝典》电子书
第5 章 SQL Server 2012 安全
随着网络时代的到来,越来越多的业务系统运行在互联网上,越来越多的数据都以比特的方式保存在硬盘上,数据的安全成了人们日益关注的一个问题。作为一款强大的企业级数据库管理系统,SQL Server 在安全方面做了很多的工作。本章将主要讲解SQL Server2012 在安全方面的特性。
5.1 新安全机制概论
可将保护SQL Server 视为一系列步骤,它涉及4 方面:平台、身份验证、对象(包括数据)及访问系统的应用程序。本节将从这4 个方面进行简单的介绍。
5.1.1 平台与网络安全性
SQL Server 的平台包括物理硬件和将客户端连接到数据库服务器的联网系统,以及用于处理数据库请求的二进制文件。物理安全性的最佳实践是严格限制对物理服务器和硬件组件的接触。例如,将数据库服务器硬件和联网设备放在限制进入的上锁房间。此外,还可通过将备份媒体存储在安全的现场外位置,限制对其接触。实现物理网络安全首先要防止未经授权的用户访问网络。
具体实现包括以下几点。
1.关闭不必要的网络协议
在第1 章讲解SQL Server 2012 的协议中已经讲到,SQL Server 2012 支持4 种不同的协议进行连接。如果资源有限,SQL Server 与应用程序是在同一台服务器上(当然,这是一种不推荐的做法),此时就可以只启用SQL Server 的共享内存协议,而将其他协议关闭。只开启共享内存协议后,没有任何人可以通过网络直接连接SQL Server,当然也就提高了网络安全性。
如果SQL Server 服务器和应用程序服务器是在同一个局域网中(例如服务器之间使用网线直接连接)如图5.1 所示,则对外暴露的只有应用程序服务器,数据库服务器与应用程序服务器在同一个局域网中,此时只需开启命名管道协议即可。
2.指定并限制用于SQL Server的端口
由于网络架构原因或其他因素需要将SQL Server 服务器直接暴露在因特网上,如果使用默认的SQL Server 端口1433 将是十分危险的。黑客通过端口扫描便可断定扫描到的服务器是数据库服务器,通过利用系统漏洞、SQL 注入或利用木马病毒等方法获得了数据库的密码后便可直接通过因特网连接数据库服务器,进行破坏。提高因特网上数据库服务器安全的比较实用的方法就是修改SQL Server 的连接端口。
图5.1 应用程序服务器直连数据库服务器
使用SQL Server 配置管理工具可以修改TCP/IP 协议中使用的端口,将端口改为比较陌生的端口,例如8412,或者修改为其他服务的端口例如443(主要是用于HTTPS 服务)都可以误导入侵者,提高系统的安全性。
3.限制对SQL Server的网络访问
仅仅是对默认端口的修改并不能保证数据库的安全,在黑客得知某端口对应的是数据库服务后仍然可以通过各种手段对数据库资料进行窃取和破坏。对于暴露在因特网上的服务器,都应该使用防火墙来限制网络的访问,提高系统的安全。实际上不仅仅是针对因特网,即使是局域网也有必要使用防火墙来提高系统的安全性。如图5.2 所示为一般大中型企业的服务器网络架构,在企业应用中充斥着各种应用服务器,各种服务器上运行着不同的服务,虽然大部分服务器是统一存放在一个机房中,但是在网络上它们之间是互不相连的。所有的服务器都是通过防火墙再与其他系统或用户进行交互。在防火墙上便可以配置服务器之间的网络访问策略。
通过使用防火墙限制对SQL Server 的网络访问可以很大限度地提高数据库的安全性。例如在图5.2 中的网络架构中,如果数据库只用于网站应用,那么在防火墙上便可以设定只有Web 服务器能够访问数据库服务器。这样即使黑客知道了数据库服务器的地址,知道了开放的端口,哪怕知道了数据库的密码也无法通过网络非法访问数据库服务器。服务器之间互不相连可以防止一台服务器被攻陷后,黑客以该服务器为肉鸡(黑客用语,即当做跳板的机器)轻易攻陷其他服务器。例如黑客通过某系统漏洞攻陷了电子邮件服务器,但是由于防火墙限制了电子邮件服务器对数据库服务器的访问,所以数据库服务器仍然是安全的。
4.备份和还原策略
在大中型企业应用中,数据库文件通常保存在SAN 或磁盘阵列上,这样使数据库文件丢失或损坏的几率大大下降,但是为了减少人为误操作或恶意破坏造成的损失,日常对数据库的备份必不可少。
图5.2 一般大中企业服务器网络架构
对数据库应该尽早而且经常备份。如果数据库每天备份,那么即使发生意外,损失顶多是一天的数据;而如果数据库是每周备份一次,则有可能会损失一周的数据。对数据库备份并不是将数据库备份到相同的磁盘上并忘记它。数据库备份应该存放在一个独立的位置(最好是远离现场),以确保其安全,要不然一旦存储发生意外,数据库文件和备份就一同被损坏了。在大型企业中一般采用磁带机进行备份并将备份的磁带专门存储在一个安全的地方。除了物理上和网络上的安全外,操作系统安全性也至关重要。及时更新操作系统Service Pack 和升级包含重要的安全性增强功能。通过数据库应用程序对所有更新和升级进行测试后,再将它们应用到操作系统。减少外围应用是一项安全措施,它涉及停止或禁用未使用的组件。减少外围应用后,对系统带来潜在攻击的途径也会减少,从而有助于提高安全性。限制SQL Server 外围应用的关键在于通过仅向服务和用户授予适当的权限来运行具有“最小权限”的所需服务。
5.1.2 主体与数据库对象安全性
主体是指获得了SQL Server 访问权限的个体、组和进程。“安全对象”是服务器、数据库和数据库包含的对象。每个安全对象都拥有一组权限,可对这些权限进行配置以减少SQL Server 外围应用。安全对象是SQL Server 数据库引擎授权系统控制对其进行访问的资源。通过创建可以为自己设置安全性名为“范围”的嵌套层次结构,可以将某些安全对象包含在其他安全对象中。安全对象范围有服务器、数据库和架构,分别包括以下数据库对象。
服务器安全对象包括:端点、登录账户和数据库。
数据库安全对象包括:用户、角色、应用程序角色、程序集、消息类型、路由、服务、远程服务绑定、全文目录、证书、非对称密钥、对称密钥、约定和架构。
架构安全对象包括:类型、XML 架构集合和对象。这里的对象包括聚合、约束、函数、过程、队列、统计信息、同义词、表和视图。
SQL Server 支持安全套接字层(SSL),并且与Internet 协议安全(IPSec)兼容。启用SSL 加密,将增强在SQL Server 实例与应用程序之间通过网络传输的数据安全性。但是,启用加密的确会降低性能。SQL Server 与客户端应用程序之间的所有通信流量都使用SSL加密时,还需要进行以下额外处理:
由于加密机制的需要,连接时需要进行额外的网络往返。
从应用程序发送到SQL Server 实例的数据包必须由客户端网络库加密并由服务器端网络库解密。
从SQL Server 实例发送到应用程序的数据包必须由服务器端网络库加密并由客户端网络库解密。
除了SQL Server 连接加密以外,SQL Server 还提供了大量函数支持加密、解密、数字签名,以及数字签名验证。加密并不解决访问控制问题。不过,它可以通过限制数据丢失来增强安全性,即使在访问控制失效的罕见情况下也能如此。例如,在数据库主机配置有误且恶意用户获取了包含敏感数据(如信用卡号)数据库的情况下,如果被盗信息已加密,则此信息将毫无用处。
在SQL Server 加密中,证书是在两个服务器之间共享的软件“密钥”,使用证书进行加密后,可以通过严格的身份验证实现安全通信。可以在SQL Server 中创建和使用证书,以增强对象和连接的安全性。
5.1.3 应用程序安全性
实际与用户交流的是应用程序客户端,所以SQL Server 安全性包括编写安全客户端应用程序。不安全的客户端应用程序容易出现SQL 注入漏洞或暴露数据库链接信息。在最简单的情况下,SQL Server 客户端可与SQL Server 实例运行在同一台计算机上。对于一般的企业应用来说,通常一个客户端可能会通过网络连接多个服务器,而一个数据库服务器也可能连接着多个客户端。默认的客户端配置可以满足大多数情况。SQL Server 客户端可以使用多种方式来连接数据库。一般是SQL Server Native Client OLE DB 访问接口连接到SQL Server 实例。使用ADO.NET 编程连接SQL Server,以及sqlcmd 命令提示工具和数据库管理工具SQL Server Management Studio,都是OLE DB 应用程序的例子。另外,随SQL Server 旧版本安装的客户端实用工具则使用SQL Server NativeClient ODBC 驱动程序连接到SQL Server。除了OLE DB 和ODBC 方式外,有些程序是使用DB-Library 的客户端连接数据库。不过SQL Server 对使用DB-Library 的客户端支持,
仅限于Microsoft SQL Server 7.0 功能。无论客户端使用哪种方式连接SQL Server,都应该根据实际项目要求对客户端进行管理。对客户端管理的范围可以小到输入服务器名称,大到生成自定义配置项库,以便满足各种各样的多服务器环境。
……
第1篇 SQL Server基础
第1章 SQL Server 2012概述( 教学视频:44分钟)
第2章 T-SQL基础( 教学视频:70分钟)
第3章 数据库基本操作( 教学视频:76分钟)
第4章 SQL Server 2012的特色( 教学视频:36分钟)
第2篇 数据库安全
第5章 SQL Server 2012安全( 教学视频:75分钟)
第6章 数据文件安全与灾难恢复( 教学视频:60分钟)
第7章 复制( 教学视频:36分钟)
第3篇 SQL Server开发
第8章 数据库设计( 教学视频:43分钟)
第9章 SQL Server与CLR集成( 教学视频:50分钟)
第10章 在SQL Server中使用XML( 教学视频:62分钟)
第11章 使用ADO.NET( 教学视频:60分钟)
第12章 使用SMO编程管理数据库对象( 教学视频:47分钟)
第13章 高级T-SQL语法( 教学视频:50分钟)
第14章 Service Broker——异步应用程序平台( 教学视频:54分钟)
第15章 空间数据类型( 教学视频:45分钟)
第16章 跨实例链接( 教学视频:22分钟)
第17章 数据库管理自动化( 教学视频:42分钟)
第18章 商务智能( 教学视频:49分钟)
第4篇 数据库性能优化
第19章 数据存储与索引( 教学视频:52分钟)
第20章 数据查询( 教学视频:37分钟)
第21章 事务处理( 教学视频:34分钟)
第22章 数据库系统调优工具( 教学视频:25分钟)