【发布时间】:2012-07-11 13:10:56
【问题描述】:
我是 MS Sql 服务代理的新手。
我查看了几个教程。但我找不到答案。
我有分布式服务器,但幸运的是它们都在同一个域下。
有没有可能在不使用任何证书的情况下完成一个结构?
【问题讨论】:
标签: sql sql-server service-broker
我是 MS Sql 服务代理的新手。
我查看了几个教程。但我找不到答案。
我有分布式服务器,但幸运的是它们都在同一个域下。
有没有可能在不使用任何证书的情况下完成一个结构?
【问题讨论】:
标签: sql sql-server service-broker
是的。
不要使用对话安全。确保您的所有BEGIN DIALOG 语句都使用ENCRYPTION = OFF 子句:
BEGIN DIALOG @handle
FROM SERVICE @from_service
TO SERVICE @to_service
ON CONTRACT @contract
WITH ENCRYPTION = OFF;
在每个目的地服务上授予SEND[public] 的权限:
GRANT SEND ON SERVICE::<servicename> TO [public];
在ENDPOINTs 上使用WINDOWS 身份验证:
CREATE ENDPOINT broker
STATE = STARTED
AS TCP (LISTENER_PORT = 4022)
FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS);
向您的 SQL 服务使用的域帐户授予 CONNECT ENDPOINT 权限:
GRANT CONNECT ON ENDPOINT::broker TO [domain\sqlserviceaccount];
(已编辑以更正 GRANT SEND 语法)
【讨论】:
Remus,你能用加密而不用主密钥加密来做这件事吗?我看到当我使用AUTHENTICATION = WINDOWS 时,我也可以使用ENCRYPTION = SUPPORTED。阅读 SB,有两种类型的加密(传输和消息)。
这都在同一个内部网络上,但我宁愿不使消息的内容可读。我认为这只是意味着我需要传输安全性——我不知道这是否需要证书或主密钥加密。
谢谢!
【讨论】: