(1.3)数据库安全--连接安全(二)

  连接安全是sql server安全配置的第1道防线,它保证只有许可的客户端能够连接sql server,而且可以限制连接可用的通道(各种网络协议)。

1.连接到sql server实例

  sql server 2005数据库引擎使用TDS(表格格式数据流)数据包与应用程序通信,通过SNI(sql server网络接口)协议层,TDS数据包被分装在标准通信协议(例如TCP/IP、Named pipes)的数据包内,并通过标准通信协议在sql server数据库引擎和应用程序之间的网络上传输。除了封包外,SNI(sql server网络接口)协议层也负责将标准在通信协议中的TDS数据包中解包出来。

  SNI协议层取代了早期版本中Net-library(网络库),数据库引擎和sql native client都具有此协议层。SNI协议层不需要配置,如果将服务器和sql native client配置为使用相应的网络协议时,数据库引擎和sql nativeclient将自动使用适当的sni协议层设置。

  SQL Native Client(SQLNCLI)是SQLServer2005新增的一种数据访问技术,它将sql OLEDB访问接口和SQL ODBC驱动程序组合成一个本机动态链接库,同事提供了一个与微软数据访问组件(MDAC)截然不同的新功能。SQLCLI可以作为sql server 2005 tools的一部分,且可以通过sql server安装程序进行安装。

  TDS端点是sql server与客户端之间通信的sql server对象。安装 sql server时,sql server自动为其支持的4个网络协议(TCP/ip、VIA、Named Pipe、Shared Memory)分别创建一个端点,默认情况下,启用协议后,所有用户都可以访问它们。

  从客户端应用程序发送处理请求(T-SQL语句)到sql server服务器,到服务器处理完成并将结果返回给客户端的完成过程如下。

  (1)客户端应用程序通过数据库访问组件,例如sql native client、sql ole db、sql server ODBC驱动程序或db-library DLL发出数据访问请求,此请求将被数据访问组件封装生成TDS数据包;

  (2)TDS数据包被传递到SNI协议层(针对SQL Native Client 数据访问组件),或者是sql server 客户端 Net-Library(非SQL Native Client 数据访问组件的请求);

  (3)SNI协议层或者是客户端Net-Library将TDS数据包封装到标准通信协议的网络协议数据包中,并通过标准通信协议传递到目的地(服务端);

  (4)在服务器上,与网络协议对应的SNI协议层被应用于接受网络协议数据包,并解包出TDS数据包;

  (5)TDS数据包经TDS端点递交给数据库引擎进行处理;

  (6)如果需要将结果返回给客户端时,则沿与接收处理请求相反的线路返回结果;

  (7)客户端收到结果,并通过SNI协议层(或者Net-Library)将网络协议数据还原成TDS数据包,并转给上层的数据库接口,上层数据接口负责将TDS数据包还原为应用程序可以接受的“结果集”。

简短总结:  

客户端与服务器和交互:

  (1)数据库访问组件发出访问请求,并把请求数据封装成DTS数据包

  (2)数据包通过SNI封装到标准通信协议数据包,通过网络传输到服务器

  (3)服务器通过SNI接收该包,并解析出TDS包,之后通过TDS端点递交给数据库引擎处理

  (4)数据库引擎处理完后通过TDS端点把TDS包交给SNI,SNI把它转成标准通协议数据包发给客户端

  (5)客户端通过SNI收到数据包,并把数据包还原成TDS包,然后把它转给上层的数据库接口,上层数据库接口将TDS数据包还原成我们'可接受'的结果集。

  无论客户端应用程序与sql server实例是否在同一台计算机上,两者之间的通信都会经过上述过程。

2.网络协议与TDS端点

  分析客户端应用程序与SQL Server 实例的通信过程,要完成两者之间的连接,需要满足如下几个条件。

  (1)在服务器和客户端安装标准通信用的网络协议

  客户端需要通过操作系统支持的网络连接才能连接到服务器上的sql server实例。因此,无论是客户端还是服务器,都需要安装并配置好操作系统的网络协议,并保证客户端和服务器端的网络连接是正常可用的。

  (2)SQL Server 网络协议

  sql server支持4中网络协议:TCP/IP 、VIA、Named Pipe 和 Shared Memory。客户端和服务端必须至少有一套对应的协议,并且这些协议的工作状态是启用的,这样才能保证客户端和服务端的TDS数据包封装和解包能够正常进行。

  (3)TDS端点

  TDS端点与sql server网络协议对应,它完成sql server与客户端之间的通信。

  在上述条件中,在服务器和客户端安装标准通信用的网络协议时操作系统配置方面的需求,它的安装及配置可以通过Windows相关工具来完成,具体的可参考操作系统的‘帮助’文档。

  其他两部分是sql server特有的配置需求:

  (3.1)sql server网络协议

  sql server网络协议是客户端连接到sql server数据库引擎的通道,必须启用网络协议才能完成连接和信息交换。sql server可同时通过多种协议处理请求(服务端同时请用多种协议);客户端必须使用服务端已经启用的网络协议处理请求(服务端同时启用多种协议);客户端必须使用服务端已经启用的网络协议中的一种与之通讯,如果客户端程序不知道sql server正在监听哪个协议,可以配置客户端按程序尝试多个协议。

                  SQL Server 网络协议

  在sql server网络协议的选择上,由于shared Memory不支持网络连接,因此,如果只希望本地连接,则可以禁止其他协议,只启用该协议。对于VIA协议,由于需要合VIA硬件一起使用,因此是否选择它与硬件的支持相关。剩下的Named Pipes 和 TCP/IP协议,他们均支持原创连接。

  在局域网(LAN)环境中,TCP/IP和Named Pipes在性能方面不相上下;但是,网络速度越慢(广域网或拨号上网网络上),两者的性能差异越明显,这是因为进程间通信(IPC)的机制在对等项间的通信方式不同,具体体现如下:

  【1】Named Pipes通常网络通信交互性更强。一个对等方直到另一个对等方用读取命令请求数据时才发送数据。使用Named Pipes 协议时,在开始读取数据前,网络读取一般包含一系列窥视Named Pipes的信息,这在慢速网络中可能开销非常大,炳辉导致过多的网络流量,其他的网络客户端反过来也会受到影响。

  【2】TCP/IP其数据传输的效率更高,开销更少;数据传输还可以利用TCP/IP性能增强机制的优点,例如窗口化、延迟确认等,这在慢速网络中可能非常有益。对于应用程序的不同类型,这类性能差异可能非常大。

总结:在局域网或广域网或拨号网络中,使用TCP/IP。当网速不是问题时,Named Pipes是更好的选择,因为其功能更强、更易于使用并具有更多的配置选项。

SQL  server网络协议配置,一般可以【开始】-》程序-》【你所安装的数据库版本】-》配置工具

    

然后进入

    

  

猜你喜欢

转载自www.cnblogs.com/gered/p/9168979.html