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.
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.
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.
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.
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!
Eine Anwendungsrolle ermöglicht es Ihnen, Datenbankobjekte in Ihrer Anwendung zu sichern, anstatt sie zu protokollieren auf Benutzer.
Ich stimme Jon Erickson zu als allgemeine Regel
Tags und Links sql-server sql-server-2008