复制安全最佳做法

适用于:SQL ServerAzure SQL 托管实例

复制在分布式环境(从单个域中的 Intranet 到在不受信任的域之间通过 Internet 访问数据的应用程序)中移动数据。 理解在这些不同环境下保护复制连接的最佳方法非常重要。

下面是在所有环境中均与复制相关的信息:

如果复制拓扑中包含的计算机位于不同的域中,或位于彼此未建立信任关系的域中,则可以对代理建立的连接使用 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

  • Azure SQL 托管实例
  • SQL Server 2022 CU18 及更高版本
  • SQL Server 2019 CU31 及更高版本