So deaktivieren Sie SQL Server Management Studio für einen Benutzer

7

Gibt es eine Möglichkeit, zu verhindern, dass Benutzer in SQL Server Management Studio gelangen, sodass sie Tabellenzeilen nicht einfach manuell bearbeiten können? Sie müssen immer noch auf die Tabellen zugreifen, indem Sie meine Anwendung ausführen.

    
Jeff Stock 22.05.2009, 15:09
quelle

11 Antworten

7

Sie NICHT müssen sich Gedanken darüber machen, ob sie Zugriff auf das Tool haben. Stellen Sie einfach sicher, dass sie keine der SQL-Logins für die spezifischen Datenbanken kennen, die über Lese- / Schreibberechtigungen verfügen. Wenn dies der Fall ist, ändern Sie das Passwort. Wenn sie über die Windows-Authentifizierung Zugriff auf die Datenbank haben, stellen Sie sicher, dass sie sich in einer Datenleser-Rolle befinden . Sie können Rollen verwenden, um zu verwalten, was die Benutzer in SQL tun können.

    
RSolberg 22.05.2009, 15:16
quelle
14

Sie können den Befehl DENY ANY ANY DATABASE verwenden die bestimmten Benutzer. Dies ist eine neue Funktion in SQL Server 2008.

Es verhindert, dass der Benutzer den Systemkatalog (sys.databases, sys.sysdatabases usw.) sehen kann, und macht daher die DB für sie in SQL Management Studio (SSMS) unsichtbar.

Führen Sie diesen Befehl aus der Master-Datenbank aus:

%Vor%

Der Benutzer kann weiterhin über Ihre Anwendung auf die Datenbank zugreifen. Wenn sie sich jedoch über SSMS anmelden, wird Ihre Datenbank nicht in der Liste der Datenbanken angezeigt. Wenn sie ein Abfragefenster öffnen, wird Ihre Datenbank nicht im Dropdown-Menü angezeigt.

Dies ist jedoch nicht narrensicher. Wenn der Benutzer intelligent genug ist, den Abfragebefehl auszuführen:

%Vor%

Dann sehen sie die Datenbank im Query Analyzer.

Da diese Lösung Sie zu 90% bringt, würde ich der Datenbank einen obskuren Namen geben, damit die Benutzer den Namen der Datenbank nicht kennen.

    
Jose Basilio 22.05.2009 15:29
quelle
4

Ich würde vorschlagen, dass Sie die Datenbank sperren und dem Benutzer entsprechende schreibgeschützte (oder andere) Rechte geben. Auf diese Weise kann der Benutzer Management Studio weiterhin verwenden, um ausgewählte Abfragen und ähnliches auszuführen.

Wenn Sie nicht möchten, dass der Benutzer überhaupt Rechte hat, können Sie das auch tun.

    
Jon Erickson 22.05.2009 15:13
quelle
2

Wenn Ihre Anwendung als Dienst / Benutzerkonto ausgeführt wird, benötigt nur dieses Konto Zugriff auf die Datenbank. Das Konto der einzelnen Benutzer benötigt keinen Zugriff auf die Datenbank und daher haben sie nicht einmal Lesezugriff. Ihre App wird das Gateway zu den Daten sein.

Wenn die Benutzer die Anwendung unter ihren Benutzerkonten ausführen, erteilen Sie ihnen Leseberechtigung. Sie können sie einfach zur Rolle db_datareader hinzufügen.

Hoffe, das hilft!

    
Keplerf1 22.05.2009 15:53
quelle
2

Sie können einen Auslöser verwenden.

%Vor%

Ссылка

    
Tanner Ornelas 26.04.2017 22:53
quelle
1

Wenn Ihre Anwendung nur gespeicherte Prozeduren zum Ändern der Daten verwendet, können Sie den Endbenutzern Zugriff auf die Ausführung der gespeicherten Prozeduren gewähren, ihnen aber den Zugriff verweigern, um die Tabellen zu ändern.

    
David 22.05.2009 15:13
quelle
1
  • Lassen Sie sie nicht wissen, was die Datenbankanmeldung ist.
  • Wenn Sie die Anmeldung nicht einschränken können, verwenden Sie gespeicherte Prozeduren ausschließlich für Aktualisierungen und deaktivieren Sie alle CREATE-, DELETE-, INSERT- oder UPDATE-Berechtigungen für diesen Benutzer.
Joel Coehoorn 22.05.2009 15:13
quelle
1

Eine Anwendungsrolle ermöglicht es Ihnen, Datenbankobjekte in Ihrer Anwendung zu sichern, anstatt sie zu protokollieren auf Benutzer.

    
Martin Brown 22.05.2009 15:15
quelle
1

Sie können die Zugriffsrechte für Benutzer auf die ausführbare Datei "ssms.exe" verweigern, während Sie den entsprechenden Benutzern / Administratoren Rechte gewähren.

    
Tony 21.03.2015 10:31
quelle
0

Ich stimme Jon Erickson zu als allgemeine Regel

  • erlaubt keinem Benutzer den Zugriff auf die Tabellen, sondern nur den Zugriff durch gespeicherte Prozeduren
  • erlauben keinen allgemeinen Benutzerkonten Zugriff auf gespeicherte Prozeduren, sondern nur das Konto, unter dem Ihre App läuft (ob es sich um eine integrierte Anmeldung oder eine SQL-Anmeldung handelt)
Jesse C. Slicer 22.05.2009 15:16
quelle
0

Machen Sie die Verwendung von Datenbankrollen gut, wenn Benutzer nur SELECT-Zugriff (Lesezugriff) haben sollen, weisen Sie ihnen die Rolle db_datareader zu. Selbst wenn sie sich mit SSMS einloggen, können sie nur SELECT-Anweisungen ausführen.

    
john84 22.05.2009 15:24
quelle

Tags und Links