プライマリ・コンテンツに移動
Oracle® Fusion Middlewareパフォーマンスおよびチューニング・ガイド
11g リリース2 (11.1.2.3.0)
E61953-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

29 Oracle Fusion Middlewareセキュリティのパフォーマンス・チューニング

Oracle Fusion Middlewareセキュリティ・サービスを使用すると、重要なアプリケーションや機密データを保護できます。この章では、セキュリティ・サービスを構成して最適なパフォーマンスを得る方法について説明します。

この章の内容は次のとおりです。

29.1 セキュリティ・サービスについて

Oracle Fusion Middlewareは、Oracle Platform Security Services (OPSS)およびOracle Web Servicesを通じてセキュリティ・サービスを提供します。

  • Oracle Platform Security Services

    Oracle Platform Servicesは、Oracle Fusion Middlewareの主要コンポーネントです。セキュリティ・サービスの統合スイートであり、Javaセキュリティ・モデルを使用するJava SEアプリケーションやJava EEアプリケーションと簡単に統合できます。セキュリティ・サービスには、開発者がアプリケーション環境に組み込むことのできるユーザー認証、認可および委任のサービスを実装する機能が含まれています。こうしたサービスの開発にリソースをつぎ込むかわりに、アプリケーション開発者はアプリケーションの表現やビジネス・ロジックに集中することができます。

    Oracle Platform Security for Javaを使用すると、アプリケーションのリソース・ユーザーに対してきめ細かなアクセス制御を実施できます。そのための主なステップは次の3つです。

    • 適宜ログイン・モジュールを構成して呼び出します。付属のログイン・モジュールを使用することも、カスタム・ログイン・モジュールを使用することもできます。

    • ログインしようとするユーザーを認証します。これはアイデンティティ・ストア・サービスの役割です。

    • ユーザーが属するロールの権限を、そのユーザーが実行しようとしている操作に対してチェックすることで、ユーザーを認可します。これはポリシー・ストア・サービスの役割です。

  • Oracle Web Services Security

    Oracle Web Services Securityは、XMLベースのメッセージを使用してWebサービスとやり取りするための認可および認証のフレームワークを提供します。


注意:

この章の内容は、読者がOracle Fusion Middlewareセキュリティ・サービスの概念および管理についての情報に目を通し、理解しているものと想定して書かれています。セキュリティ・パラメータをチューニングする前に、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』を参照し、詳細を確認してください。

29.2 一般的なパフォーマンスの問題の検出

この項では、パフォーマンス・ボトルネックの特定方法、およびパフォーマンス・ボトルネックなどの問題の解決方法に関して、一般的なガイドラインを示します。

パフォーマンス・ボトルネックを発見するには、まずWebサービスのデプロイメント全体で予想されるトラフィック負荷に対応できていることを確認します。CPU使用率が100%に達しているシステムがクリティカル・パスにある場合は、1台以上のコンピュータをクラスタに追加する必要があります。

デプロイメントにボトルネックが存在する場合、その発生箇所はおそらく次のいずれかです。

  • エージェントとの低速な接続を介したトラフィック

  • JMSのようなサード・パーティのキューイング・システムへの接続待機時間

どちらの問題についても、次の原因を確認します。

  • 外部リソース(特に次のタイプ)への接続を含むポリシー・アサーションの問題

    • データベース・リポジトリ

    • LDAPリポジトリ

    • セキュア・リソース

    • 独自のセキュリティ・システム

  • データベース・パフォーマンスの問題

これらのいずれかがボトルネックの原因であると判明した場合は、データベースまたはLDAP接続の管理方法、あるいはリソースの保護方法を変更する必要があります。

29.3 Oracle Platform Security Servicesのチューニング

この項では、Oracle Platform Security Services (OPSS)における次の基本的なチューニング構成について説明します。


注意:

Oracle Platform Security Services用のOracleデータベースのチューニングの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

29.3.1 JVMのチューニング

JVMパラメータをチューニングすると、パフォーマンスが大幅に向上します。たとえば、JVMヒープ・サイズはストア内のロールおよび権限の数に応じてチューニングする必要があります。実行時には、ロールおよび権限はすべてインメモリー・キャッシュに格納されます。JVMチューニングの詳細は、第2.4項「Java仮想マシン(JVM)のチューニング」を参照してください。

29.3.2 LDAPパラメータのチューニング

この項では、Lightweight Directory Access Protocol (LDAP)のチューニングについて説明します。Oracleは、ファイルベースのリポジトリであるOracle Internet DirectoryおよびOracle Virtual Directoryでのポリシーの管理をサポートしています。

