Sto cercando il modo migliore per disabilitare l'accesso al sys.tables
/Information Schema
per un utente / gruppo in SQL Server.
ho trovato questa discussione dal 2008
Mostra un modo per negare l'accesso in questo [sys].[something]
modo:
DENY SELECT ON [sys].[columns] TO DenySystemTableSelectRole
GO
DENY SELECT ON [sys].[tables] TO DenySystemTableSelectRole
GO
DENY SELECT ON [sys].[syscolumns] TO DenySystemTableSelectRole
GO
DENY SELECT ON [sys].[sysobjects] TO DenySystemTableSelectRole
GO
Ma in nessun modo come disabilitare l'accesso su Information Schema
:
DENY SELECT ON INFORMATION_SCHEMA.TABLES To DenySystemTableSelectRole
Questo sembra non funzionare.
Come posso disabilitare l'accesso a information_schema?
E c'è un modo più semplice disabilitare l'accesso a tutti sys
/ information_schema
?
Aggiornamento: attualmente non posso eseguire entrambe le seguenti affermazioni:
DENY SELECT ON [sys] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA To reducedDBO
GO
Ho provato a eseguirli sul DB specifico in cui esiste l'utente e ho anche provato il "master".
Posso ancora correre:
SELECT * from
INFORMATION_SCHEMA.TABLES
-> restituisce ancora risultati
SELECT * from
sys.TABLES
-> nessun risultato più
Includere SCHEMA::
nella query ha reso possibile la creazione dei valori mobiliari
DENY SELECT ON SCHEMA::[sys] TO reducedDBO
GO
DENY SELECT ON SCHEMA::INFORMATION_SCHEMA To reducedDBO
GO
Ma ora posso ancora selezionare tutte le informazioni dal DB.
Ho dato un'occhiata al "Securables" -Tab nella finestra Proprietà degli utenti in Management Studio 2008, è simile al seguente:
Voce che blocca la selezione di sys.tables
Schema: sys, Nome: tables, Tipo: View
Autorizzazioni per sys.tables: Autorizzazione: Seleziona, Concessore: dbo, Nega è selezionata
Voce che non blocca alcuna selezione
Schema :, Nome: INFORMATION_SCHEMA, Tipo: Schema
Autorizzazioni per INFORMATION_SCHEMA: Autorizzazione: Seleziona, Concessore: dbo, Nega NON è verificato (Ho provato a controllarlo, ma nessuna possibilità ..)
Autorizzazione: Seleziona, Concedente: INFORMATION_SCHEMA, Nega è selezionato
Ho provato a impostare le autorizzazioni sulla GUI, ma poi ho lo stesso errore che l'impostazione delle autorizzazioni sarebbe possibile solo sul DB principale. Ma non ho l'utente / login aggiunto alla sicurezza dei DB master.
Soluzione:
L'unico modo in cui ho potuto fare il deny
lavoro per l' aggiuntainformation_schema
era di aggiungere l'utente al master-db ed eseguire il deny select
sul master:
DENY SELECT ON [sys].[tables] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA.TABLES To reducedDBO
GO
E come in questo codice, può essere eseguito solo per singole tabelle.