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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの起動とデータベースへの接続 » SQL Anywhere データベース接続 » 統合化ログインの使用方法

 

Windows ユーザ・グループのメンバによるデータベースへの接続を防ぐ

統合化ログインを持つ Windows ユーザ・グループのメンバであるユーザが、グループの統合化ログインを使用してデータベースに接続できないようにするには、2 つの方法があります。

  • パスワードのないデータベース・ユーザ ID に対して、ユーザの統合化ログインを作成します。

  • ユーザがログインを許可されているかどうかを確認し、無許可のユーザが接続しようとすると例外を発行するストアド・プロシージャを作成します。このストアド・プロシージャは、[login_procedure] オプションによって呼び出します。

パスワードなしのユーザ ID に統合化ログインを作成する

ユーザが統合化ログインを持つ Windows ユーザ・グループのメンバで、さらにそのユーザ ID に対する明示的な統合化ログインも持っている場合、データベースへの接続にはそのユーザの統合化ログインが使用されます。ユーザが Windows ユーザ・グループの統合化ログインを使用してデータベースへ接続できないようにするには、データベース・ユーザ ID へのWindows ユーザの統合化ログインをパスワードなしで作成します。パスワードを持たないデータベース・ユーザ ID は、データベースに接続できません。

♦  パスワードなしのユーザ ID に統合化ログインを作成するには、次の手順に従います。
  1. データベースにパスワードなしでユーザを追加します。次に例を示します。

    CREATE USER db_user_no_password;
  2. パスワードを持たないデータベース・ユーザにマッピングする Windows ユーザの統合化ログインを作成します。次に例を示します。

    GRANT INTEGRATED LOGIN TO WindowsUser
    AS USER db_user_no_password;
Windows ユーザの接続を防ぐ手順の作成

login_procedure オプションは、データベースへの接続が試行されるたびに呼び出すストアド・プロシージャを指定します。デフォルトでは dbo.sp_login_environment プロシージャが呼び出されます。login_procedure オプションを設定して、特定のユーザがデータベースに接続できないようにするために作成したプロシージャを呼び出すことができます。

次の例では、login_procedure オプションによって呼び出される login_check というプロシージャを作成します。login_check プロシージャは、データベースに接続できないユーザのリストに照らし合わせて、指定されたユーザ名を確認します。指定されたユーザ名がリストに見つかると、接続は失敗します。この例では、Joe、Harry、または Martha というユーザは接続を許可されていません。ユーザがリストに見つからない場合、データベース接続は通常どおり実行され、sp_login_environment プロシージャが呼び出されます。

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