プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA SuiteでのSOAアプリケーションの開発
12c (12.2.1.2.0)
E82771-02
目次へ移動
目次

前
次

46 ポリシーおよびメッセージ暗号化を使用したセキュリティの有効化

この章では、SOAコンポジット・アプリケーション内で設計時にバインディング・コンポーネントとサービス・コンポーネントにポリシーを添付する方法、およびメッセージの特定のフィールドを暗号化および復号化する方法を説明します。ポリシーはメッセージの配信にセキュリティを適用します。この章では、ポリシー構成プロパティ値のオーバーライド方法についても説明します。

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

46.1 ポリシーの概要

Oracle Fusion Middlewareは、ポリシー・ベースのモデルを使用して、組織全体のWebサービスを管理および保護します。ポリシーはメッセージの配信にセキュリティを適用します。ポリシーは、開発者が設計時環境で管理することも、システム管理者が実行時環境で管理することもできます。

ポリシーは、1つ以上のアサーションで構成されています。1つのポリシー・アサーションが、特定のアクションを実行するポリシーの最小単位となります。ポリシー・アサーションはリクエスト・メッセージとレスポンス・メッセージで実行され、どちらのタイプのメッセージでも同じアサーション・セットが実行されます。アサーションは、それらがポリシーに表示される順序で実行されます。

表46-1に、サポートされるポリシー・カテゴリを示します。

表46-1 サポートされるポリシー・カテゴリ

カテゴリ 説明

メッセージ送信最適化メカニズム(MTOM)

添付ファイルがMTOM形式であることを保証します。この形式を使用することで、バイナリ・データをWebサービスとの間で送受信できます。これによりワイヤ上の伝送サイズが削減されます。

信頼性

WS-Reliable Messagingプロトコルをサポートします。これにより、メッセージのエンドツーエンドの配信を保証します。

アドレッシング

Simple Object Access Protocol (SOAP)メッセージに、WS-Addressing仕様に準拠したWS-Addressingヘッダーが含まれていることを検証します。トランスポート・レベル・データは、この情報を渡すためにネットワーク・レベル・トランスポートに依存するのではなく、XMLメッセージに含まれます。

セキュリティ

WS-Security 1.0および1.1標準を実装します。ユーザーの認証と認可、アイデンティティ伝播およびメッセージ保護(メッセージ整合性とメッセージの機密性)を適用します。

管理

リクエスト、レスポンスおよびフォルト・メッセージをメッセージ・ログに記録します。管理ポリシーにもカスタム・ポリシーを含めることができます。

カテゴリ・タイプごとに、1つ以上のアタッチ可能なポリシー・タイプがあります。たとえば、信頼性カテゴリを選択した場合、次のタイプを選択できます。

  • oracle/no_reliable_messaging_policy

    上位のスコープで構成された、信頼性のあるメッセージングの無効化をサポートします

  • oracle/no_wsrm_policy

    グローバルにアタッチされたWeb Services信頼できるメッセージング・ポリシーの無効化をサポートします

  • oracle/reliable_messaging_policy

    Webサービスの信頼性のあるメッセージングの有効化をサポートします

  • oracle/wsrm10_policy

    バージョン1.0のWeb Services信頼できるメッセージング・プロトコルをサポートします

  • oracle/wsrm11_policy

    バージョン1.1のWeb Services信頼できるメッセージング・プロトコルをサポートします

使用可能なポリシー、自分の環境で使用するポリシーおよびグローバル・ポリシーの詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』を参照してください。

46.2 バインディング・コンポーネントおよびサービス・コンポーネントへのポリシーの添付

SOAコンポジット・アプリケーションのサービス・バインディング・コンポーネント、サービス・コンポーネントおよび参照バインディング・コンポーネントとの間で、ポリシーを添付したり、ポリシーの添付を解除できます。設計時環境でセキュリティをテストするために、Oracle JDeveloperを使用してポリシーを添付します。アプリケーションを本番環境にデプロイする準備が整った場合は、Oracle Enterprise Manager Fusion Middleware Controlで実行時ポリシーを添付したり、ポリシーの添付を解除できます。

