Ich wollte vor kurzem regelmäßige Zugriffsrechte mit einem Benutzer eines Servers teilen , und ich erkannte , dass eine einfache CREATE USER
und GRANT ALL ON DATABASE
Befehle nicht ließ ihn einfach laufen SELECT
auf den Daten.
Ich möchte einem bestimmten Benutzer Rechte für alle Tabellen aus einer bestimmten Datenbank gewähren, bin mir jedoch nicht sicher, ob es die beste Idee ist, ihm Zugriff auf das gesamte Schema zu gewähren, public
da ich nicht weiß, ob dies eine Art von Privilegien ermöglichen würde Eskalation. Gibt es einen anderen Weg?
GRANT SELECT ON TableName TO [Domain\User]
? Normalerweise ordne ich derdb_datareader
Rolle nur Benutzer zu, wenn sie lediglich Lesezugriff auf alle Tabellen benötigen, aber ich bin mir nicht sicher, wie detailliert Sie sein möchten.Antworten:
Das Privileg auf
DATABASE
gewährt nur allgemeine Verbindungsrechte zur Datenbank und nicht mehr. Ein Benutzer mit genau diesem Recht kann nur sehen, was die breite Öffentlichkeit sehen darf.Um Lesezugriff auf alle Tabellen zu gewähren , benötigen Sie außerdem Berechtigungen für alle Schemas und Tabellen:
Möglicherweise möchten Sie auch Standardberechtigungen für zukünftige Schemas und Tabellen festlegen . Führen Sie für jede Rolle aus, die Objekte in Ihrer Datenbank erstellt
Aber Sie müssen wirklich zuerst das gesamte Konzept verstehen .
Und es ist fast immer besser, Berechtigungen in Gruppenrollen zu bündeln und dann die Gruppenrolle den Benutzerrollen zuzuweisen / zu entziehen. Verbunden:
quelle
myusr
ein Tippfehler? Sollte es nicht seinmyuser
?