复制安全性元素

更新日期: 2006 年 12 月 12 日

保护任何软件系统时都要考虑身份验证、授权和加密这三个方面:

  • 身份验证是一个实体(在此上下文中通常是计算机)验证另一实体(也称“主体”**,通常是另一计算机或用户)是否与其自称的身份相符的过程。
  • 授权是给予通过身份验证的主体对资源(例如,文件系统中的文件或数据库中的表)的访问权限的过程。
  • 加密是把数据转换成没有特殊密钥就不能读取、而只有特定的接收者能够读取的数据格式的过程。

身份验证和授权

复制安全性使用身份验证和授权,来控制对复制数据库对象和涉及复制处理的计算机及代理的访问。这是通过三种机制实现的:

  • 代理安全性
    用复制代理安全模式可以对复制代理运行和建立连接所用的帐户进行精细粒度的控制。有关代理安全模式的详细信息,请参阅复制代理安全性模式。有关为代理设置登录名和密码的信息,请参阅管理复制中的登录名和密码
  • 管理角色
    确保使用正确的服务器和数据库角色进行复制的建立、维护和处理。有关详细信息,请参阅复制的安全角色要求
  • 发布访问列表 (PAL)
    通过 PAL 授予对发布的访问权限。PAL 的功能与 Microsoft Windows 的访问控制列表相似。当有订阅服务器连接到发布服务器或分发服务器并请求访问发布时,将对照 PAL 检查代理传递的身份验证信息。有关 PAL 的详细信息和最佳方法,请参阅保护发布服务器的安全

加密

复制并不加密存储在表中或通过网络连接发送的数据。这是有意设计的,因为在传输层有多种加密技术可以使用,其中包括下列行业标准技术:虚拟专用网络 (VPN)、安全套接字层 (SSL) 和 IP 安全 (IPSEC)。建议对复制拓扑中各计算机之间的连接,使用这些加密方法之一。有关详细信息,请参阅加密与 SQL Server 的连接。有关通过 Internet 使用 VPN 和 SSL 复制数据的信息,请参阅保证通过 Internet 复制的安全

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

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

  • 如果复制所涉及的数据库(发布数据库、订阅数据库或分发数据库)中有主密钥,则复制使用 SQL Server 2005 数据库对称密钥对该数据库中的代理密码进行加密和解密。如果使用主密钥,则应在复制所涉及的每个数据库中都创建主密钥。如果复制所涉及的数据库中没有主密钥,则复制使用 SQL Server 2000 中的可用算法对该数据库中的代理密码进行加密和解密。有关创建主密钥的详细信息,请参阅 CREATE MASTER KEY (Transact-SQL)
  • 复制不会复制主密钥。如果要求订阅服务器上有主密钥,则必须用 BACKUP MASTER KEY 从发布数据库导出主密钥,然后用 RESTORE MASTER KEY 将其导入订阅数据库。有关详细信息,请参阅 BACKUP MASTER KEY (Transact-SQL)RESTORE MASTER KEY (Transact-SQL)
  • 如果为可附加的订阅数据库定义了主密钥,请用 sp_attachsubscription (Transact-SQL)@db_master_key_password 参数指定主密钥密码。这样就可以在订阅服务器上附加数据库了。

有关加密以及主密钥的详细信息,请参阅加密层次结构

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

筛选已发布数据

除了使用身份验证和授权来控制对被复制的数据和对象的访问之外,复制还包含两个选项,用来控制订阅服务器上哪些数据可用:列筛选和行筛选。有关筛选的详细信息,请参阅筛选已发布数据

定义项目时,可以只发布那些发布所必需的列,而省略那些不必要或包含敏感数据的行。例如,从 AdventureWorks 数据库向现场销售代表发布 Customer 表时,可以省略 AnnualSales 列,此列可能仅与公司的高层管理者有关。

通过筛选已发布数据,可以限制对数据的访问,并可指定订阅服务器上的可用数据。例如,可以筛选 Customer 表,以使公司合作伙伴们只收到其 ShareInfo 列的值为“yes”的客户的信息。对于合并复制,如果使用包括 HOST_NAME() 的参数化筛选器,则需要考虑安全问题。有关详细信息,请参阅参数化行筛选器中的“使用 HOST_NAME() 筛选”部分。

请参阅

概念

复制安全最佳实践

其他资源

复制的安全注意事项

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

新增内容: