Nega l'accesso allo schema delle informazioni in SQL Server
Domanda
Sto cercando il modo migliore per disabilitare l'accesso al sys.tables
/ Information Schema
Per un utente / gruppo in SQL Server.
ho trovato Questo thread dal 2008
Mostra un modo su come negare l'accesso [sys].[something]
così:
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 sul Information Schema
:
DENY SELECT ON INFORMATION_SCHEMA.TABLES To DenySystemTableSelectRole
Questo sembra non funzionare.
Come posso disabilitare l'accesso a Information_Schema?
E esiste un modo più semplice Disabilita l'accesso a tutti sys
/ information_schema
?
Aggiornare:In realtà 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 i risultati
SELECT * from
sys.TABLES
-> nessun risultato più
Compreso SCHEMA::
Nella query ha reso possibile creare gli utente
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 tab "Iardabili" nel Window di proprietà degli utenti in Management Studio 2008, sembra così:
Voce che blocca la selezione di sys.Tables
Schema: sys, nome: tabelle, tipo: visualizza
Autorizzazioni per sys.Tables: autorizzazione: selezione, concedente: dbo, negazione di negazione
Voce che non blocca alcuna selezione
Schema :, Nome: Information_Schema, Tipo: Schema
Autorizzazioni per informazioni_schema: autorizzazione: selezione, concedente: dbo, negazione non è controllata (ho provato a controllarlo, ma nessuna possibilità ..)
Autorizzazione: selezionare, concedente: information_schema, negazione di negazione
Ho provato a impostare le autorizzazioni sulla GUI, ma poi ottengo lo stesso errore che le autorizzazioni di impostazione sarebbero state possibili solo sul DB Master. Ma non ho l'utente/accesso aggiunto alla sicurezza DBS Master.
Soluzione:
L'unico modo in cui potrei fare il deny
lavorare per il information_schema
era a Aggiungi l'utente al Master-DB e eseguire il deny select
sul maestro:
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.
Nessuna soluzione corretta