Limita l'elenco di database a quelli con autorizzazione SQL Server
-
03-07-2019 - |
Domanda
Per impostazione predefinita, se ci si connette a un SQL Server remoto tramite un account che ha accesso a dire 1 dei 10 database. Vedrai comunque in Esplora oggetti tutti gli altri database, ovviamente a causa delle autorizzazioni che non puoi effettivamente interrogarli, ma puoi vedere i loro nomi.
Ho sentito che esiste un metodo che disabilita questo comportamento, ma non sono stato in grado di trovare la risposta, qualcuno sa come farlo? Per fare un esempio ho un SQL Server chiamato MyDbServer, ha 4 database,
- MyDatabase
- YourDatabse
- PrivateDatabase
- ReallyPrivateDb
Se ti connetti tramite un account che dispone solo delle autorizzazioni per " YourDatabse " visualizzerai comunque un elenco di tutti gli altri database, i tentativi di interrogazione consentiranno di "selezionare " permesso negato o errore simile.
Per i reson di sicurezza, NON Vogliamo che gli utenti vedano alcun database diverso da quelli a cui sono associati.
Soluzione
Questo blog parla dei metodi per nascondersi DB per SQL 2000 e SQL 2005.
Altri suggerimenti
Dopo aver avuto difficoltà con il mio cliente con le risorse identificate, ho fatto alcuni test e creato questo post sul blog con un po 'più contesto e istruzioni su come farlo funzionare.
Il corto è:
use master
go
deny VIEW any DATABASE to login1
go
dove login1 è l'account di accesso che si desidera limitare.