SQL User anlegen mit wenig Rechten

02/02/2009 - 08:37 von Tom | Report spam
Hallo,

ich brauch für einen SQl Server 2005 einen neuen SQL User der nur
einen View selecten können soll.

Nach folgendem Komando habe ich ja schon mal eine Anmeldung:

create login tom
with password = 'test'

Mich stört hier allerdings das mit der neuen Anmeldung in der master
DB selectet werden darf. Vor allem in den Views.

Kann man das àndern?

Ich habe es mal mit einer User Anlage in der Master DB probiert und
dem anschließenden Komando:

exec sp_addrolemember 'db_denydatareader','tom'

Hiernach konnte ich mich mit dem User garnicht mehr anmelden.
Anscheinend wird zwangsweise was von der master DB benötigt.


Gruß
Tom
 

Lesen sie die antworten

#1 Elmar Boye
02/02/2009 - 09:21 | Warnen spam
Hallo TOm,

Tom schrieb:
ich brauch für einen SQl Server 2005 einen neuen SQL User der nur
einen View selecten können soll.

Mich stört hier allerdings das mit der neuen Anmeldung in der master
DB selectet werden darf. Vor allem in den Views.



Der Zugriff auf die Master Datenbank ist zwingend erforderlich,
da ein Anwender schließlich erstmal Verbindung mit dem SQL Server
aufnehmen muß.
Er braucht im übrigen noch nichtmal ein Konto, da dort das
'guest' Konto immer aktiv ist (und nicht entfernt werden kann).

Das ist im weitesten Sinne vergleichbar mit dem Windows-
Anmeldebildschirm -> den Rechner muß man schon anschalten
können, was man danach darf, hàngt von der Anmeldung ab.

Die Objekte (Sichten, Prozeduren usw.) in der master Datenbank
(und auch msdb) sind - soweit sie von Microsoft kommen - darauf
ausgelegt, daß sie einem Benutzer nicht mehr erlauben, als er
explizit darf, denn für alles, was über die Anmeldung hinausgeht,
muß er Mitglied in einer der Serverrollen sein.

Eigene Objekte sollte man in der master-Datenbank in der Regel
nicht ablegen. Will man systemweite Prozeduren (vergleichbar
mit den Systemprozeduren sp_...) installieren, sollten die
ebenso abgesichert werden, wie die von Microsoft, wo explizit
auf Rollenmitgliedschaft geprüft wird.

Auch wenn ein Benutzer die Systemsichten immer zur Verfügung
hat, so hàngt das Inhalt davon ab, welche Berechtigungen, er
hat. In der Standardeinstellung wird er z. B. in sys.tables
nur Objekte sehen, auf die er Zugriff hat.

Beachte, dass jeder Benutzer Mitglied der Gruppe 'public' ist,

Die Sichtbarkeit von Metadaten kannst Du konfigurieren wie es
<URL:http://msdn.microsoft.com/de-de/library/ms187113(SQL.90).aspx>
"Konfigurieren der Sichtbarkeit von Metadaten"
und
<URL:http://msdn.microsoft.com/de-de/library/ms190785(SQL.90).aspx>
"Behandlung von Problemen bei der Sichtbarkeit von Metadaten"
beschreibt.

Ich habe es mal mit einer User Anlage in der Master DB probiert und
dem anschließenden Komando:

exec sp_addrolemember 'db_denydatareader','tom'

Hiernach konnte ich mich mit dem User garnicht mehr anmelden.
Anscheinend wird zwangsweise was von der master DB benötigt.



Die Datenbanktreiber (sei es ODBC, OleDb oder SqlClient) fragen
anfangs Informationen ab, wofür sie den Zugriff auf diverse
Katalogsichten benötigen. Wenn Du ihnen denen verwehrst -
was obiger Befehl tut -, können sie nicht mehr richtig
funktionieren.

Gruß Elmar

Ähnliche fragen