Server collegato disponibile per gli utenti senza autorizzazioni


9

Ho utenti che vedono un server collegato che non dovrebbero vedere.

Il server collegato è definito in modo che solo io possa accedervi, ma tutti possono vederlo e usarlo.

Ho creato il nuovo server collegato utilizzando i seguenti passaggi:

  1. Connettere Esplora oggetti SSMS all'istanza di SQL Server
  2. Espandi Server Objects, fai clic con il tasto destro Linked Serverse fai clic con il tasto sinistroNew Linked Server...
  3. Nella Generalscheda scegliere SQL Serverper Server typee scrivere il nome del server
  4. Nella Securityscheda nella parte superiore fai clic su Add, seleziona "sa" come Local Login, inserisci Remote Useril nome eRemote Password
  5. Nella Securityscheda nella parte inferiore (sotto For a login not defined in the list above, connections will:) scegliere la prima opzione:Not be made
  6. Fare clic OKe iniziare il test

Ora l'unica persona che dovrebbe vedere il server collegato sono io ("sa"), ma in qualche modo gli altri utenti possono vederlo e usarlo.

Nota 1: gli utenti che possono utilizzare il server collegato hanno autorizzazioni sul server remoto, non vedono dati che non dovrebbero vedere, sono in grado di accedervi dal server collegato quando non dovrebbero essere in grado di farlo.

Nota 2: sono l'unico sysadminsu entrambi i casi.


1
Beh, non puoi davvero nascondere il server collegato, ma quando provano a usarlo, se il loro contesto di accesso corrente non ha autorizzazioni all'altra estremità ...
Aaron Bertrand

@AaronBertrand È possibile nascondere un server collegato semplicemente non fornendo l'accesso ad esso. Un account di accesso che non è definito nell'elenco di accessi consentiti e che non è un amministratore di sistema non può vedere il server collegato in Esplora oggetti.
Roi Gavish,

@AaronBertrand Se il loro contesto di accesso corrente ha autorizzazioni all'altra estremità, non dovrebbero comunque essere in grado di connettersi tramite il server collegato se non gli è permesso.
Roi Gavish,

1
No, non puoi nascondere il server collegato in quel modo. Hai provato questo?
Aaron Bertrand

Risposte:


7

Non è possibile "nascondere" un server collegato o impedire a utenti non autorizzati di tentare di utilizzarlo. Tutto quello che puoi controllare è se hanno effettivamente accesso dall'altra parte. Un server collegato in sé e per sé non è un oggetto reale; come un sinonimo, non concedi l'accesso all'alias, ma solo alle cose a cui fa riferimento.

Provalo e vedrai che alcuni dei tuoi presupposti (ad esempio che "un login ... non può vedere il server collegato in Esplora oggetti") sono falsi. L'ho fatto:

  1. Creato un accesso e non ha concesso alcun privilegio, solo CONNECT / ruolo pubblico.
  2. Creato un server collegato e non ha aggiunto questo accesso all'elenco degli accessi.
  3. Ha aperto una nuova istanza di Management Studio, connettendosi con questo accesso.
  4. Sono stato in grado di vedere tutti i server collegati in Oggetti server> Server collegati.
  5. Sono stato anche in grado di eseguire una query sys.serversper visualizzare l'elenco dei server collegati.

Sono stato in grado di eseguire la seguente query senza problemi:

SELECT name FROM [linked server].master.sys.objects;

Tuttavia, non sono stato in grado di eseguire query su database non di sistema, poiché non avevo concesso l'accesso esplicito a nessun database non di sistema o agli oggetti all'interno. Per esempio:

SELECT SalesOrderID FROM [linked server].AdventureWorks2012.Sales.SalesOrderHeader;

Ha restituito questo errore:

Messaggio 7314, livello 16, stato 1, riga 1
Il provider OLE DB "SQLNCLI11" per il server collegato "server collegato" non contiene la tabella "" AdventureWorks2012 "." Vendite "." SalesOrderHeader "". La tabella non esiste o l'utente corrente non dispone delle autorizzazioni per quella tabella.

Mi aspetto che tu possa ottenere risultati più restrittivi negando esplicitamente l'accesso a oggetti specifici sul server collegato (o tramite DENY CONNECT SQLtale accesso del tutto), ma ciò non limita i suoi effetti al server collegato; influenza anche le connessioni dirette.

In ogni caso, non riesco a vedere il punto di ciò che stai cercando di realizzare:

  1. Se l'utente non ha accesso dall'altra parte, qual è il danno nel fargli provare ? (Potresti avere più fortuna a dire loro di non farlo e di controllarli piuttosto che cercare di impedire loro di provare in primo luogo.)
  2. Se l'utente ha l'accesso sul lato opposto, perché non possono utilizzare il server collegato?

2

È possibile utilizzare la prima opzione "Non essere effettuato con" una mappatura di accesso come di seguito:

inserisci qui la descrizione dell'immagine

Ecco il risultato con il login mappato:

inserisci qui la descrizione dell'immagine

Ed ecco cosa succede con un altro account

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.