管理安全性 (Service Broker)

Service Broker 提供灵活的安全框架,以帮助您为应用程序提供安全保障。本主题说明管理 Service Broker 安全性时应考虑的注意事项。

计划安全性

每个应用程序都有独特的安全要求。管理安全性的一部分工作就是仔细计划应用程序的要求。传输安全模式、对话安全模式以及内置到 SQL Server 中的安全基础结构能够一起协同工作,来帮助您为应用程序提供安全保障。

所有应用程序都使用内置到 SQL Server 中的安全基础结构。SQL Server 中的每个操作都发生在特定的安全上下文中。在大多数情况下,要专门为应用程序创建 SQL Server 数据库主体。这有助于确保应用程序中的每个步骤都仅以该步骤所必需的特权在安全上下文中运行。例如,指定用于内部激活的主体需要针对 Service Broker 所激活的存储过程的执行权限。存储过程本身可能模拟具有针对队列的 RECEIVE 权限及针对特定表的 UPDATE 权限的用户。通过对应用程序进行设计,可以使应用程序的安全上下文在每一阶段都没有执行意外操作的权限。

在 SQL Server 实例间发送消息的应用程序可以使用传输安全模式、对话安全模式或两者都使用。传输安全模式和对话安全模式提供截然不同的保护措施。

Service Broker 对话安全模式为特定服务间的会话提供端到端的加密和授权。因此,对话安全模式有助于保护数据在传输中免遭探查和修改。传输保密或敏感数据的应用程序或者在不可信的网络上传输消息的应用程序应使用对话安全模式。对话安全模式可以帮助会话中的参与者标识会话中的其他参与者。

由于对话安全模式应用于特定的服务,因此必须将使用对话安全模式的每个服务都配置为使用对话安全模式。但是,一个实例可能会对某些会话使用对话安全模式,而允许其他会话进行不加密的传输。例如,更新客户信息的服务会话可能需要使用对话安全模式,而只是查阅零件编号信息的会话可能不需要对话安全模式。

Service Broker 使用发起会话的数据库中的远程服务绑定来确定会话的安全模式。因此,Service Broker 使用服务名称来确定服务的安全模式。在存在同一目标服务的多个实例的情况下,必须谨慎管理起始服务的路由,以便起始服务仅与包含匹配证书的目标服务进行通信。所有同名服务都必须配置为使用相同的证书。

Service Broker 传输安全模式防止到 Service Broker 端点的未经授权的网络连接、检测传输中消息的改变,并可以选择提供点到点的加密。这有助于保护数据库避免接收不需要的消息。因为传输安全模式应用于网络连接,所以传输安全模式将自动应用于 SQL Server 实例间的所有会话。但请注意,传输安全模式不提供端到端的加密,而且也不为单个会话提供身份验证。

维护安全性

维护 Service Broker 应用程序的安全性包括两个主任务,一个是审核应用程序的配置,另一个是替换应用程序使用的证书。

定期审核应用程序,以确定安全配置未被更改并且安全配置满足应用程序的业务需要。

对话安全模式依赖于用于身份验证和加密的证书。传输安全模式可能也使用证书。证书具有指定的时效,在此时间内证书才有效。此时间开始之前或此时间到期之后,证书无效。Service Broker 不使用当前无效的证书。另外,SQL Server 还包含 ACTIVE FOR BEGIN_DIALOG 选项,以使证书可用于 Service Broker。若要更新证书,请将 ACTIVE FOR BEGIN_DIALOG 选项设置为 OFF,然后创建或加载新证书。加载所有证书之后,更改所有数据库中的当前证书,使这些证书不可用于 Service Broker。然后通过设置 ACTIVE FOR BEGIN_DIALOG 选项更改新证书,使这些证书可用于 Service Broker。

有关证书的详细信息,请参阅证书和 Service BrokerCREATE CERTIFICATE (Transact-SQL)