Oracle Containers for J2EE
セキュリティ・ガイド
10g(10.1.3.4.0) B50832-01 |
|
この付録では、OC4Jセキュリティのベスト・プラクティス、およびトラブルシューティングの対象となる要注意の問題と関連するヒントについて説明します。
この項では、次の項目別ベスト・プラクティスについて説明します。
推奨されるJAASのプラクティスは、次のとおりです。
principals.xml
に格納されていました(クリアテキストによるパスワードの格納を含みます)。OracleAS JAAS Providerでは同様のセキュリティ・モデルがデフォルトとして使用され、パスワードはクリアテキストでは格納されません。また、OracleAS JAAS Providerは、出荷時のOracle Application Serverインフラストラクチャ(Oracle Single Sign-OnとOracle Internet Directoryを含む)との密接な統合を提供します。「principals.xmlファイルからのプリンシパルの移植」を参照してください。
UserManager
インタフェースは引き続き実装できますが(リリース10.1.3.xでは非推奨)、OracleAS JAAS Provider、Oracle Single Sign-OnおよびOracle Internet Directoryの豊富な機能を利用すれば、インフラストラクチャ・コードではなくビジネス・ロジックに専念できます。Oracle Single Sign-OnとOracle Internet Directoryの両方に、それぞれ外部認証サーバーおよびディレクトリと統合するためのAPIが用意されています。カスタム機能が必要な場合は、カスタムのUserManager
実装のかわりにカスタムのログイン・モジュールを使用できます。
(または、インストールにOracle Application Serverインフラストラクチャが含まれていなければ、Java SSOを使用します。)
これらの拡張機能は、大規模なユーザー・コミュニティを対象とするセキュリティ・ポリシーに、よりスケーラブルで管理しやすいフレームワークを提供します。
Oracle HTTP Serverには、アプリケーションを変更せずにアプリケーションにセキュリティを提供できるように複数の機能が用意されています。類似の機能をコーディングする前に、これらの機能を評価した上で利用してください。次のHTTPセキュリティ機能があります。
REMOTE_USER
)。また、シングル・サインオンもサポートされるため、既存のログイン・メカニズムが再利用されます。
その他、HTTPSの保護に関して次の提案事項があります。
これらのアプライアンスは、UNIX、WindowsまたはLinuxシステムに数学または暗号カードを追加するよりも優れたソリューションを提供します。
セキュアなページが同じ画面に表示される多数のGIF、JPEGまたは他のファイルで構成されている場合、セキュアなコンテンツをセキュアでない静的コンテンツから分離するだけの価値はないと思われます。SSL鍵交換(CPUサイクルの主要コンシューマ)はコールされるのが常に1回のみなので、バルク暗号化のオーバーヘッドはそれほど大きくありません。
デフォルトのSSLSessionCacheTimeout
は300秒です。SSLセッションの継続時間は、HTTP固定接続の使用には無関係であることに注意してください。httpd.conf
ファイル内のSSLSessionCacheTimeout
ディレクティブは、アプリケーションのニーズにあわせて変更できます。
次の問題とその処理方法に留意してください。
有効なjazn.xml
ファイルが存在しない場合は、OracleAS JAAS Providerは起動できません。jazn.xml
ファイルが見つからない場合は、次のエラー・メッセージが生成されます。
"JAZN has not been properly configured"
アイデンティティ・リポジトリでユーザーとパスワードが正しく構成されているにもかかわらず、保護されたアプリケーションにログインしようとして認証が失敗した場合は、アイデンティティ・リポジトリが起動されて使用可能な状態になっていること、およびそのリポジトリがorion-application.xml
またはjazn.xml
(該当する場合)の<jazn>
要素のlocation
属性で指定された場所にあることを、なんらかの方法で確認してください。
次のような例外スタック・トレースを受信することがあります。
Exception in thread "main" java.lang.SecurityException: Unable to locate a login configuration at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:97) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance
この場合は、OracleAS JAAS ProviderがJAASポリシー・プロバイダとして指定されていない可能性があります。
この項では、レルムの使用に関してトラブルシューティングの対象となる問題について説明します。
OC4Jプロパティjaas.username.simple
では、キー・メソッド(たとえば、サーブレットの場合はgetUserPrincipal()
またはgetRemoteUser()
、EJBの場合はgetCallerPrincipal()
)から戻されたプリンシパルのユーザー名においてレルム名が接頭辞として付けられているかどうかが判別されます。デフォルトのtrue
設定では、レルム名は接頭辞として付けられません。
カスタム・レルムを構成して使用する場合は、このプロパティを明示的にfalse
に設定して、OracleAS JAAS Providerの認証および認可が適切に機能するようにする必要があります。詳細は、「認証済プリンシパル取得時のレルム名の省略」を参照してください。
認証に失敗したとき、構成が正しいと思われる場合は、デフォルト・レルムを指定する必要があるかどうかを確認します。インスタンスレベルのjazn.xml
ファイルで指定した以外のデフォルト・レルムを使用する場合は、それを、orion-application.xml
ファイル内の<jazn>
要素に構成する必要があります。
これは、ファイルベース・プロバイダまたはLDAPベース・プロバイダのいずれかに適用できます。
この項では、デバッグに役に立つロギング機能について説明します。
OC4JおよびOracleAS JAAS Providerでは、Oracle Diagnostic Loggingフレームワーク(ODL)がサポートされています。このフレームワークでは、標準的なJavaロギング・フレームワークを補完するプラグイン・コンポーネントが提供され、ログ・データが自動的にOracleログ分析ツールと統合されます。
OC4Jにおける通常の手順と同様に、ORACLE_HOME
/j2ee/home/config/j2ee-logging.xml
内のロギング・レベルを、デフォルトのNOTIFICATION:1
から適切なエラー・レベルまたはデバッグ・レベルに変更します。OracleAS JAAS Providerでよく使用される2つのレベルは、FINE
とFINER
で、これはそれぞれTRACE:1
とTRACE:16
に相当します。
OracleAS JAAS Providerのロギング・エントリは、ORACLE_HOME
/j2ee/
instance_name
/logs/oc4j/log.xml
にあります。このファイルの中で関連のあるエントリは、次のサンプル・メッセージに示すように、COMPONENT_ID
がj2ee
であるものとMODULE_ID
がsecurity
であるものです。
<MESSAGE> <HEADER> <TSTZ_ORIGINATING>2005-12-14T11:41:08.974-08:00</TSTZ_ORIGINATING> <COMPONENT_ID>j2ee</COMPONENT_ID> <MSG_TYPE TYPE="TRACE"></MSG_TYPE> <MSG_LEVEL>16</MSG_LEVEL> <HOST_ID>www.example.com</HOST_ID> <HOST_NWADDR>555.55.5.555</HOST_NWADDR> <MODULE_ID>security</MODULE_ID> <THREAD_ID>10</THREAD_ID> <USER_ID>nmuralid</USER_ID> </HEADER> <CORRELATION_DATA> <EXEC_CONTEXT_ID> <UNIQUE_ID>555.55.5.555:30508:1134589268971:0</UNIQUE_ID><SEQ>0</SEQ> </EXEC_CONTEXT_ID> </CORRELATION_DATA> <PAYLOAD> <MSG_TEXT>location=system-jazn-data.xml</MSG_TEXT> </PAYLOAD> </MESSAGE>
あるいは、最初からOracleAS JAAS Providerメッセージのみがロギングされるようにするには、次の例に示すように、j2ee-logging.xml
に構成を追加して、ログ出力名をoracle.j2ee.security
に設定することもできます。
<logger name="oracle.j2ee.security" level="NOTIFICATION:32" useParentHandlers="false"> <handler name="oc4j-handler"/> <handler name="console-handler"/> </logger>
OracleAS JAAS Provider Admintoolでは、標準のJDKロギングが使用されます。Admintoolに対してロギングを実行するには、ロギング・レベルをINFO
からFINE
、FINER
またはFINEST
に変更します。(Admintoolからのほとんどのログ・メッセージは、FINE
レベルかFINER
レベルでロギングされます。)この変更は、JAVA_HOME
/jre/lib/logging.properties
ファイルを編集する、またはこのファイルの更新したコピーをAdmintoolのコマンドラインに供給することで行えます。次のコマンドはAdmintoolを実行し、プロパティ・ファイルを提供して妥当なロギング・レベルを設定しています。メッセージは、構成したログ・ハンドラによってロギングされます。
% java -jar jazn.jar -Djava.util.logging.config.file=modified_logging_properties
|
Copyright © 2003, 2008 Oracle Corporation. All Rights Reserved. |
|