Es gibt zwei Möglichkeiten, um einen Benutzer, der ein Mitglied einer Windows-Benutzergruppe mit integriertem Login ist, daran zu hindern, sich mit einer Datenbank unter Verwendung des integrierten Gruppen-Logins zu verbinden:
Erstellen Sie ein integriertes Login für den Benutzer einer Datenbankbenutzer-ID, die kein Kennwort hat.
Erstellen Sie eine gespeicherte Prozedur, die von der login_procedure-Option aufgerufen wird, um zu überprüfen, ob ein Benutzer berechtigt ist, sich anzumelden, und um eine Ausnahmebedingung anzuzeigen, wenn ein gesperrter Benutzer einen Verbindungsversuch unternimmt.
Wenn ein Benutzer ein Mitglied einer Windows-Benutzergruppe mit integriertem Login ist, aber auch ein explizites integriertes Login für seine Benutzer-ID hat, wird das integrierte Login des Benutzers verwendet, um ihn mit der Datenbank zu verbinden. Um einen Benutzer daran zu hindern, sich unter Verwendung seines integrierten Windows-Benutzergruppenlogins mit der Datenbank zu verbinden, können Sie für den Windows-Benutzer ein integriertes Login für eine Benutzer-ID ohne Kennwort erstellen. Datenbankbenutzer-IDs, die kein Kennwort haben, können sich nicht mit einer Datenbank verbinden.
Fügen Sie der Datenbank einen Benutzer ohne Kennwort hinzu. Zum Beispiel:
CREATE USER db_user_no_password; |
Erstellen Sie für den Windows-Benutzer ein integriertes Login, das dem Datenbankbenutzer ohne Kennwort zugeordnet wird. Zum Beispiel:
GRANT INTEGRATED LOGIN TO WindowsUser AS USER db_user_no_password; |
Die Option login_procedure gibt eine gespeicherte Prozedur an, die jedes Mal aufgerufen wird, wenn ein Verbindungsversuch mit einer Datenbank unternommen wird. Standardmäßig wird die Prozedur dbo.sp_login_environment aufgerufen. Sie können die login_procedure-Option so einstellen, dass eine von Ihnen geschriebene Prozedur aufgerufen wird, die bestimmte Benutzer am Verbinden mit der Datenbank hindert.
Das folgende Beispiel erstellt eine Prozedur namens login_check, die von der login_procedure-Option aufgerufen wird. Die login_check-Prozedur überprüft den angegebenen Benutzernamen anhand einer Liste von Benutzern, die sich nicht mit der Datenbank verbinden dürfen. Wenn der angegebene Benutzername auf der Liste gefunden wird, schlägt die Verbindung fehl. In diesem Beispiel ist es den Benutzern Joe, Harry oder Martha nicht gestattet, sich zu verbinden. Wenn der Benutzer nicht auf der Liste steht, wird die Datenbankverbindung wie üblich fortgesetzt und die sp_login_environment-Prozedur aufgerufen.
CREATE PROCEDURE DBA.user_login_check() BEGIN DECLARE INVALID_LOGON EXCEPTION FOR SQLSTATE '28000'; // Disallow certain users IF( CURRENT USER IN ('Joe','Harry','Martha') ) THEN SIGNAL INVALID_LOGON; ELSE CALL sp_login_environment; END IF; END go GRANT EXECUTE ON DBA.user_login_check TO PUBLIC go SET OPTION PUBLIC.login_procedure='DBA.user_login_check' go |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |