Share via


遠端伺服器的安全性

若要對遠端伺服器啟用遠端程序呼叫 (RPC),您必須在遠端伺服器上,甚至在執行 SQL Server 執行個體的本機伺服器上,設定登入對應。依預設,在 SQL Server 中會停用 RPC。此組態以減少其可攻擊介面區來加強伺服器的安全性。在使用 RPC 之前,您必須先啟用此功能。如需詳細資訊,請參閱<sp_configure (Transact-SQL)>。

[!附註]

對遠端伺服器的支援是為了提供回溯相容性。必須對 SQL Server 之遠端執行個體執行預存程序的新應用程式,必須改為使用連結的伺服器。如需詳細資訊,請參閱<連結伺服器>。

設定遠端伺服器

必須在遠端伺服器上設定遠端登入對應。使用這些對應,遠端伺服器便可將來自指定伺服器之 RPC 連接的內送登入對應到本機登入。遠端登入對應可使用 sp_addremotelogin 預存程序在遠端伺服器上進行設定。

[!附註]

SQL Server 不支援 sp_remoteoptiontrusted 選項。

設定本機伺服器

若為 SQL Server 驗證本機登入,則您不需要在本機伺服器上設定登入對應。SQL Server 會使用本機登入與密碼來連接到遠端伺服器。若為 Windows 驗證登入,請在本機伺服器上設定本機登入對應,以定義 SQL Server 執行個體在建立遠端伺服器之 RPC 連接時所使用的登入與密碼。

若為 Windows 驗證所建立的登入,則您必須使用 sp_addlinkedservlogin 預存程序,來建立登入名稱與密碼的對應。這個登入名稱與密碼必須與遠端伺服器所預期的內送登入和密碼相符,如同 sp_addremotelogin 所建立的一樣。

[!附註]

可能的話,請使用「Windows 驗證」。

遠端伺服器安全性的範例

請考量這些 SQL Server 安裝:serverSendserverReceiveserverReceive 的設定是,將來自 serverSend 的內送登入 Sales_Mary,對應到 serverReceive 中的 SQL Server 驗證登入 Alice。另一個來自 serverSend 的內送登入 Joe,則會對應到 serverReceive 中的 SQL Server 驗證登入 Joe

下列的 Transact-SQL 程式碼範例會將 serverSend 設定為對 serverReceive 執行 RPC。

--Create remote server entry for RPCs 
--from serverSend in serverReceive.
EXEC sp_addserver 'serverSend'
GO

--Create remote login mapping for login 'Sales_Mary' from serverSend
--to Alice.
EXEC sp_addremotelogin 'serverSend', 'Alice', 'Sales_Mary'
GO
--Create remote login mapping for login Joe from serverReceive 
--to same login.
--Assumes same password for Joe in both servers.
EXEC sp_addremotelogin 'serverSend', 'Joe', 'Joe'
GO

在 serverSend 上,會針對 Windows 驗證登入 Sales\Mary 對應於登入 Sales_Mary 來建立本機登入對應。Joe 不需本機對應,因為預設會使用相同的登入名稱與密碼,且 serverReceive 會具有 Joe 的對應。

--Create a remote server entry for RPCs from serverReceive.
EXEC sp_addserver 'serverReceive'
GO
--Create a local login mapping for the Windows authenticated login.
--Sales\Mary to Sales_Mary. The password should match the
--password for the login Sales_Mary in serverReceive.
EXEC sp_addlinkedsrvlogin 'serverReceive', false, 'Sales\Mary',
   'Sales_Mary', '430[fj%dk'
GO