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 使用的选项。 为了更新证书,请使用活跃状态的开始对话框选项设置OFF来创建或加载新证书。 加载所有证书后,更改所有数据库中的当前证书以使证书对 Service Broker 不可用,然后通过设置 ACTIVE FOR BEGIN_DIALOG 选项来更改新证书,以便这些证书可供 Service Broker 使用。
有关证书的详细信息,请参阅 证书和 Service Broker 以及 CREATE CERTIFICATE。