威胁和漏洞缓解(复制)

适用于:SQL ServerAzure SQL 托管实例

本主题介绍减少复制拓扑所面临威胁的技术。

加密

加密是把数据转换成没有特殊密钥就不能读取、而只有特定的接收者能够读取的数据格式的过程。 复制并不加密存储在表中或通过网络连接发送的数据。 这是有意设计的,因为在传输层有多种加密技术可以使用,其中包括下列行业标准技术:虚拟专用网络 (VPN)、传输层安全性 (TLS)(原名为安全套接字层 (SSL))和 IP 安全 (IPSEC)。 建议对复制拓扑中各计算机之间的连接,使用这些加密方法之一。 有关详细信息,请参阅启用数据库引擎的加密连接(SQL Server 配置管理器)。 若要了解如何使用 VPN 和 TLS 通过 Internet 复制数据,请参阅保护通过 Internet 进行的复制

如果使用 TLS 来保护复制拓扑中计算机间的连接,请为每个复制代理的 -EncryptionLevel 参数指定值 1 或 2(建议指定值 2)。 值 1 指定使用加密,但代理不验证 TLS/SSL 服务器证书是否由受信任的颁发者进行签名;值 2 指定验证证书。 代理参数可以在代理配置文件和命令行中指定。 有关详细信息,请参阅:

就数据库主密钥(用于加密数据)而言,复制具有以下行为:

  • 如果复制所涉及的数据库(发布数据库、订阅数据库或分发数据库)中有主密钥,则复制使用 SQL Server 2012 (11.x) 数据库对称密钥对该数据库中的代理密码进行加密和解密。 如果使用主密钥,则应在复制所涉及的每个数据库中都创建主密钥。 有关创建主密钥的详细信息,请参阅 CREATE MASTER KEY (Transact-SQL)

  • 复制不会复制主密钥。 如果要求订阅服务器上有主密钥,则必须用 BACKUP MASTER KEY 从发布数据库导出主密钥,然后用 RESTORE MASTER KEY 将其导入订阅数据库。 有关详细信息,请参阅 BACKUP MASTER KEY (Transact-SQL)RESTORE MASTER KEY (Transact-SQL)

  • 如果为可附加的订阅数据库定义了主密钥,请使用 @db_master_key_password 参数指定主密钥密码。 这样就可以在订阅服务器上附加数据库了。

有关加密以及主密钥的详细信息,请参阅 Encryption Hierarchy

通过使用复制,您可以发布加密的列数据。 若要在订阅服务器上解密并使用此数据,则订阅服务器上也必须有用于在发布服务器上加密该数据的密钥。 复制并不提供安全机制来传输加密密钥。 您必须在订阅服务器上手动重新创建加密密钥。 有关详细信息,请参阅复制加密列中的数据 (SQL Server Management Studio)

TLS 1.3 支持

SQL Server 2025 (17.x) 预览版和更高版本支持 TLS 1.3 ,用于配置为在 SQL Server 2025 上运行的代理初始化的复制连接。 这适用于包含 SQL Server 和 SQL 托管实例的复制拓扑。

如果使用 TLS 1.3 来保护复制拓扑中实例之间的连接,请为每个复制代理指定值 34 参数 -EncryptionLevel

3 强制实施与 SQL 托管实例的 TLS 1.3 连接,但不会影响到 SQL Server 实例的连接。 使用4的值可为 SQL 托管实例或 SQL Server 2025(17.x)预览版及更高版本的出站连接启用 TLS 1.3,从而连接到其他 SQL Server 或 SQL 托管实例。 对于面向 SQL Server(任何受支持的版本)的连接,必须在目标 SQL Server 主机上安装相应的证书。