プロキシ・ユーザーの有効化と構成

Oracle Databaseでは、プロキシ・ユーザー認証をサポートしています。これによって、クライアント・ユーザーは、アプリケーション・サーバーを介してデータベースにプロキシ・ユーザーとして接続できます。

Formsアプリケーションを介してプロキシ・ユーザーとして接続するユーザーは、認証サーバーとOracle Internet Directoryにも定義する必要があります。Oracle Formsでは、認証サーバーを介してこのユーザーを認証します(プロキシ・ユーザーを使用する際、Formsでは認証サーバーを使用する必要があります)。次に、Oracle Formsはデータベースにプロキシ・ユーザーとして接続しますが、その接続で使用するプロキシ・ユーザーの名前とパスワードは、アプリケーション・ユーザー用のOracle Internet DirectoryエントリのRADに格納されています。

この項は、次のトピックで構成されています。

プロキシ・ユーザーの概要

Oracle E-Business Suiteなどの大規模なアプリケーションの多くでは、すべての接続で単一のユーザー名が使用されます。これにより、多くの場合、大企業に適した方法でユーザーを管理できますが、監査に関する問題が発生します。レコードの挿入、更新および削除のすべてでは、シングル・ユーザーにより実行されるようにデータベースでは見えます。監査をリストアするには、アプリケーション開発者は、カスタマイズされた監査コードをデータベースにおいて記述して実装する必要があります。コードでは、ユーザー名をアプリケーションからデータベースに渡す必要があります。このステップは、開発時間が必要になるだけでなく、Oracle Databaseで実装済の機能と重複することにもなります。2番目の問題はセキュリティです。シングル・ユーザーのアクセスは脆弱であり、脆弱なユーザーがアプリケーション・スキーマ全体にアクセスできてしまいます。これらの問題に対処するために、Oracle Databaseではプロキシ・ユーザー認証がサポートされています。これによって、クライアント・ユーザーはデータベースにアプリケーション・サーバー経由でプロキシ・ユーザーとして接続できます。

次の図は、Formsプロキシ・ユーザーの認証を示します。

図-32 プロキシ・ユーザーの認証

図-32の説明が続きます
「図-32 プロキシ・ユーザーの認証」の説明
  • 図の中央に示されているOracle Internet Directory (LDAP)を使用して、Oracle Formsでユーザーが認証されます。

  • Formsではプロキシ・ユーザーとして接続(パスワードを使用する場合と使用しない場合のどちらか)し、実際のユーザー名をOracle Internet Directoryリポジトリから渡します。

  • 通常、プロキシ・ユーザーは最低限の権限で構成されています。次の手順では、プロキシ・ユーザーには接続権限とセッション作成権限が割り当てられています。

  • データベースでは、プロキシ・ユーザー用にcreateセッション・アクションを受け付け、実際のユーザー名を監査とアクセス制御で使用します。

  • Oracle Internet Directoryのユーザーは、プロキシ・ユーザー・アカウントの構成がないとデータベースに単独では接続できません。

  • プロキシ・ユーザー・アカウントは、SQL *Plusにクライアントが直接接続できないようにします。

Oracle Internet Directoryを使用してSSOを有効化する場合のプロキシ・ユーザー接続の有効化

Formsでプロキシ・サポートを使用できるようにするには、まずプロキシ・ユーザーを作成する必要があります。

この例では、プロキシ・ユーザー名はmidtierです。

  1. データベースにプロキシ・ユーザーを作成します。
    SQL> CREATE USER midtier IDENTIFIED BY midtierPW;
    
    
  2. midtierへの接続を割り当て、midtierへのセッション権限を作成します。
    SQL> GRANT CONNECT,CREATE SESSION TO midtier; 
    
    

    この時点で、このプロキシ・ユーザーは接続権限とセッション作成権限を持っていますが、どのユーザー・スキーマに対しても権限はありません。

  3. SSOユーザー名に対して1対1でマップしたデータベース・ユーザーを作成します(たとえば、SSOユーザー名がappuserであれば、appuserというデータベース・ユーザーを作成します)。
    SQL> CREATE USER appuser IDENTIFIED BY appuserPW;
    
  4. appuserにセッション作成権限を割り当てます。
    SQL> GRANT CREATE SESSION TO appuser; 
    
  5. midtierユーザーを介して接続できるようにするには、次のようにデータベース・ユーザーを変更する必要があります。
    SQL> ALTER USER appuser GRANT CONNECT THROUGH midtier;
    

    これで、ユーザーappuserがmidtierアカウントを介して接続できるようになります。

    また、次のようにプロキシ・ユーザーからデータベースへの接続が可能なロールを定義することもできます。

    SQL> ALTER USER appuser GRANT CONNECT THROUGH midtier WITH ROLE <role_name>;
    

    プロキシ・ユーザー・アカウントを使用する必要があるすべてのデータベース・ユーザーについて、ステップ3とステップ4を繰り返します。

