プロキシ・ユーザーの有効化と構成
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プロキシ・ユーザーの認証を示します。
-
図の中央に示されているOracle Internet Directory (LDAP)を使用して、Oracle Formsでユーザーが認証されます。
-
Formsではプロキシ・ユーザーとして接続(パスワードを使用する場合と使用しない場合のどちらか)し、実際のユーザー名をOracle Internet Directoryリポジトリから渡します。
-
通常、プロキシ・ユーザーは最低限の権限で構成されています。次の手順では、プロキシ・ユーザーには接続権限とセッション作成権限が割り当てられています。
-
データベースでは、プロキシ・ユーザー用に
create
セッション・アクションを受け付け、実際のユーザー名を監査とアクセス制御で使用します。 -
Oracle Internet Directoryのユーザーは、プロキシ・ユーザー・アカウントの構成がないとデータベースに単独では接続できません。
-
プロキシ・ユーザー・アカウントは、SQL *Plusにクライアントが直接接続できないようにします。
Oracle Internet Directoryを使用してSSOを有効化する場合のプロキシ・ユーザー接続の有効化
Formsでプロキシ・サポートを使用できるようにするには、まずプロキシ・ユーザーを作成する必要があります。
この例では、プロキシ・ユーザー名はmidtier
です。
また、エンタープライズ・ユーザー・セキュリティと呼ばれるデータベース機能を使用することで、データベース・ユーザーを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
)を作成し、SSOProxyConnect
をyes
、ssoMode
をtrue
またはwebgate
にそれぞれ設定します。
プロキシ接続で使用されるユーザー名とパスワードは、ログオン・ユーザー用のRADエントリに定義されています。ssoProxyConnect=yes
に設定されている場合、Formsによって発行された接続文字列は有効になります。
SQL> connect RADUsername[appuserName]/RADPassword@databaseTnsName
Formsアプリケーションへのアクセス
プロキシ・ユーザーの接続とシングル・サインオンを有効にした後、次のステップを実行してFormsアプリケーションにアクセスします。
https://<host name>:<https port>/forms/frmservlet?config=ssoapp
というURLを使用して、Formsアプリケーションを実行します。ssoapp
はシングル・サインオン(ssoMode
)を有効にした構成セクションの名前です。- シングル・サインオンのユーザー名とパスワードを使用してログインします。
appuser
、パスワードはappuserPW
です。