Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Datenbank starten und Verbindung mit ihr herstellen » SQL Anywhere-Datenbankverbindungen » Integrierte Logins verwenden

 

Verbindung zur Datenbank für Mitglieder von Windows-Benutzergruppen sperren

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.

Ein integriertes Login für eine Benutzer-ID ohne Kennwort erstellen

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.

♦  So erstellen Sie ein integriertes Login für eine Benutzer-ID ohne Kennwort
  1. Fügen Sie der Datenbank einen Benutzer ohne Kennwort hinzu. Zum Beispiel:

    CREATE USER db_user_no_password;
  2. 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;
Eine Prozedur erstellen, um Windows-Benutzer am Verbinden zu hindern

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