ポリシーの実行時管理の詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』を参照してください。

46.2.1 ポリシーをバインディング・コンポーネントおよびサービス・コンポーネントに添付する方法

バインディング・コンポーネントおよびサービス・コンポーネントにポリシーを添付する手順は、次のとおりです。

  1. SOAコンポジット・エディタで、サービス・バインディング・コンポーネントまたは参照バインディング・コンポーネントを右クリックします。
  2. 「SOA WSポリシーの構成」を選択します。

    SOAコンポジット・アプリケーションのインタフェース定義に応じて、オプションの追加メニューが表示される場合があります。

    • 選択したサービスまたは参照が同期のBPELプロセス・サービス・コンポーネントまたはOracle Mediatorサービス・コンポーネントとインタフェースしている場合は、リクエスト・メッセージとレスポンス・メッセージの両方に対して単一のポリシーが使用されます。「SOA WSポリシーの構成」ダイアログが即時に表示されます。手順4に進みます。

    • サービスまたは参照が非同期のBPELプロセス・サービス・コンポーネントまたはOracle Mediatorサービス・コンポーネントとインタフェースしている場合は、リクエスト・メッセージとレスポンス・メッセージに対して個別のポリシーを構成する必要があります。コールバックのポリシーは、サービスからクライアントに送信されるレスポンスに使用されます。追加のメニューが表示されます。手順3に進みます。

  3. 使用するバインディングのタイプを選択します。
    • リクエスト対象:

      バインドするサービス・コンポーネントのリクエスト・バインディングを選択します。選択できるリクエスト・バインディングは1つのみです。このアクションにより、バインディング・コンポーネントとサービス・コンポーネント間の通信が可能になります。

      「公開されたサービス」スイムレーンでリクエスト・バインディングがサービスに対して構成されると、そのサービスはサーバーとして機能します。「外部参照」スイムレーンでリクエスト・バインディングが参照に対して構成されると、その参照はクライアントとして機能します。

    • コールバック対象: (非同期プロセスとの相互作用が必要な場合のみ)

      バインドするサービス・コンポーネントのコールバック・バインディングを選択します。このアクションにより、バインディング・コンポーネントとサービス・コンポーネント間のメッセージ通信が可能になります。選択できるコールバック・バインディングは1つのみです。

      「公開されたサービス」スイムレーンでコールバック・バインディングがサービスに対して構成されると、そのサービスはクライアントとして機能します。「外部参照」スイムレーンでコールバック・バインディングが参照に対して構成されると、その参照はサーバーとして機能します。

    図46-1に示す「SOA WSポリシーの構成」ダイアログが表示されます。この例では、サービス・バインディング・コンポーネントに対して「リクエスト対象」オプションが選択されています。「コールバック対象」を選択した場合も、同じタイプのポリシー・カテゴリが使用可能です。

    図46-1 「SOA WSポリシーの構成」ダイアログ

    図46-1の説明が続きます
    「図46-1 「SOA WSポリシーの構成」ダイアログ」の説明
  4. 添付するポリシーのタイプの隣にある「追加」アイコンをクリックします。
    • MTOM

    • 信頼性

    • アドレッシング

    • セキュリティ

    • 管理

    この例では、「セキュリティ」が選択されています。図46-2に示すダイアログが表示されます。

    図46-2 セキュリティ・ポリシー

    図46-2の説明が続きます
    「図46-2 セキュリティ・ポリシー」の説明
  5. ポリシー名の右側にあるアイコンをクリックすると、ポリシーの機能の説明が表示されます。
  6. 添付するポリシーのタイプを選択します。
  7. 「OK」をクリックします。

    図46-3に示す「SOA WSポリシーの構成」ダイアログに戻ります。添付されたセキュリティ・ポリシーが「セキュリティ」セクションに表示されます。

    図46-3 添付されたセキュリティ・ポリシー

    図46-3の説明が続きます
    「図46-3 添付されたセキュリティ・ポリシー」の説明
  8. 必要に応じて、さらにポリシーを追加します。

    「選択したポリシーの無効化」アイコンをクリックして、ポリシーを一時的に無効にできます。図46-4に詳細を示します。このアクションはポリシーの添付を解除するものではありません

    図46-4 「選択したポリシーの無効化」アイコン

    図46-4の説明が続きます
    「図46-4 「選択したポリシーの無効化」アイコン」の説明
  9. ポリシーを再び有効にするには、左側の「選択したポリシーの有効化」アイコンをクリックします。
  10. ポリシーの添付を解除するには、「削除」アイコンをクリックします。
  11. 完了後に、「SOA WSポリシーの構成」ダイアログで「OK」をクリックします。

    SOAコンポジット・エディタに戻ります。

  12. サービス・バインディング・コンポーネントのアイコン上にカーソルを置いて、添付されたポリシーの詳細を表示します。図46-5に詳細を示します。

    図46-5 「ポリシーの説明」アイコン

    図46-5の説明が続きます
    「図46-5 「ポリシーの説明」アイコン」の説明

