保护 SQL 适配器的最佳做法

在使用或开发使用 Microsoft BizTalk Adapter 进行SQL Server的应用程序时,应遵循的最佳做法以更全面地保护敏感数据。

SQL 适配器与 SQL Server 数据库之间的连接安全最佳做法

  • SQL 适配器不支持帮助保护它与 SQL Server 数据库之间的通信。 必须提供一种机制来帮助确保适配器与 SQL Server 数据库之间交换的数据具有足够的安全级别。

  • 出于安全原因,SQL 适配器不允许在连接 URI 中为 SQL Server 数据库提供用户名密码凭据。 有关向 SQL 适配器提供凭据的替代方法,请参阅本主题的其余部分。

  • SQL 适配器还允许你在连接到 SQL Server 时使用 Windows 身份验证,以通过 Visual Studio 或 BizTalk Server 生成元数据和执行操作。 在使用 Windows 身份验证之前,必须将 Windows 用户添加为 SQL Server Management Studio 中的用户。 有关详细信息,请参阅通过 SQL 适配器使用 Windows 身份验证连接到 SQL Server

    有关详细信息,请参阅SQL Server与适配器之间的安全性

将 SQL 适配器与 BizTalk Server 配合使用的最佳做法

  • SQL 适配器不允许在连接 URI 中为 SQL Server 数据库提供用户名密码凭据。

  • 使用“使用适配器服务加载项”时,请在“配置适配器”对话框的“安全性”选项卡中输入 SQL Server 数据库的用户名密码凭据。

  • 在发送端口上为 SQL 适配器配置 BizTalk WCF-Custom 适配器时,请在“WCF-自定义传输属性”对话框的“凭据”选项卡中输入 SQL Server 数据库的用户名密码凭据。

  • 在接收位置上为 SQL 适配器配置 BizTalk WCF-Custom 适配器时,请从“WCF-自定义传输属性”对话框的“其他”选项卡中输入SQL Server数据库的用户名密码凭据。

  • 在使用适配器服务外接程序生成元数据、配置发送端口或配置接收端口时,还可以使用 Windows 身份验证。 在使用 Windows 身份验证之前,必须将 Windows 用户添加为 SQL Server Management Studio 中的用户。 有关详细信息,请参阅通过 SQL 适配器使用 Windows 身份验证连接到 SQL Server

    有关详细信息,请参阅 SQL 适配器的安全性和BizTalk Server

通过编程解决方案使用 SQL 适配器的安全最佳做法

  • 有时需要在连接 URI 中提供 SQL Server 数据库的用户名密码凭据;但是,如果可能,应避免这样做。

  • 使用“添加适配器服务引用 Visual Studio 插件”时,请在“配置适配器”对话框的“安全性”选项卡中输入 SQL Server 数据库的用户名密码凭据。

  • 在 WCF 通道模型编程中,使用通道工厂上的 Credentials 属性设置SQL Server数据库的用户名密码凭据。

  • 在 WCF 服务模型编程中,使用 WCF 客户端上的 ClientCredentials 属性设置SQL Server数据库的用户名密码凭据。

  • 如果使用 SQL 适配器的应用程序将包含敏感数据库信息的消息跨进程边界发送到另一个服务或客户端,请确保这些消息应用了足够的安全措施,以在环境中提供足够的数据保护。

  • 使用“添加适配器服务引用插件”或从 .NET 应用程序连接到SQL Server时,还可以使用 Windows 身份验证。 在使用 Windows 身份验证之前,必须将 Windows 用户添加为 SQL Server Management Studio 中的用户。 有关详细信息,请参阅通过 SQL 适配器使用 Windows 身份验证连接到 SQL Server

    有关详细信息,请参阅 使用 SQL 适配器进行安全编程

在 IIS 中托管 SQL 适配器的安全最佳做法

将 SQL 适配器作为 Web 服务托管Microsoft Internet Information Services (IIS) 会将 SQL 适配器显示的操作公开给 Web 客户端。 这些操作可能涉及通过 Internet 交换敏感数据,因此应采取措施来帮助确保此数据尽可能安全。

WCF 为 HTTP 传输提供两个标准绑定: BasicHttpBinding 提供没有安全机制的基本 HTTP 传输; WSHttpBinding 支持传输级别和消息级安全机制。

可以通过 HTTPS 连接使用 BasicHttpBinding ,也可以使用 WSHttpBinding 来帮助保护数据。 WCF LOB 适配器 SDK 包含 WCF LOB 适配器服务开发向导,用于为 LOB 项目生成 WCF 服务。 此向导仅支持使用 BasicHttpBinding

还可以开发自定义 HTTP 绑定,以利用环境提供的其他安全机制。 有关 WCF 提供的安全功能的详细信息,请参阅 保护服务和客户端

将 SQL 适配器作为 Web 服务托管时,Web 开发人员应采取措施防止用户键入的字符串直接传递到SQL Server数据库。 例如,如果网站允许用户输入一个值,该值将成为 SELECT 语句中 WHERE 子句的一部分,则应扫描输入字符串以防止向语句中添加其他命令。

WCF 诊断跟踪和消息日志记录的安全最佳做法

WCF 支持诊断跟踪和消息日志记录。 可以通过配置文件或使用 Windows Management Instrumentation (WMI) 来配置诊断跟踪和消息日志记录。 根据你设置的配置选项,WCF 诊断跟踪或消息日志记录可能会向日志文件发出敏感信息,在这些日志文件中,这些信息可能会公开给未经授权的用户观察。

遵循 WCF 文档中提供的建议,通过启用这些功能来缓解暴露的潜在安全威胁。 至少应遵循以下诊断跟踪和消息日志记录最佳做法:

  • 不要在生产环境中启用“详细”或“信息”跟踪。 这可能会导致性能下降。 但是,必须在生产环境中启用“警告”和“错误”跟踪。 如果启用跟踪,则必须采取适当的安全措施来保护数据。 有关详细信息,请参阅 WCF 文档。

  • 确保日志文件和配置文件受访问控制列表 (ACL) 保护。

    以下警告特别适用于客户端应用程序与 SQL 适配器之间交换的消息:

  • WCF 诊断跟踪可以记录标头 (但不能记录与 SQL 适配器交换的消息的正文) 。 由于消息操作位于消息标头中,因此这会显示客户端在 SQL 适配器上调用的操作。

  • 如果 WCF 消息日志记录已启用并且 logMessagesAtServiceLeveltrue,则记录消息头 (但不会记录适配器客户端和 SQL 适配器之间交换的消息的消息正文) 。 由于消息操作位于消息标头中,这会显示客户端在 SQL 适配器上调用的操作。 如果 logEntireMessagetrue为 ,则将记录消息正文。 这可以显示敏感的数据库信息。

    有关启用诊断跟踪时提高安全性的详细信息,请参阅 安全问题和跟踪的有用提示。 有关在启用消息日志记录时提高安全性的详细信息,请参阅 消息日志记录的安全问题

另请参阅

保护 SQL 应用程序