Sicurezza per i server collegati

Durante una connessione a un server collegato, ad esempio per l'elaborazione di una query distribuita, il server mittente fornisce un nome dell'account di accesso e una password per connettersi al server ricevente per suo conto. Per il corretto funzionamento della connessione, è necessario creare un mapping dell'account di accesso tra i server collegati utilizzando le stored procedure di sistema di SQL Server.

È possibile aggiungere i mapping degli account di accesso dei server collegati tramite sp_addlinkedsrvlogin ed è possibile rimuoverli tramite sp_droplinkedsrvlogin. Il mapping dell'account di accesso di un server collegato definisce un account di accesso remoto e una password remota per il server collegato e l'account di accesso locale specificati. Quando SQL Server si connette a un server collegato per eseguire una query distribuita o una stored procedure, SQL Server cerca gli eventuali mapping dell'account di accesso corrente che esegue la query o la procedura. Se trova un mapping, SQL Server invia l'account di accesso remoto e la password corrispondenti quando si connette al server collegato.

Ad esempio, per il server collegato S1 è stato configurato un mapping dell'account di accesso locale U1 all'account di accesso remoto U2 tramite la password remota 8r4li034j7$. Quando l'account di accesso locale U1 esegue una query distribuita che accede a una tabella archiviata nel server collegato S1, U2 e 8r4li034j7$ vengono passati come ID utente e password quando SQL Server si connette al server collegato S1.

Il mapping predefinito per la configurazione di un server collegato prevede l'emulazione delle credenziali di sicurezza correnti dell'account di accesso. Questo tipo di mapping è noto come mapping automatico. Quando viene aggiunto un server collegato tramite sp_addlinkedserver, per tutti gli account di accesso locali viene aggiunto un mapping automatico predefinito. Se è disponibile la delega degli account di sicurezza e il server collegato supporta l'autenticazione di Windows, è supportato il mapping automatico degli account di accesso autenticati tramite l'autenticazione di Windows.

Nota

Se possibile, utilizzare l'autenticazione di Windows.

Se la delega degli account di sicurezza non è disponibile nel client o nel server mittente o se il server/provider collegato non supporta l'autenticazione di Windows, il mapping automatico non funziona per gli account di accesso che utilizzano l'autenticazione di Windows. Sarà pertanto necessario configurare un mapping di account di accesso locale tra un account di accesso che utilizza l'autenticazione di Windows e un account di accesso specifico nel server collegato che non è autenticato tramite l'autenticazione di Windows. In questo caso, l'account di accesso remoto utilizza l'autenticazione di SQL Server se il server collegato è un'istanza di SQL Server.

Le query distribuite sono soggette alle autorizzazioni per la tabella remota concesse all'account di accesso remoto dal server collegato. SQL Server non esegue tuttavia convalide delle autorizzazioni in fase di compilazione. Le violazioni delle autorizzazioni vengono rilevate al momento dell'esecuzione della query in base a quanto segnalato dal provider.

Nota

Per creare piani di query ottimali quando si utilizza una tabella in un server collegato, è necessario che Query Processor ottenga le statistiche di distribuzione dei dati dal server collegato. Gli utenti con autorizzazioni limitate per qualsiasi colonna della tabella potrebbero non disporre delle autorizzazioni sufficienti per ottenere tutte le statistiche utili, nonché ricevere un piano di query meno efficiente e riscontrare un peggioramento delle prestazioni. Se il server collegato è un'istanza di SQL Server, per ottenere tutte le statistiche disponibili, l'utente deve essere il proprietario della tabella oppure un membro del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner o db_ddladmin sul server collegato.

Test della connessione ai server collegati

In Esplora oggetti fare clic con il pulsante destro del mouse sul server collegato e quindi scegliere Test connessione.