复制安全最佳做法

适用范围:SQL Server

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

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

  • 使用行业标准方法来对复制拓扑中计算机间的连接进行加密,如虚拟专用网 (VPN)、传输层安全性 (TLS)(旧称为“安全套接字层 (SSL)”)或 IP 安全性 (IPSEC)。 有关详细信息,请参阅启用数据库引擎的加密连接(SQL Server 配置管理器)。 若要了解如何使用 VPN 和 TLS 通过 Internet 复制数据,请参阅保护通过 Internet 进行的复制

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

  • 以不同的 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 传输快照