Service Broker 使用者層級權限
大多數涉及一個以上執行個體的 Service Broker 應用程式會在特別為應用程式建立之資料庫主體的安全性內容中執行。這些資料庫主體應該具有完成應用程式執行之工作所需的最小權限。
下列考量會套用至為 Service Broker 應用程式建立的資料庫主體:
- 當遠端 Service Broker 應用程式連接到 SQL Server 並將訊息傳遞至執行個體時,會套用 Service Broker 遠端授權。為遠端授權指定的資料庫主體在裝載起始服務的資料庫中必須具有 CONNECT 權限,而且必須具有該起始服務本身的 SEND 權限。使用者必須擁有用於授權的憑證。使用者不需要擁有其他物件、其他權限,或者能用其他任何機制登入。
- 對於開始交談的資料庫主體,該主體在起始服務的佇列上必須具有 RECEIVE 權限。
- 擁有起始服務的資料庫主體在目標服務上必須具有 SEND 權限。
- 對於要將訊息傳送至服務的資料庫主體,該主體在服務上必須具有 SEND 權限。對於在不同執行個體中裝載的服務,Service Broker 對話安全性會決定遠端執行個體中的資料庫主體。 如需詳細資訊,請參閱<Service Broker 對話安全性>。請注意,Service Broker 在檢查 SEND 權限時,不會考慮 Windows 角色中的成員資格。
- 指定為啟動預存程序之使用者的使用者必須具有執行程序的權限。指定的使用者通常有執行程序中之陳述式所需的權限。不過,請注意如果預存程序本身是以 EXECUTE AS 子句定義的,則該預存程序中的陳述式會以預存程序所定義的安全性內容執行。SQL Server 會先將安全性內容設定至為佇列指定的使用者。SQL Server 然後會執行該預存程序,該預存程序則會將安全性內容變更至為程序指定的使用者。
- Service Broker 傳輸安全性使用 SSPI 時,遠端資料庫的服務帳戶在 master 中必須具有 CONNECT 權限,並且還必須對應至登入。因此,遠端 SQL Server 執行個體執行之帳戶必須具有使用「Windows 驗證」登入 SQL Server 的權限。登入不需要具有其他權限或在任何資料庫中擁有物件。
請參閱
其他資源
GRANT Service Broker 權限 (Transact-SQL)
查詢通知權限