46.2.1.1 ポリシーをサービス・コンポーネントに添付する手順:

  1. サービス・コンポーネントを右クリックします。

  2. 「SOA WSポリシーの構成」を選択します。

    図46-6に示す「SOA WSポリシーの構成」ダイアログが表示されます。

    図46-6 「SOA WSポリシーの構成」ダイアログ

    図46-6の説明が続きます
    「図46-6 「SOA WSポリシーの構成」ダイアログ」の説明
  3. 添付するポリシーのタイプの隣にある「追加」アイコンをクリックします。

    • セキュリティ

    • 管理

    選択したタイプに対応するダイアログが表示されます。

  4. 添付するポリシーのタイプを選択します。

  5. 「OK」をクリックします。

  6. 必要に応じて、さらにポリシーを追加します。

  7. 完了後に、「SOA WSポリシーの構成」ダイアログで「OK」をクリックします。

Oracle Enterprise Manager Fusion Middleware Control実行時のポリシーの添付については、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』を参照してください。

46.2.2 ポリシー構成プロパティ値のオーバーライド方法

使用する環境には、同じポリシーのクライアントまたはサーバーが複数含まれている場合があります。ただし、各クライアントまたはサーバーにはそれぞれ固有のポリシー要件が設定されている可能性があります。これらのポリシー・プロパティ値は、実行時の要件に基づいてオーバーライドできます。

46.2.2.1 クライアント構成プロパティ値のオーバーライド

クライアント・ポリシー構成プロパティのデフォルト値は、各クライアントに新しいポリシーを作成しなくても、クライアントごとにオーバーライドできます。この方法では、デフォルトの構成値を定義し、その値を実行時の要件に基づいてカスタマイズするクライアント・ポリシーをオーバーライドできます。

  1. 次のいずれかのバインディング・コンポーネントを右クリックします。
    • 「公開されたサービス」スイムレーンでサービス・バインディング・コンポーネントを右クリックし、「コールバック対象」を選択します。

    • 「外部参照」スイムレーンで参照バインディング・コンポーネントを右クリックし、「リクエスト対象」を選択します。

  2. 「セキュリティ」および「管理」セクションに移動します。これらの手順は、これらのセクションにポリシーがすでに添付されていることを前提にしています。

    両方のセクションで「編集」アイコンが使用可能です。図46-7に詳細を示します。

    図46-7 クライアント・ポリシーの選択

    図46-7の説明が続きます
    「図46-7 クライアント・ポリシーの選択」の説明
  3. 編集」アイコンをクリックします。
  4. 「オーバーライド値」列で、「値」列に表示されたデフォルト値をオーバーライドする値を入力します。図46-8に詳細を示します。

    図46-8 クライアント・ポリシーのオーバーライド値

    図46-8の説明が続きます
    「図46-8 クライアント・ポリシーのオーバーライド値」の説明
  5. 「OK」をクリックして「構成オーバーライド・プロパティ」ダイアログを閉じます。
  6. 「OK」をクリックして「SOA WSポリシーの構成」ダイアログを閉じます。

