链接SQL Server之间的安全通信

时间:2010-09-16 23:56:35

标签: sql-server sql-server-2005 encryption

默认情况下,两个SQL Server之间传输的数据是否受到保护(加密)?如果没有,有没有办法实现这一目标?

我有两个SQL Server 2005数据库在不同的服务器,独立的机器,独立的网络上运行。如何确保从一台服务器传输到另一台服务器的数据是安全的?我试过研究这个主题,但我找不到任何东西。

非常感谢, 塞巴斯蒂安

1 个答案:

答案 0 :(得分:7)

通过SQL Server加密

  1. 在两台机器上配置证书。

  2. 配置任何非服务器客户端以信任证书的根签名权限。请参阅How to enable SSL encryption for an instance of SQL Server by using Microsoft Management Console

  3. 配置服务器以强制所有传入连接使用SSL,以便任何不支持此连接的客户端都无法连接。在SQL Server配置管理器中,在“协议”部分中将ForceEncryption参数设置为“是”。

  4. 或者,您可以将Encrypted=yes添加到连接/链接服务器的提供者/连接字符串,而不是前一步骤。例如,如果您使用sp_addlinkedserver注册链接服务器,它可能如下所示:

    EXEC master.dbo.sp_addlinkedserver
       @server = N'LinkedServerName',
       @srvproduct = N'',
       @provider = N'SQLNCLI',
       @datasrc = N'Server\InstanceName',
       @provstr = N'Encrypt=yes;',
       @catalog = 'DatabaseName'
    ;
    

    我不建议您使用选项TrustServerCertificate=True,因为这会禁止客户端验证其连接的服务器的身份。

    此外,如果使用ODBC,则可以在DSN中指定加密属性。

  5. 请注意,虽然自can configure them to automatically create and sign their own certificates以来服务器不要求安装证书,但最好手动安装它们,因为您可能会遇到自行创建的证书问题因为他们每次重启都会改变。

    最佳安全性是客户端专门请求通道加密,因为这不仅加密数据,而且客户端还尝试通过证书验证服务器的身份,有助于减轻中间人攻击

    通过网络加密

    另一种选择是在两个服务器的网络之间建立安全隧道(例如VPN),并确保它们之间的流量路由完全通过所述隧道。只要您确定流量超过正确的路线,这也是100%安全的。