我有两个sql Server 2005数据库在不同的服务器,独立的机器,独立的网络上运行.如何确保从一台服务器传输到另一台服务器的数据是安全的?我试过研究这个主题,但我找不到任何东西.
非常感谢,
塞巴斯蒂安
解决方法
>在两台计算机上配置证书.
>配置任何非服务器客户端以信任证书的根签名权限.见How to enable SSL encryption for an instance of SQL Server by using Microsoft Management Console.
>配置服务器以强制所有传入连接使用SSL,以便任何不支持此连接的客户端都将无法连接.在sql Server配置管理器中,在“协议”部分中将ForceEncryption参数设置为“是”.
> OR,而不是前一步,您可以将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中指定加密属性.
请注意,虽然自can configure them to automatically create and sign their own certificates以来服务器不需要安装证书,但最好手动安装它们,因为自身创建的证书可能会遇到问题,因为每次重新启动时它们都会更改.
最好的安全性是客户端专门请求通道加密,因为这不仅加密数据,而且客户端还尝试通过证书验证服务器的身份,有助于减轻中间人攻击.
通过网络加密
另一种选择是在两个服务器的网络之间建立安全隧道(例如VPN),并确保它们之间的流量路由完全通过所述隧道.只要您确定流量超过正确的路线,这也是100%安全的.