ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理
12c (12.1.3)
E59414-02
  目次へ移動
目次

前
 
次
 

8 個人情報の保護

この章では、セキュリティ・ポリシーの制御外にある個人を識別できる情報(PII)を保護するためのソリューションについて説明します。PIIとは、社会保障番号、住所、銀行の口座番号、およびその他の類似情報を指します(通常は1人の特定のユーザーに関連付けられており、保護する必要がある情報です)。

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

8.1 PII情報の保護: メイン手順

この項では、oracle/pii_security_policyポリシーを使用してPIIを保護する方法を説明します。次のトピックについて説明します。

PII暗号化鍵を構成し、次に使用環境に応じてoracle/pii_security_policyポリシーのアタッチ先を選択します。

8.1.1 保護するPIIデータの決定

SOAPリクエストおよびレスポンス・メッセージ、またはWSDLを検証し、保護するPIIデータを決定します。2つの方法があります。

  • SOAアプリケーションをデプロイし、JDeveloper (または別のメカニズム)を使用してSOAPメッセージを確認して保護する必要のあるものを決定します。

    「PIIポリシーのXPath式」のSOAPメッセージの例を参照してください。

  • SOAアプリケーションをデプロイし、デプロイしたアプリケーションのWSDLを確認して保護する必要のあるものを決定します。

    Oracle Fusion Middlewareを使用したWebサービスの管理のWebサービスのWSDLドキュメントの表示に関する項の説明に従って、Webサービス・エンドポイントのWSDLドキュメントを表示します。

リクエスト・フェーズおよびレスポンス・フェーズの両方で、どのようなデータが渡されているかを確認する必要があります。つまり、リクエストとレスポンスでは異なるデータを保護する必要がある可能性があります。

8.1.2 PIIデータを保護するためのXPath式の作成

リクエストおよびレスポンス・メッセージの両方でPIIデータを保護するためのXPath式を作成します。詳細は、『Oracle Web Services Managerの理解』のPIIポリシーのXPath式に関する項のSOAPメッセージの例を参照してください。

これらのXPath式は、後ほど、request.xpathおよびresponse.xpath属性のoracle/pii_security_policyで指定します。

8.1.3 PII暗号化鍵の構成

「資格証明ストアへの鍵およびユーザー資格証明の追加」の説明に従って、PII暗号化鍵の生成に使用するパスワードCSFキーを構成します。PII暗号化鍵は、このパスワード資格証明から導出されます。

デフォルトで、oracle/pii_security_policyはキーの値にpii-csf-keyを要求しますが、これは変更可能です。

Webサービス・クライアントとWebサービスが同じ資格証明ストアを共有していない場合は、PII暗号化鍵がそれぞれの資格証明ストアに存在し、同一である必要があります。

8.1.4 pii_security_policyポリシーのアタッチ

事前定義済のoracle/pii_security_policyのコピーを作成し、そのコピーをWebサービスとクライアントにアタッチします。次のステップを実行します:

  1. ナビゲータ・ペインで「WebLogicドメイン」を開き、PIIの構成が必要なドメインを表示します。ドメインを選択します。

  2. コンテンツ・ペインで、「WebLogicドメイン」「Webサービス」「ポリシー」の順にクリックします。

  3. oracle/pii_security_policyポリシーを選択し、コピーを作成します。

  4. SALT、反復およびキー・サイズの設定でデフォルトを使用するかを確認し、必要に応じて変更します。これらの設定の説明は、表18-92を参照してください。

  5. コピーのrequest.xpathsresponse.xpathsおよびその他のoracle/pii_security_policy構成プロパティを編集します。XPath、ネームスペース、csf.keyなどの指定方法は、『Oracle Web Services Managerの理解』のPIIセキュリティ・ポリシーの理解に関する項を参照してください。

    リクエストとレスポンスでは異なるデータを保護する必要がある可能性がある点に注意してください。

    この手順をスキップして、かわりに手順7で説明するように属性をオーバーライドすることも可能です。

  6. 第4章「ポリシーのアタッチ」で説明されているように、設計時またはデプロイ後にポリシーをアタッチします。

    第4章「ポリシーのアタッチ」で説明されている手順に加え、次の各項には状況に固有の情報が含まれます。

  7. オプションで、Fusion Middleware Control、WLSTまたはJDeveloper (もしくはその他のメカニズム)を使用して、request.xpathsおよびその他のoracle/pii_security_policy属性をオーバーライドします。

    XPath、ネームスペース、csf.keyなどの指定方法は、「PIIセキュリティ・ポリシーの理解」を参照してください。

    構成プロパティのオーバーライドの詳細は、第5章「ポリシー構成プロパティのオーバーライド」を参照してください。

