Protezione per server remoti

Per attivare le chiamate di procedura remota (RPC, Remote Procedure Call) verso un server remoto, è necessario impostare mapping di account di accesso nel server remoto e, in alcuni casi, nel server locale in cui è in esecuzione un'istanza di SQL Server. Per impostazione predefinita, le chiamate RPC sono disattivate in SQL Server. Questa configurazione migliora la protezione del server riducendone i punti vulnerabili. Prima di utilizzare le chiamate RPC è necessario attivare questa funzionalità. Per ulteriori informazioni, vedere sp_configure (Transact-SQL).

[!NOTA]

Il supporto della configurazione con server remoti viene mantenuto per compatibilità con le versioni precedenti. È preferibile che le nuove applicazioni che eseguono stored procedure su istanze remote di SQL Server utilizzino invece server collegati. Per ulteriori informazioni, vedere Collegamento di server.

Configurazione del server remoto

Nel server remoto è necessario impostare mapping di account di accesso remoti. Tali mapping consentono al server remoto di mappare l'accesso in entrata relativo a una connessione RPC da un server specifico a un account di accesso locale. I mapping di account di accesso remoti possono essere configurati tramite la stored procedure sp_addremotelogin nel server remoto.

[!NOTA]

L'opzione trusted di sp_remoteoption non è supportata in SQL Server.

Configurazione del server locale

Per gli account di accesso locali autenticati di SQL Server, non è necessario configurare un mapping di account di accesso nel server locale. SQL Server utilizza l'account di accesso locale e la password per la connessione al server remoto. Per gli account di accesso di Windows, configurare un mapping di account di accesso locali in un server locale per definire l'account e la password utilizzati da un'istanza di SQL Server per la connessione RPC a un server remoto.

Per gli account di accesso creati dall'autenticazione di Windows, è necessario creare un mapping a un nome di account di accesso e una password utilizzando la stored procedure sp_addlinkedservlogin. Il nome di account di accesso e la password devono corrispondere all'account di accesso e alla password in ingresso previsti dal server remoto, in base a ciò che è stato creato tramite la stored procedure sp_addremotelogin.

[!NOTA]

Se possibile, utilizzare l'autenticazione di Windows.

Esempio di protezione del server remoto

Osservare le seguenti installazioni di SQL Server: serverSend e serverReceive. serverReceive viene configurata per mappare un account di accesso in ingresso da serverSend, denominato Sales_Mary, a un account di accesso autenticato di SQL Server in serverReceive, denominato Alice. Un altro account di accesso in ingresso da serverSend, denominato Joe, è mappato a un account di accesso autenticato di SQL Server in serverReceive*,* denominato Joe.

Il codice di esempio di Transact-SQL seguente consente di configurare serverSend per l'esecuzione di RPC su serverReceive.

--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

In serverSend viene creato un mapping di account di accesso locale autenticato Sales\Mary di Windows a un account di accesso Sales_Mary. Per l'account Joe non è necessario alcun mapping locale, in quanto per impostazione predefinita vengono utilizzati lo stesso nome di account di accesso e la stessa password e serverReceive dispone già di un mapping per 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