ポリシー設定のオーバーライドの詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』を参照してください。

46.2.2.2 サーバー構成プロパティ値のオーバーライド

サーバー・ポリシー構成プロパティのデフォルト値は、各サーバーに新しいポリシーを作成しなくても、サーバーごとにオーバーライドできます。この方法では、デフォルトの構成値を定義し、その値を実行時の要件に基づいてカスタマイズするサーバー・ポリシーをオーバーライドできます。

サーバー構成プロパティ値をオーバーライドする手順は、次のとおりです。

  1. 次のいずれかのバインディング・コンポーネントを右クリックします。
    • 「公開されたサービス」スイムレーンでサービス・バインディング・コンポーネントを右クリックし、「リクエスト対象」を選択します。

    • 「外部参照」スイムレーンで参照バインディング・コンポーネントを右クリックし、「コールバック対象」を選択します。

  2. 「セキュリティ」または「管理」セクションに移動します。これらの手順は、これらのセクションにポリシーがすでに添付されていることを前提にしています。

    デフォルトでは、両方のセクションで「編集」アイコンは使用不可です。このアイコンを使用可能にするには、明示的にポリシーを選択する必要があります。これは、サーバーのプロパティ値はほとんどオーバーライドできないためです。図46-9に詳細を示します。

    図46-9 サーバー・ポリシーの選択

    図46-9の説明が続きます
    「図46-9 サーバー・ポリシーの選択」の説明
  3. 値のオーバーライドが許可されている添付済ポリシーを選択し、「編集」アイコンをクリックします。
  4. 「オーバーライド値」列で、「値」列に表示されたデフォルト値をオーバーライドする値を入力します。図46-10に詳細を示します。ポリシー・ストアが使用不可の場合は、「ストアにプロパティ・ストアが見つかりません」というメッセージが「値」列に赤色で表示されます。

    図46-10 サーバー・ポリシーのオーバーライド値

    図46-10の説明が続きます
    「図46-10 サーバー・ポリシーのオーバーライド値」の説明
  5. 「OK」をクリックして「構成オーバーライド・プロパティ」ダイアログを閉じます。
  6. 「OK」をクリックして「SOA WSポリシーの構成」ダイアログを閉じます。

    ポリシー設定のオーバーライドの詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』を参照してください。

46.3 メッセージの特定フィールドの暗号化と復号化

Oracle SOA SuiteおよびOracle Service BusでWebサービスとJCAアダプタ内を流れる機密データ(個人の身元を特定する情報(PII)と呼ばれる)を保護するために、メッセージのフィールドを暗号化および復号化できます。この機能は、このようなデータが管理コンソールでクリア・テキストで表示されるのを防ぐため、特定のフィールド(たとえば、SSN)を不明瞭化します。

図46-11は、サービス・バインディング・コンポーネント内でSOAコンポジット・アプリケーションに入力されるときに暗号化される受信メッセージ、および参照バインディング・コンポーネント内でSOAコンポジット・アプリケーションから出力されるときに復号化される送信メッセージを示しています。コンポジット外部のメッセージは、他のメッセージ保護ポリシー(WS-Security/SSL)によって保護できます。

図46-11 SOAコンポジット・アプリケーションでのメッセージの暗号化と復号化

図46-11の説明が続きます
「図46-11 SOAコンポジット・アプリケーションでのメッセージの暗号化と復号化」の説明

次のコードは、暗号化されていないメッセージの例を示しています。PIIフィールドは、namedriversLicenseです。

<person>
  <name>John</name>
  <driversLicense>B1234</driversLicense>
  <ssn>123-456-789</ssn>
</person>

次のコードは、nameおよびdriversLicenseフィールドが暗号化書式で暗号化されたメッセージの例を示しています。

