使用或开发使用 Microsoft BizTalk Adapter for SQL Server 的应用程序时,应遵循的最佳做法可以更全面地保护敏感数据。
SQL 适配器与 SQL Server 数据库之间的连接的安全最佳做法
SQL 适配器不支持帮助保护它与 SQL Server 数据库之间的通信。 必须提供一种机制,以帮助确保适配器和 SQL Server 数据库之间交换的数据具有足够的安全级别。
出于安全原因,SQL 适配器不允许在连接 URI 中为 SQL Server 数据库提供用户名密码凭据。 有关向 SQL 适配器提供凭据的替代方法,请参阅本主题的其余部分。
通过 SQL 适配器,还可以在连接到 SQL Server 时使用 Windows 身份验证,以通过 Visual Studio 或 BizTalk Server 生成元数据和执行作。 在使用 Windows 身份验证之前,必须在 SQL Server Management Studio 中将 Windows 用户添加为用户。 有关详细信息,请参阅 使用 SQL 适配器通过 Windows 身份验证连接到 SQL Server。
有关详细信息,请参阅 SQL Server 和适配器之间的安全性。
使用 BizTalk Server 的 SQL 适配器的安全最佳做法
SQL 适配器不允许在连接 URI 中为 SQL Server 数据库提供用户名密码凭据。
使用“使用适配器服务加载项”时,请从“配置适配器”对话框的“安全”选项卡输入 SQL Server 数据库的用户名密码凭据。
在发送端口上为 SQL 适配器配置 BizTalk WCF-Custom 适配器时,请从“WCF-Custom 传输属性”对话框的“凭据”选项卡输入 SQL Server 数据库的用户名密码凭据。
在接收位置上为 SQL 适配器配置 BizTalk WCF-Custom 适配器时,请从“WCF-Custom 传输属性”对话框的“其他”选项卡输入 SQL Server 数据库的用户名密码凭据。
使用适配器服务外接程序生成元数据、配置发送端口或配置接收端口时,也可以使用 Windows 身份验证。 在使用 Windows 身份验证之前,必须在 SQL Server Management Studio 中将 Windows 用户添加为用户。 有关详细信息,请参阅 使用 Windows 身份验证通过 SQL 适配器连接到 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 身份验证之前,必须在 SQL Server Management Studio 中将 Windows 用户添加为用户。 有关详细信息,请参阅 使用 Windows 身份验证和 SQL 适配器连接到 SQL Server。
有关详细信息,请参阅 使用 SQL 适配器进行安全编程。
在 IIS 中托管 SQL 适配器的安全最佳做法
将 SQL 适配器托管在 Microsoft Internet Information Services (IIS)中作为 Web 服务,将由 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 消息日志记录并且
logMessagesAtServiceLevel
是true
,则会记录适配器客户端和 SQL 适配器之间交换的消息的消息标头(但不是消息正文)。 由于消息操作位于消息标头中,这会显示客户端在 SQL 适配器上调用的操作。 如果logEntireMessage
也是true
,则会记录消息正文。 这可以揭示敏感的数据库信息。有关在启用诊断跟踪时提高安全性的详细信息,请参阅 “安全问题”和“跟踪有用提示”。 有关在启用消息日志记录时提高安全性的详细信息,请参阅 消息日志记录的安全问题。