默认情况下,两个 SQL Server 之间传输的数据是否受到保护(加密)?如果没有,有没有办法做到这一点?
我有两个 SQL Server 2005 数据库在不同的服务器、不同的机器、不同的网络上运行。如何确保从一台服务器传输到另一台服务器的数据是安全的?我曾尝试研究该主题,但找不到任何东西。
非常感谢,
塞巴斯蒂安
最佳答案
通过 SQL Server 加密
ForceEncryption
在“协议(protocol)”部分中将参数设置为"is"。 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 ,最好手动安装它们,因为您可能会遇到自创建证书的问题,因为它们在每次重新启动时都会更改。
最好的安全性是客户端专门请求 channel 加密,因为这不仅会加密数据,而且客户端还会尝试通过证书验证服务器的身份,从而有助于缓解中间人攻击。
通过网络加密
另一种选择是在两台服务器的网络之间建立一条安全隧道(例如 VPN),并确保它们之间的流量路由完全通过该隧道。只要您确定流量通过正确的路线,这也是 100% 安全的。
关于sql-server - 链接的 SQL Server 之间的安全通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731755/