8.1.5 SOAコンポジットへのpii_security_policyのアタッチ

ポリシーはサービス/参照レベルのみでアタッチする必要があり、クライアントおよびWebサービスの両方にアタッチします。

図8-1のJDeveloperに示されているSOAコンポジットを参照してください。このコンポジットの場合、ポリシーをbpelprocess_1client_epクライアントおよびPartnerLink1参照の両方にアタッチします。ポリシーはコンポーネントにアタッチできません。

図8-1 SOAコンポジットでのpii_security_policyのアタッチ先

図8-1の説明が続きます
「図8-1 SOAコンポジットでのpii_security_policyのアタッチ先」の説明

次の手順を実行してSOAコンポジットを表示し、oracle/pii_security_policyポリシーをアタッチします。

  1. ナビゲータで、SOAデプロイメントを開きます。

  2. soa-infraを選択し、SOAパーティション(たとえば、defaultパーティション)を開き、目的のSOAコンポジット・アプリケーションを選択します。

    SOAコンポジットのホームページが表示されます。

  3. 選択されていない場合は、「ダッシュボード」タブを選択します。

    このタブの「コンポーネント」セクションには、コンポジット・アプリケーションで使用されているSOAコンポーネントが表示され、「サービスと参照」セクションには、図8-2に示すように、Webサービスと参照バインディングが表示されます。

    図8-2 SOAコンポジット・アプリケーションの「ダッシュボード」ページ

    図8-2の説明が続きます
    「図8-2 SOAコンポジット・アプリケーションの「ダッシュボード」ページ」の説明

    SOA固有の追加情報は、『Webサービスの管理』のSOAコンポジットでのWebサービスおよび参照の表示に関する項を参照してください。

  4. oracle/pii_security_policyポリシーのコピーをWebサービス・クライアントおよび参照バインディングの両方にアタッチします。


    注意:

    PIIデータでは、コンポジットにエントリ・ポイントと終了ポイントの両方が必要です。PIIデータはエントリ前に暗号化され、終了前に復号化されます。

    たとえば、図8-2の場合、コピーをroutePOサービスおよびWriteApprovalresults参照の両方にアタッチします。

    ポリシーのアタッチの詳細は、第4章「ポリシーのアタッチ」を参照してください。また、SOA固有の追加情報は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のバインディング・コンポーネントおよびサービス・コンポーネントへのポリシーのアタッチを参照してください。

  5. SALT、反復およびキー・サイズの設定でデフォルトを使用するかを確認し、必要に応じて変更します。これらの設定の説明は、表18-92を参照してください。

  6. Fusion Middleware Control、WLSTまたはJDeveloper (もしくはその他のメカニズム)を使用して、request.xpathsresponse.xpathsおよびその他の属性をオーバーライドします。

    リクエストとレスポンス用のPIIデータは異なる場合があります。

    図8-3は、サンプルのJDeveloper画面を示しています。

    図8-3 request.xpaths属性のオーバーライド

    図8-3の説明が続きます
    「図8-3 request.xpaths属性のオーバーライド」の説明

    これをWebサービスとクライアントの両方で実行し、一致していることを確認します。

    XPath、ネームスペース、csf.keyなどの指定方法は、『Oracle Web Services Managerの理解』のPIIセキュリティ・ポリシーの理解に関する項を参照してください。

    構成ポリシーのオーバーライドの詳細は、第5章「ポリシー構成プロパティのオーバーライド」を参照してください。

8.1.6 JCAバインディングへのpii_security_policyのアタッチ

PIIポリシーは、SOAとOracle Service Busの両方のJCAアダプタにアタッチできます。

PIIポリシーをJCAバインディングにアタッチする方法の詳細は、Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理のサービス・バインディング・コンポーネントおよび参照バインディング・コンポーネントの管理に関する項を参照してください。