SQLの実行に時間がかかるためにCPU使用率が上昇している場合は、次の章を参照し、大規模デプロイメント向けの基本的なチューニング構成を確認してください。

29.3.3 認証パラメータのチューニング

OPSS認証チューニングの詳細は、Oracle Technology Networkに掲載されているOracle Fusion Middleware Oracle WebLogic Serverの保護ガイドの、WebLogicおよびLDAP認証プロバイダのパフォーマンスの向上に関する項(http://download.oracle.com/docs/cd/E12840_01/wls/docs103/secmanage/atn.html#wp1199087)を参照してください。

29.3.4 認可プロパティのチューニング

次のJavaシステム・プロパティを使用して、認可を最適化できます。

表29-1 認可プロパティ

Javaシステム・プロパティ デフォルト値 有効な値 注意

-Djps.subject.cache.key

4

3

4

5

JPSは、サブジェクト・リゾルバを使用して、プラットフォーム・サブジェクトをユーザー/エンタープライズ・ロール情報およびApplicationRole情報を含むJpsSubjectに変換します。この情報は、サブジェクトではプリンシパルとして表されます。

特にサブジェクトのプリンシパル・セットが大規模な場合、この変換はCPUへの負荷が高いです。パフォーマンスを向上するために、JPSコードはプラットフォーム・サブジェクトとJpsSubject間の変換をキャッシュします。2つのサブジェクトは、コンテンツが同じなのにプリンシパルの名前の大/小文字が異なる場合に、混同される可能性があることに注意してください。

次の設定を使用して、キャッシュ・キーを構成できます。

  • 3: プラットフォーム・サブジェクトをキーとして直接使用します。注意: WLSでprincipalEqualCaseinsensitiveフラグが有効になっている場合、2つのサブジェクトは、コンテンツが同じなのにプリンシパルの大/小文字が異なる場合に、混同される可能性があります。

  • 4: この設定は「3」に似ていますが、大/小文字の区別の問題を解決しています。これは初期状態の設定です。

  • 5: サブジェクト全体をキーとして使用するかわりに、この設定は、サブジェクト内のプリンシパル・セットの一部をキーとして使用します(実際にはWLSUSerImplタイプのプリンシパルを使用します)。

    この設定により、サブジェクトに多数のプリンシパル・セットがある場合、キャッシュ取得操作が高速になります。WLS以外のプラットフォーム(WASやJBOSSなど)では、これは「4」の場合に戻るため、この設定はWLS専用です。この場合、後述のキャッシュが有効な期間を制御する存続時間(TTL)設定フラグもあります。

-Djps.subject.cache.ttl

60000ms


「5」の場合(前述)のキャッシュの存続時間(TTL)。このシステム・プロパティは、キャッシュが有効な期間を制御します。有効期限が切れると、キャッシュされた値はダンプされます。設定は、フラグ-Djps.subject.cache.ttl=xxxxによって制御できます。xxxは、ミリ秒単位の期間です。

このTTL設定の期間を、WLS LDAPオーセンティケータでグループおよびユーザー・キャッシュTTLに使用される値と同じ値に設定することを検討してください。

-Djps.combiner.optimize=true

True

True

False

このシステム・プロパティを使用して、特定のサブジェクトの保護ドメインをキャッシュします。-Djps.combiner.optimize=trueを設定すると、Java認可パフォーマンスを改善できます。

-Djps.combiner.optimize.lazyeval=true

True

True

False

このシステム・プロパティを使用して、checkPermissionが発生する場合のサブジェクトの保護ドメインを評価します。-Djps.combiner.optimize.lazyeval=trueを設定すると、Java認可パフォーマンスを改善できます。

-Djps.policystore.hybrid.mode=true

True

True

False

このハイブリッド・モード・プロパティを使用して、SUN java.security.PolicyからOPSS Javaポリシー・プロバイダへの遷移を促進します。

OPSS Javaポリシー・プロバイダは、java.policyとsystem-jazn-data.xmlの両方を読み取ります。ハイブリッド・モードを無効にするには、WebLogic Serverの起動時にシステム・プロパティjps.policystore.hybrid.modefalseに設定します。-Djps.policystore.hybrid.mode=falseを設定すると、実行時のオーバーヘッドを削減できます。

-Djps.authz=ACC

ACC

ACC

SM

コールをJDK APIのAccessController.checkPermissionに委任します。こうすると、実行時またはデバッグ中のパフォーマンスへの影響を軽減できます。

ACC: AccessController.checkPermissionに委任します。

SM: SecurityManagerが設定されている場合、SecurityManagerに委任します。


29.3.5 OPSS PDPサービスのチューニング

表29-2に、ポリシー・ストアのOPSSチューニング・パラメータを示します。次のプロパティは、制御されない配布モードで実行されているOPSS PDPサービスでのみ使用してください。これらのプロパティは、OPSS PDPサービス(PDPサービスがない場合は、ポリシー・ストア・サービス)に対して定義する必要があります。

表29-2 OPSS PDPサービス・チューニング・パラメータ

パラメータ デフォルト値 有効な値 注意

oracle.security.jps.policystore.rolemember.cache.type

STATIC

STATIC、SOFT、WEAK

このパラメータには、ロール・メンバーのキャッシュ・タイプを指定します。Java EEアプリケーションでのみ有効です。

有効な値:

  • STATIC: キャッシュ・オブジェクトは静的にキャッシュされ、FIFOなど、適用されたキャッシュ戦略に応じてのみ明示的にクリーンアップされます。ガベージ・コレクタでは、このタイプのキャッシュはクリーンアップされません。

  • SOFT: メモリーが不足している場合、このタイプのキャッシュのクリーンアップはガベージ・コレクタに依存します。

  • WEAK: このタイプのキャッシュの動作は、タイプSOFTのキャッシュとよく似ていますが、ガベージ・コレクタによってより頻繁にクリーンアップされます。

最適なパフォーマンスを確保するために、デフォルト値のままにすることを検討してください。

oracle.security.jps.policystore.rolemember.cache.strategy

FIFO

FIFO

NONE

ロール・メンバーのキャッシュで使用する戦略のタイプ。Java EEアプリケーションでのみ有効です。

有効な値:

  • FIFO: キャッシュでは、先入れ先出し戦略が実装されます。

  • NONE: リフレッシュまたは再起動が実行されるまで、キャッシュにあるすべてのエントリは増大し続けます。キャッシュのサイズを制御することはできません。使用はお薦めできませんが、ポリシーのフットプリントがきわめて小さい場合には効率的です。

最適なパフォーマンスを確保するために、デフォルト値のままにすることを検討してください。

oracle.security.jps.policystore.rolemember.cache.size

1000


ロール・メンバーのキャッシュのサイズ。参照するロールは、エンタープライズ・ロール(グループ)です。最初にIDストアのグループ数を確認できます。次に、パフォーマンス要件に基づいて、この数値をフル・キャッシュ・シナリオのグループ数に設定できます。または、部分グループ・キャッシュ・シナリオの特定の比率のグループ数に変更できます。

oracle.security.jps.policystore.policy.lazy.load.enable

True

True

False

ポリシーの遅延ロードを有効または無効にします。このパラメータをfalseに設定すると、特に大きいポリシー・ストアでサーバーの初回の起動に時間がかかります。推奨値はtrueです。

oracle.security.jps.policystore.policy.cache.strategy

PERMISSION_FIFO

PERMISSION_FIFO

NONE

パーミッションのキャッシュで使用する戦略のタイプ。Java EEアプリケーションでのみ有効です。

有効な値:

  • PERMISSION_FIFO: キャッシュでは、先入れ先出し戦略が実装されます。

  • NONE: リフレッシュまたは再起動が実行されるまで、キャッシュにあるすべてのエントリは増大し続けます。キャッシュのサイズを制御することはできません。使用はお薦めできませんが、ポリシーのフットプリントがきわめて小さい場合には効率的です。

最適なパフォーマンスを確保するために、デフォルト値を使用することを検討してください。

oracle.security.jps.policystore.policy.cache.size

1000


パーミッションのキャッシュのサイズ。すべてのポリシーをキャッシュする場合、この値を付与の合計数に設定できます。

oracle.security.jps.policystore.cache.updatable

True

True

False

このプロパティは、リフレッシュを有効にする目的で使用します。最適なパフォーマンスを確保するために、デフォルト値のままにすることを検討してください。

oracle.security.jps.policystore.refresh.enable

True

True

False

このプロパティは、リフレッシュを有効にする目的で使用します。パフォーマンスを確保するために、デフォルト値のままにすることを検討してください。

oracle.security.jps.policystore.refresh.purge.timeout

43200000


ポリシー・ストアがリフレッシュされるまでの時間(ミリ秒)。最適なパフォーマンスを確保するために、デフォルト値のままにすることを検討してください。

oracle.security.jps.ldap.policystore.refresh.interval

600000 (10分)


ポリシー・ストアで変更がポーリングされる間隔(ミリ秒)。最適なパフォーマンスを確保するために、デフォルト値のままにすることを検討してください。このプロパティは、Java EEおよびJ2SEアプリケーションで有効です。

oracle.security.jps.policystore.rolemember.cache.warmup.enable

False

True

False

このプロパティによって、ApplicationRoleメンバーシップ・キャッシュの作成方法が制御されます。Trueに設定すると、キャッシュはサーバーの起動時に作成されます。それ以外の場合は、必要に応じて作成されます(遅延ロード)。

ユーザーおよびグループの数がアプリケーション・ロールの数を大きく上回っている場合はTrueに設定します。それ以外の場合、つまりアプリケーション・ロールの数が非常に多い場合はFalseに設定します。


29.4 Oracle Web Services Securityのチューニング

Oracle Web Services Securityは、XMLベースのメッセージを使用してWebサービスとやり取りするための認可および認証のフレームワークを提供します。この項では、Webサービスのパフォーマンスに影響を与える要因について説明します。

29.4.1 適切なポリシーの選択

Oracle Web Services Securityでは多くのポリシーがサポートされていますので、デプロイメントのセキュリティ・ニーズに基づいて適切なポリシーを実装する必要があります。追加するセキュリティ・ポリシーはそれぞれパフォーマンスに影響を与える可能性があるため、パフォーマンスを十分に考慮してください。たとえば、トランスポート・レベルのセキュリティ(SSL)は、アプリケーション・レベルのセキュリティより高速ですが、マルチステップのトランザクションでは脆弱性を生む可能性があります。アプリケーション・レベルのセキュリティの方がパフォーマンスへの影響は大きいものの、エンドツーエンドのセキュリティを実現できます。

『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のポリシーの構成に関する項を参照し、デプロイメントに必要なセキュリティ・ポリシーを見きわめてください。

29.4.2 ポリシー・マネージャの考慮

データベースベースのポリシー強制を使用する際には、パフォーマンスへの影響がつきものです。データベース・ポリシーの強制を選択した場合、エージェントからデータベースへのポーリングの頻度を慎重に検討する必要があります。

29.4.3 SOAPメッセージを記録するためのログ・アサーションの構成

デフォルト・ポリシーのリクエスト・パイプラインおよびレスポンス・パイプラインには、ポリシー強制ポイント(PEP)でSOAPメッセージをデータベースまたはコンポーネント別ローカル・ファイルに記録するログ・アサーションが含まれています。ロギング・レベルはパフォーマンスに影響を与えることがあります。パフォーマンスの問題を回避するには、デプロイメントに適した最低のロギング・レベルを使用することを検討してください。

ログ・ステップ内に構成できるロギング・レベルには次のものがあります。

  • ヘッダー: SOAPヘッダーのみが記録されます。

  • 本文: メッセージの内容(本文)のみが記録されます。

  • エンベロープ: SOAPエンベロープ全体(ヘッダーと本文の両方を含む)が記録されます。添付ファイルは記録されません。

  • すべて: メッセージ全体が記録されます。これには、SOAPヘッダー、本文、およびすべての添付ファイル(SOAPメッセージそのものの外部に存在するURLなど)が含まれます。

注意: 一般に、ログ・ファイルをトポロジ的に強制コンポーネントに近い場所に配置すると、システムのパフォーマンスが向上します。可能であれば、著しい分散環境では複数の分散ログを使用してください。

29.4.4 接続プーリングの構成

com.sun.jndi.ldap.connect.pool環境プロパティを使用して、コンテキスト・インスタンスが接続プーリングを使用するように要求した場合、使用される接続はプールされることもありますが、プールされないこともあります。デフォルト・ルールでは、単純な認証を使用する、または認証を使用しないプレーン(非SSL)接続のプールを許可します。このデフォルトは、システム・プロパティを使用して、SSL接続およびDIGEST-MD5認証タイプを含むように変更できます。プレーン接続とSSL接続の両方のプールを許可するには、次に示すように、com.sun.jndi.ldap.connect.pool.protocolシステム・プロパティに文字列plain sslを設定します。

"-Dcom.sun.jndi.ldap.connect.pool.protocol="plain ssl"

29.4.5 Webサービスのパフォーマンスの監視

Oracle Fusion Middleware Controlの「Webサービス」ホームページで、次のOracle Web Servicesのパフォーマンスをモニターできます。

  • 次のエンドポイント有効メトリック

    • ポリシー参照ステータス

    • 合計違反

    • セキュリティ違反

  • 完了した呼出し

  • レスポンス時間(秒)

  • 次のポリシー違反

    • 合計違反

    • 認証違反

    • 認可違反

    • 機密保持違反

    • 整合性違反

  • 障害の合計

Oracle Fusion Middlewareコンポーネントのモニタリングの概要は、第4章「Oracle Fusion Middlewareのモニタリング」を参照してください。

Oracle Fusion Middleware Controlを使用したOracle Web Servicesの監視の詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のWebサービスのパフォーマンスの監視に関する項を参照してください。

29.5 Oracle Mobile Security Suiteのチューニング

Oracle Mobile Security Suiteを使用すると、従業員がイントラネット(Webサイト、Webサービスおよびドキュメント)に対するセキュア・アクセスが可能になります。また、従業員が所持するモバイル・デバイス上の企業情報が一元的に制御されます。

Oracle Mobile Security Suiteを管理する方法の詳細は、『Oracle Fusion Middleware Oracle Mobile Security Suiteの管理』および『Oracle Fusion Middleware Oracle Mobile Security Access Serverの管理』を参照してください。

この項では、次のチューニング情報について説明します。

29.5.1 Mobility Security Access Serverのチューニング

この項では、次の内容をチューニングする際の指示について説明します。

29.5.1.1 JVMヒープ設定のチューニング

Mobile Security Access Serverで使用するJVMのデフォルト・ヒープ設定は次のとおりです。

-Xms3072m -Xmx3072m 
-XX:MaxPermSize=512m 
-XX:+UseParallelGC 
-XX:+AggressiveHeap 
-XX:+DisableExplicitGC 
-XX:ReservedCodeCacheSize=1024m 
-XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps 
-Xloggc:${_GW_INSTANCE_HOME}/log/GC.log 
-XX:+UnlockCommercialFeatures 
-XX:+FlightRecorder 
-Djava.security.egd=file:/dev/./urandom

使用する環境に応じて、これらのパラメータをチューニングします。JVMにヒープ設定を適用する方法の詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverパフォーマンスおよびチューニング』のヒープ・サイズのチューニングのヒントに関する項を参照してください。

29.5.1.2 接続プール設定のチューニング

アウトバウンド・メッセージを次の値に設定します。

  • Total Connections in Pool: 800

  • Maximum Connections per Host: 50

これらのパラメータを検索する方法は、『Oracle Fusion Middleware Oracle Mobile Security Access Serverの管理 』のアウトバウンド設定の構成に関する項を参照してください。

29.5.1.3 キャッシュ・リフレッシュ時間のチューニング

キャッシュ・リフレッシュ時間を大きくして、環境に変更がない場合に同期が頻繁に実行されないようにします。詳細は、『Oracle Fusion Middleware Oracle Mobile Security Access Serverの管理』のキャッシュ・リフレッシュ時間の構成に関する項を参照してください。

29.5.2 Mobile Security Managerのチューニング

Mobile Security ManagerにはMobile Security Access Serverの管理コンポーネントが含まれ、Mobile Security Access Serverを管理するサービスを使用できます。Mobile Security Managerは、WebLogic Serverにデプロイされています。

この項の内容は次のとおりです。

29.5.2.1 ヒープ・サイズのチューニング

設定可能なヒープ・サイズは、最低1GBです。この値をサーバー上のアクティブなロードに応じて大きくします。

管理サーバーの起動時に、次のパラメータを使用してヒープ引数を指定します。

  • Managed Serverをコマンド・ラインから起動する場合:

    startManagedWebLogic.sh omsm_server1 t3://admin:port -DUSER_MEM_ARGS="-Xms512m -Xmx2g -XX:PermSize=512m -XX:MaxPermSize=2g"

  • Managed ServerをWeblogic Consoleから起動する場合:

    「サーバー」→「omsm_server1」→「構成」タブ→「サーバーの起動」サブタブの順に進みます。

    「引数」セクションに次のメモリー・パラメータを指定します。-DUSER_MEM_ARGS="-Xms512m -Xmx2g -XX:PermSize=512m -XX:MaxPermSize=2g"

29.5.2.2 データ・ソース接続プールのチューニング

ロードが増加した場合、最大接続サイズを100に増やします。データ・ソース構成内の「モニタリング」タブで現在のトラフィックを監視して、ロードが増加しているかどうか確認する必要があります。

次の手順に従い、チューニングします。

  1. WebLogicコンソールから「サービス」→「データ・ソース」→「omsm-ds」→「構成」タブ→「接続プール」サブタブの順に進みます。

  2. 「最大容量」の値を増加します。