<person>
  <name>John</name>
 <driversLicense>encrypted:fdslj[lmsfwer09fsn;keyname=pii-csf-key</driversLicense>
  <ssn>encrypted:gdf45md%mfsd103k;keyname=pii-csf-key</ssn>
</person>

暗号化書式は次のとおりです。

encrypted:<CIPHER_TEXT>;keyname:<CSF_KEY_NAME>

注意:

PIIポリシーと認可ポリシーの両方がSOAコンポジット・アプリケーションにアタッチされている場合は、PIIポリシーの前に認可ポリシーが実行されます。これは、PIIポリシーが認可に使用されるフィールドを暗号化することがあるためです。

認可ポリシーがコンポーネントにアタッチされ、すでに暗号化されたフィールドが必要な場合は、認可は失敗します。

46.3.1 メッセージの特定フィールドを暗号化および復号化する方法

注意:

  • 暗号化メッセージをコンポジットと切り離す場合は、PIIを復号化する必要があります。PIIポリシーをサービス・バインディング・コンポーネントにアタッチしているが、参照バインディング・コンポーネントにアタッチしない場合、アウトバウンド・メッセージのPIIは復号化されません。これは推奨されておらず、実行時エラーが表示されます。

  • あるSOAコンポジット・アプリケーション内で暗号化されたPIIは、別のSOAコンポジット・アプリケーションでは復号化できません。

メッセージの特定のフィールドを暗号化および復号化する手順は、次のとおりです。

  1. サービス・バインディング・コンポーネントを右クリックして、「機密データの保護」「リクエスト・データの暗号化」を選択します。

    図46-12に示すような「PII構成」ダイアログが表示されます。

    ここで、受信メッセージに対して初期の暗号化を実行する必要があります。

    図46-12 暗号化用の「PII構成」ダイアログ

    図46-12の説明が続きます
    「図46-12 暗号化用の「PII構成」ダイアログ」の説明
  2. 「編集」アイコンをクリックして、暗号化するスキーマ内の要素を指定します。

    「暗号化するフィールドを選択します」フィールドの「入力」タブが表示されます。

  3. 「追加」アイコンをクリックして、暗号化するリクエスト・メッセージのフィールド(たとえば、ユーザーの名前、クレジット・カード番号、社会保障番号など)を指定するXPath式を作成します。
  4. 「CSF」タブをクリックします。
  5. 使用するCredential Store Framework (CSF)キーを選択します。資格証明ストアは、資格証明キーを安全に保管するために使用されます。

    暗号化が完了した後、メッセージはSOAコンポジット・アプリケーションのサービス・コンポーネントを通過します。

    メッセージが参照バインディング・コンポーネントに到達し、SOAコンポジット・アプリケーションから抜け出る準備ができたら、暗号化メッセージを復号化する必要があります。

  6. 参照バインディング・コンポーネントを右クリックして、「機密データの復号化」を選択します。図46-13に詳細を示します。

    図46-13 復号化用の「PII構成」ダイアログ

    図46-13の説明が続きます
    「図46-13 復号化用の「PII構成」ダイアログ」の説明
  7. 編集」アイコンをクリックします。

    「復号化するフィールドを選択します」フィールドの「入力」タブが表示されます。非同期プロセスには、入力メッセージ用と出力メッセージ用の2つの手順があります。

  8. 「追加」アイコンをクリックして「式ビルダー」ダイアログを呼び出し、復号化するフィールド(たとえば、クレジット・カード番号、運転免許などのフィールド)を指定するXPath式を作成します。
  9. 完了後に「OK」をクリックします。

    oracle/pii_security_policyを使用してコンポジットを構成した後、資格情報ストアにキーとユーザー資格情報を追加する必要があります。

  10. createCred WLSTコマンドを使用して、csf-keyユーザー資格情報に関するoracle.wsm.security資格情報マップにエントリを作成します。
    connect("weblogic","password","t3://myAdminServer.example.com:7001")
    
    wls:/DefaultDomain/serverConfig> createCred(map="oracle.wsm.security",
    key="pii-csf-key", user="weblogic", password="password", desc="Key for
    pii_security_policy")
    

    この作業を実行しなければ、次のエラーが発生します。

    oracle.wsm.security.SecurityException: WSM-00016 : The
    username/password credentials or certificates pii-csf-key are missing.