Oracle Service Busへのoracle/pii_security_policyのアタッチ方法については、Oracle Service Busでのサービスの開発メッセージ内の個人の身元を特定する情報の非表示に関する項を参照してください。

8.2 WLSTを使用したpii_security_policy属性のオーバーライド

WLSTを使用してoracle/pii_security_policy属性をオーバーライドするには、次の手順を実行します。

  1. Oracle Fusion Middlewareを使用したWebサービスの管理のWebサービスのカスタムWLSTコマンドへのアクセスに関する項の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。「WLSTを使用したポリシーを直接アタッチする」で説明するように、beginWSMSessionコマンドを使用してセッションを開始します。例:

    wls:/wls_domain/serverConfig> beginWSMSession()
    
    Session started for modification.
    
  2. 使用するポリシー・サブジェクトを選択します。「WLSTを使用したポリシー・サブジェクトの識別と選択」を参照してください。

    『Oracle Web Services Managerの理解』のPIIポリシーを使用できる場合に関する項で説明されているように、oracle/pii_security_policyは特定の場合のみアタッチできます。サポートされていない場所にポリシーをアタッチすると、WLSTで検証エラーが発生します。

  3. 「WLSTを使用したポリシーを直接アタッチする」で説明されているように、attachWSMPolicyコマンドを使用して、Webサービス・ポートにoracle/pii_security_policyのコピーをアタッチします。例:

    wls:/base_domain/serverConfig> attachWSMPolicy('oracle/pii_security_policy')
     
    Policy reference "oracle/pii_security_policy" added.
  4. oracle/pii_security_policyポリシーの属性をオーバーライドします。たとえば、次のコマンドによってrequest.xpaths属性が設定されます。

    setWSMPolicyOverride('oracle/pii_security_policy','request.xpaths','//ns1:SSN'
    )

    同様に、次のコマンドによってrequest.xpaths属性の設定が解除されます。

    setWSMPolicyOverride('oracle/pii_security_policy','request.xpaths'
    )
  5. commitWSMSession()コマンドを使用して、リポジトリに対して、現在のリポジトリ・セッションのコンテンツの書込みを行います。

WLSTコマンドおよびその引数の詳細は、『WebLogic Server WLSTコマンド・リファレンス』のWebサービスのカスタムWLSTコマンドに関する項を参照してください。

8.3 PIIを復号化するためのAPIの使用

暗号化されたPIIが、なんらかの決定に必要になる場合があります。この場合、使用する前に付属のAPIによってPIIを明示的に復号化する必要があります。

たとえば、クレジット・カードの番号がPIIとしてマーク付けされており、SOAサービス・バインディング(エントリ・ポイント)で暗号化されている場合を想定します。BPELプロセス内でクレジット・カードの種類を判別するためにクレジット・カードの番号が必要な場合、APIを使用してクレジット・カードの番号を復号化する必要があります。

この目的で、oracle.security.xmlsec.pii.PIISecurity.javaクラスが用意されています。このクラスには、次のメソッドがあります。

Class: oracle.security.xmlsec.pii.PIISecurity.java
 
/**
     * Converts cipher text string to plain text using password based key
     * derivation algorithm (PBKDF2).
     * 
     * @param ciphertext text to decrypt
     * @param password password for key derivation
     * @param pbkdfAlgo key derivation algorithm which should be PBKDF2
     * @param pbkdfSalt non-null and non-empty salt for key derivation
     * @param pbkdfIteration iteration count for key derivation
     * @param keySize size of key for key derivation
     * @param encAlg data encryption algorithm. it should be in the form:
     *                   "algorithm/mode/padding" for ex. AES/CBC/PKCS5Padding
     * @return plain text
     */
public static String decrypt(String ciphertext, char password[], String
 pbkdfAlgo, String pbkdfSalt, int bkdfIteration, int keySize, String encAlg);

decryptメソッドは暗号化されたPIIの復号化された値を返しますが、実際の値は更新せず、これは暗号化されたままになります。

SOAの場合、 『Oracle SOA SuiteでのSOAアプリケーションの開発』のOracle JDeveloperにおけるBPELプロセスでのJavaの埋込みの使用に関する項で説明されているように、Javaの埋込み機能を使用してこのAPIを起動できます。


注意:

PIIの復号化した値は、セキュリティ面で派生する問題を完全に理解している場合を除き、ログに記録しないでください。