Share via


憑證與 Service Broker

此主題描述 SQL Server 如何使用憑證來取得 Service Broker 遠端安全性。Service Broker 遠端安全性是指涉及一個以上 SQL Server 執行個體的作業,而這些作業使用對話安全性或傳輸安全性。

概觀

Service Broker 遠端安全性會將執行個體以外的作業對應至 SQL Server 資料庫主體。然後,作業會在檢查一般 SQL Server 權限的情況下,於該資料庫主體的安全性內容中繼續進行。例如,當使用對話安全性之交談的訊息抵達時,Service Broker 會使用訊息中的資訊來識別交談之遠端方的資料庫主體。然後,SQL Server 會驗證此主體是否具有連接到主控目的地服務之資料庫的權限,以及將訊息傳送至目的地服務的權限。

SQL Server 使用憑證來驗證遠端資料庫的識別,並識別此作業的本機資料庫主體。因此,在 SQL Server 中安裝憑證會構成包含此憑證私密金鑰之資料庫中的信任陳述式。小心管理您安裝的憑證和您建立的遠端服務繫結。

安全性注意事項安全性注意事項

僅安裝來自受信任來源的憑證。不要散發私密金鑰。

若要驗證遠端伺服器的識別,SQL Server 必須接收能使用本機資料庫主體所擁有的憑證之公開金鑰來解密的資訊。如果 SQL Server 能順利地對這些資訊進行解密,則意味著遠端資料庫包含與本機憑證之公開金鑰相對應的私密金鑰。一旦 SQL Server 驗證了遠端資料庫的識別,遠端資料庫就可以使用本機資料庫主體的權限執行作業。

對於傳輸安全性,每個資料庫都必須信任其他資料庫。傳輸安全性可以使用憑證或「Windows 驗證」。如需有關傳輸安全性的詳細資訊,請參閱<Service Broker 傳輸安全性>。

對於對話安全性,對話的起始端必須信任目標,且必須能驗證目標的識別。不過,目標可以連接未提供識別資訊的起始端。在此情況下,起始端使用主控目標服務之資料庫中的 public 角色。對話安全性始終會使用憑證。如需有關對話安全性的詳細資訊,請參閱<Service Broker 對話安全性>。

SQL Server 不透過憑證提供設定 Service Broker 安全性的自動化方法。

憑證需求

若要用於 Service Broker 安全性,則憑證必須符合下列需求:

  • 金鑰模數必須小於 2048。

  • 憑證總長度必須小於 32 KB。

  • 必須指定主旨名稱。

  • 必須指定有效性日期。

  • 金鑰長度的位元數必須是 64 的倍數。

以 Transact-SQL 陳述式 CREATE CERTIFICATE 建立的自我簽署憑證符合以上清單中所列的需求。從檔案載入的憑證可能不符合這些需求。

當憑證儲存在 SQL Server 中時,憑證必須用此資料庫的主要金鑰加密。Service Broker 不能使用僅用密碼加密的憑證。另外,資料庫的主要金鑰還必須用執行個體的服務金鑰進行加密。否則,Service Broker 無法開啟主要金鑰。

為了 SQL Server 能使用憑證開始交談,憑證必須標示為 ACTIVE FOR BEGIN_DIALOG。依預設,憑證會標示為可用於開始對話。不過,您可以選擇在更新服務的安全性組態時暫時停用憑證。如需詳細資訊,請參閱<CREATE CERTIFICATE (Transact-SQL)>和<ALTER CERTIFICATE (Transact-SQL)>。