また、エンタープライズ・ユーザー・セキュリティと呼ばれるデータベース機能を使用することで、データベース・ユーザーをOracle Internet Directoryで設定することもできます。この方法を選択すると、プロキシ・ユーザーは、データベースにおいて定義された唯一のユーザーになり、管理が容易になるという利点があります(『Oracle Internet Directoryの管理』「ディレクトリ・サーバー・チェーンの構成」を参照)。

アプリケーション・ユーザーのパスワードは、データベースに渡されません。アプリケーション・ユーザーの名前、プロキシ・ユーザーの名前とパスワードのみ渡されます。Formsでは、OCIコールを使用して、次のコマンドと同等のコマンドを発行します。

SQL> connect midtier[appuser]/midtierPW@databaseTnsName

たとえば、必ずmidtierを使用してデータベースに接続するアプリケーションがあるとします。このmidtierからは、実際のユーザーがappuserであることがデータベースに通知されます。プロキシ・ユーザーを使用しない場合、SQLコマンドselect USER from DUALはmidtierを返しますが、プロキシ・ユーザーを使用すると、この問合せはappuserを返します。これは、ユーザーが他の方法で認証済であることを信頼し、パスワードなしでのユーザー接続を許可して接続のロールを付与するようにデータベースに指示していることになります。

ノート:

  • 前述の手順のステップ3で、データベース・ユーザーは通常スキーマに付与されている権限の一部を持つように構成されます。たとえば、appuserには、次のSQLコマンドを使用して、スキーマapp_schemaに対するCREATE権限が付与されます。

    SQL> GRANT CREATE ON SCHEMA app_schema TO appuser

    したがって、appuserはプロキシ・ユーザー・モードのアクションの実行のみに限定されます。

  • データベース・ユーザー(appuserなど)がプロキシ・モードで接続すると、監査対象となるユーザー・アクションは、プロキシ・ユーザーのものではなくデータベース・ユーザーのものになります。

プロキシ・ユーザーに対するSSOの有効化

formweb.cfgにシングル・サインオン用の構成セクション(たとえばssoapp)を作成し、SSOProxyConnectyesssoModetrueまたはwebgateにそれぞれ設定します。

プロキシ接続で使用されるユーザー名とパスワードは、ログオン・ユーザー用のRADエントリに定義されています。ssoProxyConnect=yesに設定されている場合、Formsによって発行された接続文字列は有効になります。

SQL> connect RADUsername[appuserName]/RADPassword@databaseTnsName 

Formsアプリケーションへのアクセス

プロキシ・ユーザーの接続とシングル・サインオンを有効にした後、次のステップを実行してFormsアプリケーションにアクセスします。

  1. https://<host name>:<https port>/forms/frmservlet?config=ssoappというURLを使用して、Formsアプリケーションを実行します。ssoappはシングル・サインオン(ssoMode)を有効にした構成セクションの名前です。
  2. シングル・サインオンのユーザー名とパスワードを使用してログインします。
「Oracle Internet Directoryを使用してSSOを有効化する場合のプロキシ・ユーザー接続の有効化」で説明したこの例では、シングル・サインオンのユーザー名はappuser、パスワードはappuserPWです。

Formsビルトインにおける変更

ビルトインのget_application_propertyには、IS_PROXY_CONNECTION(ブール型)の新しいパラメータがあります。このパラメータが渡されたときに、フォームがプロキシ・ユーザー・モードで実行中の場合、コールによりtrueが返されます。それ以外の場合は、falseが返されます。