Ich suche nach der besten Möglichkeit, den Zugriff auf sys.tables
/ Information Schema
für einen Benutzer / eine Gruppe in SQL Server zu deaktivieren .
Ich habe diesen Thread von 2008 gefunden
Es zeigt einen Weg, wie man den Zugriff auf [sys].[something]
so verweigert :
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
Aber keine Möglichkeit, den Zugriff auf die zu deaktivieren Information Schema
:
DENY SELECT ON INFORMATION_SCHEMA.TABLES To DenySystemTableSelectRole
Das scheint nicht zu funktionieren.
Wie kann ich den Zugriff auf information_schema deaktivieren?
Und gibt es eine einfachere Möglichkeit, den Zugriff auf alle sys
/ zu deaktivieren information_schema
?
Update: Eigentlich kann ich nicht beide der folgenden Anweisungen ausführen:
DENY SELECT ON [sys] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA To reducedDBO
GO
Ich habe versucht, sie auf der spezifischen Datenbank auszuführen, auf der der Benutzer vorhanden ist, und ich habe auch versucht, sie auf dem "Master" auszuführen.
Ich kann immer noch rennen:
SELECT * from
INFORMATION_SCHEMA.TABLES
-> liefert weiterhin Ergebnisse
SELECT * from
sys.TABLES
-> keine Ergebnisse mehr
Das Einbeziehen SCHEMA::
in die Abfrage ermöglichte das Erstellen der Sicherheitselemente
DENY SELECT ON SCHEMA::[sys] TO reducedDBO
GO
DENY SELECT ON SCHEMA::INFORMATION_SCHEMA To reducedDBO
GO
Aber jetzt kann ich noch alle Informationen aus der DB auswählen.
Ich habe mir die Registerkarte "Securables" im Eigenschaftsfenster des Benutzers in Management Studio 2008 angesehen. Sie sieht folgendermaßen aus:
Eintrag, der die Auswahl von sys.tables blockiert
Schema: sys, Name: tables, Typ: View
Berechtigungen für sys.tables: Berechtigung: Auswählen, Erteiler: dbo, Verweigern ist aktiviert
Eintrag, der keine Auswahl blockiert
Schema :, Name: INFORMATION_SCHEMA, Typ: Schema
Berechtigungen für INFORMATION_SCHEMA: Berechtigung: Auswählen, Erteiler: dbo, Verweigern ist NICHT aktiviert (Ich habe versucht, dies zu überprüfen, aber keine Chance.)
Berechtigung: Auswählen, Erteiler: INFORMATION_SCHEMA, Verweigern ist aktiviert
Ich habe versucht, die Berechtigungen über die GUI festzulegen, aber dann erhalte ich den gleichen Fehler, dass das Festlegen von Berechtigungen nur für die Master-DB möglich wäre. Ich habe jedoch nicht den Benutzer / Login zur Sicherheit der Master-DB hinzugefügt.
Lösung:
Die einzige Möglichkeit, die deny
Arbeit für die information_schema
zu erledigen, bestand darin , den Benutzer zur master-db hinzuzufügen und die deny select
auf dem master auszuführen :
DENY SELECT ON [sys].[tables] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA.TABLES To reducedDBO
GO
Und wie in diesem Code kann es nur für einzelne Tabellen ausgeführt werden.