Oracle® Fusion Middleware Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理 12c (12.1.3) E59414-02 |
|
前 |
次 |
この章では、セキュリティ・ポリシーの制御外にある個人を識別できる情報(PII)を保護するためのソリューションについて説明します。PIIとは、社会保障番号、住所、銀行の口座番号、およびその他の類似情報を指します(通常は1人の特定のユーザーに関連付けられており、保護する必要がある情報です)。
この章の内容は次のとおりです。
この項では、oracle/pii_security_policy
ポリシーを使用してPIIを保護する方法を説明します。次のトピックについて説明します。
PII暗号化鍵を構成し、次に使用環境に応じてoracle/pii_security_policy
ポリシーのアタッチ先を選択します。
SOAPリクエストおよびレスポンス・メッセージ、またはWSDLを検証し、保護するPIIデータを決定します。2つの方法があります。
SOAアプリケーションをデプロイし、JDeveloper (または別のメカニズム)を使用してSOAPメッセージを確認して保護する必要のあるものを決定します。
「PIIポリシーのXPath式」のSOAPメッセージの例を参照してください。
SOAアプリケーションをデプロイし、デプロイしたアプリケーションのWSDLを確認して保護する必要のあるものを決定します。
Oracle Fusion Middlewareを使用したWebサービスの管理のWebサービスのWSDLドキュメントの表示に関する項の説明に従って、Webサービス・エンドポイントのWSDLドキュメントを表示します。
リクエスト・フェーズおよびレスポンス・フェーズの両方で、どのようなデータが渡されているかを確認する必要があります。つまり、リクエストとレスポンスでは異なるデータを保護する必要がある可能性があります。
リクエストおよびレスポンス・メッセージの両方でPIIデータを保護するためのXPath式を作成します。詳細は、『Oracle Web Services Managerの理解』のPIIポリシーのXPath式に関する項のSOAPメッセージの例を参照してください。
これらのXPath式は、後ほど、request.xpath
およびresponse.xpath
属性のoracle/pii_security_policy
で指定します。
「資格証明ストアへの鍵およびユーザー資格証明の追加」の説明に従って、PII暗号化鍵の生成に使用するパスワードCSFキーを構成します。PII暗号化鍵は、このパスワード資格証明から導出されます。
デフォルトで、oracle/pii_security_policy
はキーの値にpii-csf-key
を要求しますが、これは変更可能です。
Webサービス・クライアントとWebサービスが同じ資格証明ストアを共有していない場合は、PII暗号化鍵がそれぞれの資格証明ストアに存在し、同一である必要があります。
事前定義済のoracle/pii_security_policy
のコピーを作成し、そのコピーをWebサービスとクライアントにアタッチします。次のステップを実行します:
ナビゲータ・ペインで「WebLogicドメイン」を開き、PIIの構成が必要なドメインを表示します。ドメインを選択します。
コンテンツ・ペインで、「WebLogicドメイン」→「Webサービス」→「ポリシー」の順にクリックします。
oracle/pii_security_policy
ポリシーを選択し、コピーを作成します。
SALT、反復およびキー・サイズの設定でデフォルトを使用するかを確認し、必要に応じて変更します。これらの設定の説明は、表18-92を参照してください。
コピーのrequest.xpaths
、response.xpaths
およびその他のoracle/pii_security_policy
構成プロパティを編集します。XPath、ネームスペース、csf.keyなどの指定方法は、『Oracle Web Services Managerの理解』のPIIセキュリティ・ポリシーの理解に関する項を参照してください。
リクエストとレスポンスでは異なるデータを保護する必要がある可能性がある点に注意してください。
この手順をスキップして、かわりに手順7で説明するように属性をオーバーライドすることも可能です。
第4章「ポリシーのアタッチ」で説明されているように、設計時またはデプロイ後にポリシーをアタッチします。
第4章「ポリシーのアタッチ」で説明されている手順に加え、次の各項には状況に固有の情報が含まれます。
オプションで、Fusion Middleware Control、WLSTまたはJDeveloper (もしくはその他のメカニズム)を使用して、request.xpaths
およびその他のoracle/pii_security_policy
属性をオーバーライドします。
XPath、ネームスペース、csf.keyなどの指定方法は、「PIIセキュリティ・ポリシーの理解」を参照してください。
構成プロパティのオーバーライドの詳細は、第5章「ポリシー構成プロパティのオーバーライド」を参照してください。
ポリシーはサービス/参照レベルのみでアタッチする必要があり、クライアントおよびWebサービスの両方にアタッチします。
図8-1のJDeveloperに示されているSOAコンポジットを参照してください。このコンポジットの場合、ポリシーをbpelprocess_1client_ep
クライアントおよびPartnerLink1
参照の両方にアタッチします。ポリシーはコンポーネントにアタッチできません。
次の手順を実行してSOAコンポジットを表示し、oracle/pii_security_policy
ポリシーをアタッチします。
ナビゲータで、SOAデプロイメントを開きます。
soa-infraを選択し、SOAパーティション(たとえば、defaultパーティション)を開き、目的のSOAコンポジット・アプリケーションを選択します。
SOAコンポジットのホームページが表示されます。
選択されていない場合は、「ダッシュボード」タブを選択します。
このタブの「コンポーネント」セクションには、コンポジット・アプリケーションで使用されているSOAコンポーネントが表示され、「サービスと参照」セクションには、図8-2に示すように、Webサービスと参照バインディングが表示されます。
SOA固有の追加情報は、『Webサービスの管理』のSOAコンポジットでのWebサービスおよび参照の表示に関する項を参照してください。
oracle/pii_security_policy
ポリシーのコピーをWebサービス・クライアントおよび参照バインディングの両方にアタッチします。
注意: PIIデータでは、コンポジットにエントリ・ポイントと終了ポイントの両方が必要です。PIIデータはエントリ前に暗号化され、終了前に復号化されます。 |
たとえば、図8-2の場合、コピーをroutePO
サービスおよびWriteApprovalresults
参照の両方にアタッチします。
ポリシーのアタッチの詳細は、第4章「ポリシーのアタッチ」を参照してください。また、SOA固有の追加情報は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のバインディング・コンポーネントおよびサービス・コンポーネントへのポリシーのアタッチを参照してください。
SALT、反復およびキー・サイズの設定でデフォルトを使用するかを確認し、必要に応じて変更します。これらの設定の説明は、表18-92を参照してください。
Fusion Middleware Control、WLSTまたはJDeveloper (もしくはその他のメカニズム)を使用して、request.xpaths
、response.xpaths
およびその他の属性をオーバーライドします。
リクエストとレスポンス用のPIIデータは異なる場合があります。
図8-3は、サンプルのJDeveloper画面を示しています。
これをWebサービスとクライアントの両方で実行し、一致していることを確認します。
XPath、ネームスペース、csf.keyなどの指定方法は、『Oracle Web Services Managerの理解』のPIIセキュリティ・ポリシーの理解に関する項を参照してください。
構成ポリシーのオーバーライドの詳細は、第5章「ポリシー構成プロパティのオーバーライド」を参照してください。
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でのサービスの開発のメッセージ内の個人の身元を特定する情報の非表示に関する項
を参照してください。
WLSTを使用してoracle/pii_security_policy
属性をオーバーライドするには、次の手順を実行します。
Oracle Fusion Middlewareを使用したWebサービスの管理のWebサービスのカスタムWLSTコマンドへのアクセスに関する項の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。「WLSTを使用したポリシーを直接アタッチする」
で説明するように、beginWSMSessionコマンドを使用してセッションを開始します。例:
wls:/wls_domain/serverConfig> beginWSMSession()
Session started for modification.
使用するポリシー・サブジェクトを選択します。「WLSTを使用したポリシー・サブジェクトの識別と選択」を参照してください。
『Oracle Web Services Managerの理解』
のPIIポリシーを使用できる場合に関する項で説明されているように、oracle/pii_security_policyは特定の場合のみアタッチできます。サポートされていない場所にポリシーをアタッチすると、WLSTで検証エラーが発生します。
「WLSTを使用したポリシーを直接アタッチする」
で説明されているように、attachWSMPolicy
コマンドを使用して、Webサービス・ポートにoracle/pii_security_policyのコピーをアタッチします。例:
wls:/base_domain/serverConfig> attachWSMPolicy('oracle/pii_security_policy') Policy reference "oracle/pii_security_policy" added.
oracle/pii_security_policy
ポリシーの属性をオーバーライドします。たとえば、次のコマンドによってrequest.xpaths
属性が設定されます。
setWSMPolicyOverride('oracle/pii_security_policy','request.xpaths','//ns1:SSN'
)
同様に、次のコマンドによってrequest.xpaths
属性の設定が解除されます。
setWSMPolicyOverride('oracle/pii_security_policy','request.xpaths'
)
commitWSMSession()
コマンドを使用して、リポジトリに対して、現在のリポジトリ・セッションのコンテンツの書込みを行います。
WLSTコマンドおよびその引数の詳細は、『WebLogic Server WLSTコマンド・リファレンス』のWebサービスのカスタムWLSTコマンドに関する項を参照してください。
暗号化された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の復号化した値は、セキュリティ面で派生する問題を完全に理解している場合を除き、ログに記録しないでください。 |