复制在分布式环境(从单个域中的 Intranet 到在不受信任的域之间通过 Internet 访问数据的应用程序)中移动数据。 理解在这些不同环境下保护复制连接的最佳方法非常重要。
下面是在所有环境中均与复制相关的信息:
使用行业标准方法来对复制拓扑中计算机间的连接进行加密,如虚拟专用网 (VPN)、传输层安全性 (TLS)(旧称为“安全套接字层 (SSL)”)或 IP 安全性 (IPSEC)。 有关详细信息,请参阅启用数据库引擎的加密连接(SQL Server 配置管理器)。 若要了解如何使用 VPN 和 TLS 通过 Internet 复制数据,请参阅保护通过 Internet 进行的复制。
如果使用 TLS 1.2 来保护复制拓扑中的计算机之间的连接,请为每个复制代理的 -EncryptionLevel 参数指定值 1 或 2(建议值为 2)。 值 1 指定使用加密,但代理不验证 TLS/SSL 服务器证书是否由受信任的颁发者进行签名;值 2 指定验证证书。 Azure SQL 托管实例在实例之间的连接中支持 TLS 1.3,方法是指定值3;同时,在从 Azure SQL 托管实例连接到 SQL Server 时,通过指定值4来支持 TLS 1.3。
有关使用代理的信息,请参阅:
以不同的 Windows 帐户运行每个复制代理,并对所有复制代理连接使用 Windows 身份验证。 有关指定帐户的详细信息,请参阅复制的标识和访问控制。
仅对每个代理授予其所需的权限。 有关详细信息,请参阅 Replication Agent Security Model中的“代理所需权限”部分。
确保所有合并代理和分发代理帐户均在发布访问列表 (PAL) 中。 有关详细信息,请参阅保护发布服务器。
遵循最小权限原则,仅对 PAL 中的帐户授予其执行复制任务所需的权限。 不要向复制不需要的任何固定服务器角色添加登录帐户。
配置快照共享,以允许所有合并代理和分发代理获得读取权限。 对于具有参数化筛选器的发布的快照,请确保将每个文件夹配置为仅允许相应的合并代理帐户进行访问。
配置快照共享,以允许快照代理进行写权限。
如果使用的是请求订阅,请为快照文件夹使用网络共享,而不要使用本地路径。
如果复制拓扑中包含的计算机位于不同的域中,或位于彼此未建立信任关系的域中,则可以对代理建立的连接使用 Windows 身份验证或 SQL Server 身份验证(有关域的详细信息,请参阅 Windows 文档)。 建议使用 Windows 身份验证作为最佳安全配置。
使用 Windows 身份验证:
为适当节点处的每个代理添加一个本地 Windows 帐户(而非域帐户),在每个节点都使用同一名称和密码。 例如,推送订阅的分发代理在分发服务器上运行,并与分发服务器和订阅服务器建立连接。 应将分发代理的 Windows 帐户添加到分发服务器和订阅服务器。
确保给定代理(例如订阅的分发代理)在每台计算机上都以同一帐户运行。
要使用 SQL Server 身份验证:
为适当节点处的每个代理添加一个 SQL Server 帐户,在每个节点都使用同一帐户名和密码。 例如,推送订阅的分发代理在分发服务器上运行,并与分发服务器和订阅服务器建立连接。 应将分发代理的 SQL Server 帐户添加到分发服务器和订阅服务器。
确保给定代理(例如订阅的分发代理)在每台计算机上都以同一帐户建立连接。
需要 SQL Server 身份验证时,UNC 快照共享通常无法访问(例如,防火墙可能阻止访问)。 在这种情况下,可以通过文件传输协议 (FTP) 将快照传输到订阅服务器。 有关详细信息,请参阅通过 FTP 传输快照。
使用数据库主密钥提高安全状况
注释
本部分中的说明目前适用于 SQL Server 2022 CU18 及更高版本,以及 SQL Server 2019 CU31 及更高版本。 这些说明不适用于 Azure SQL 托管实例。
使用 SQL Server 身份验证进行复制时,配置复制时提供的机密存储在 SQL Server 中,具体而言,存储在分发数据库中,对于请求订阅,也存储在订阅服务器数据库中。
若要增强复制的安全态势, 请在 开始 配置复制之前:
- 在托管分发服务器的分发数据库中创建 数据库主密钥(DMK )。
- 对于拉取订阅,还可以在订阅服务器数据库中创建 DMK。
如果在 DMK 之前创建了复制,请先创建 DMK,然后通过更新复制作业的密码来更新复制机密。 可以使用同一密码更新作业,也可以使用新密码。
若要更新复制机密,请使用以下相关存储过程之一更新复制作业的密码:
在没有 DMK 的情况下配置事务复制可能会导致 SQL Server 出现以下警告 14130
: