默认情况下,两个SQL Server之间传输的数据是否受到保护(加密)?如果没有,有没有办法实现这一目标?
我有两个SQL Server 2005数据库在不同的服务器,独立的机器,独立的网络上运行。如何确保从一台服务器传输到另一台服务器的数据是安全的?我试过研究这个主题,但我找不到任何东西。
非常感谢, 塞巴斯蒂安
答案 0 :(得分:7)
在两台机器上配置证书。
配置任何非服务器客户端以信任证书的根签名权限。请参阅How to enable SSL encryption for an instance of SQL Server by using Microsoft Management Console。
配置服务器以强制所有传入连接使用SSL,以便任何不支持此连接的客户端都无法连接。在SQL Server配置管理器中,在“协议”部分中将ForceEncryption
参数设置为“是”。
或者,您可以将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%安全的。