Oracle Data Redactionを、Oracle Virtual Private DatabaseまたはOracle Enterprise Manager Data Masking and Subsetting Packなどの他のOracle製品とともに使用することができます。
この章の内容は次のとおりです。
主にアプリケーション問合せの表示結果をリダクションするためにOracle Data Redactionを使用する場合でも、それがDMLおよびDDL操作に与える影響を理解しておく必要があります。特に、リダクションされた列に対して非定型問合せを発行するユーザーがいる場合に、これが当てはまります。
次の点に注意してください。
Oracle Data Redactionは、結果は表示されませんが、DML文のRETURNING INTO
句を問合せとして処理します。バッファに送信されるのは、RETURNING INTO
句が通常のSQL問合せとして実行された場合に表示される結果で、DML文の一部として実行された場合の結果ではありません。アプリケーションがRETURNING INTO
の値を格納したバッファ上でさらに処理を実行する場合、バッファ内でリダクションされた結果を検索することができないため、アプリケーションの変更を検討してください。
リダクションされた列がDMLまたはDDL操作のソースとして現れた場合、Oracle Data Redactionは、これをポリシーを回避する試みとみなし、EXEMPT REDACTION POLICYシステム権限がないかぎり、「ORA-28081: 権限が不十分です - コマンドはリダクション済のオブジェクトを参照しています。」
エラーを表示して拒否します。内部ではOracle Data Pumpがこの種の操作を実行するため、リダクションされた列がある表のスキーマ・レベルのエクスポートを実行する必要があるユーザーには、EXEMPT REDACTION POLICY
システム権限の付与が必要になる可能性があります。
Oracle Data Redactionポリシーは次のように動作します。
ネストした関数は、最も内側からリダクションされます。たとえば、SELECT SUM(AVG(TO_NUMBER(((X))) FROM HR.EMPLOYEES WHERE ...
では、最初にTO_NUMBER
がリダクションされ、次にAVG
が、最後にSUM
関数がリダクションされます。
インライン・ビューは、最も外側からリダクションされます。たとえば、SELECT XYZ … AS SELECT A… AS SELECT B… AS SELECT C…
では、最初にSELECT XYZ
がリダクションされ、次にAS SELECT A
、その次にAS SELECT B
という順序でリダクションされます。AS SELECT C
は最後にリダクションされます。
WHERE句はリダクションされません。データ・リダクションでは、列のSELECT
リストのデータのみがリダクションされます。
Oracle Data Redactionは列の各行の値を動的に変更するため、集計関数を使用する特定のSQL問合せでは、行の値が静的であると仮定しているデータベース最適化を最大限に利用できません。集計関数をコールするSQL問合せでは、リダクションが原因でパフォーマンス・オーバーヘッドが発生する可能性があります。
オブジェクト型をリダクションすることはできません。これは、データベース・リダクションでは、オブジェクト型の構成に使用される可能性のある異なるすべての方法を処理できないためです。
エディション化ビューはリダクションできません。また、いずれのエディション化ビューの定義でも、リダクションされた列を使用することはできません。
仮想プライベート・データベース述語を含む仮想プライベート・データベース・インライン・ビューは実際の値で動作するため、Oracle Virtual Private Databaseポリシーは、Oracle Data Redactionの影響を受けません。
Oracle Data Redactionは、次の点でOracle Virtual Private Databaseとは異なります。
Oracle Data Redactionは、NULL
リダクションのみをサポートするOracle Virtual Private Databaseよりも多くのリダクション機能を提供します。多くのアプリケーションでは、NULL
リダクションを使用できないため、そのようなアプリケーションでは、データ・リダクションは有効な解決策です。
Oracle Virtual Private Databaseポリシーは静的、動的および文脈依存を使用できる一方、データ・リダクション・ポリシーは、静的および文脈依存のポリシー表現のみを使用できます。
データ・リダクションは、表またはビューに定義するポリシーを1つのみを許可する一方、オブジェクトには、複数の仮想プライベート・データベースのポリシーを定義できます。
データ・リダクションは、アプリケーション・ユーザーが、シノニムを使用するデータ・リダクション・ポリシーで保護されるオブジェクトへのアクセスを試みたときに実行されますが、(Oracle Virtual Private Databaseと違って)シノニム自体に直接ポリシーを作成することはできません。
Oracle Database Vault環境で、Oracle Data Redactionを使用できます。たとえば、オブジェクトがOracle Database Vaultレルムに含まれている場合、レルムの所有者または参加者の認証済リストに属していないユーザーは、ユーザーにEXEMPT REDACTION POLICY
権限が付与されているかどうかにかかわらず、オブジェクト・データを表示できません。ユーザーがデータに対してDMLまたはDDL文を試みると、エラー・メッセージが表示されます。
Oracle Data Pumpを使用して、新しいデータ・ポンプのデフォルト設定(direct_path
)に基づいてデータベースの全体エクスポート操作を実行し、理解できないエラー・メッセージが返された場合、この項を使用して、エラーをより正確に理解できるような方法で操作を繰り返してください。
access_method
パラメータがdirect_path
に設定されたOracle Data Pump Export (EXPDP
)ユーティリティを使用してデータをスキーマからエクスポートしようとするとき、このスキーマにデータ・リダクション・ポリシーが定義されているオブジェクトが含まれていると、次のエラー・メッセージが表示される場合があり、エクスポート操作は失敗します。
ORA-31696: unable to export/import TABLE_DATA:"schema.table" using client specified DIRECT_PATH method
この問題は、スキーマ・レベルのエクスポートを、EXP_FULL_DATABASE
ロールを付与されていないユーザーとして実行する場合にのみ発生します。EXP_FULL_DATABASE
ロールを必要とするデータベースの完全エクスポート時には発生しません。EXP_FULL_DATABASE
ロールにはEXEMPT REDACTION POLICY
システム権限が含まれており、これによりデータ・リダクション・ポリシーが無視されます。
潜在的な問題を見つけるには、EXPDP
起動を再度試してください。ただし、access_method
パラメータをdirect_path
には設定しないでください。かわりに、automatic
とexternal_table
のどちらかを使用してください。潜在的な問題とは、たとえば次のような権限の問題です。
ORA-28081: Insufficient privileges - the command references a redacted object.
関連項目: データ・ポンプ・エクスポートの使用に関する詳細は、『Oracle Databaseユーティリティ』を参照してください。 |
Oracle Enterprise Manager Data Masking and Subsetting Packでは、本番データベースのデータを取得し、そのデータを一括でマスクして、出力後のマスクされたデータを開発またはテスト・コピーに配置することで、本番データベースの開発またはテスト・コピーを作成できます。Oracle Enterprise Manager Data Masking and Subsetting Packですでにマスクされたデータを含む列をリダクションする場合は、データ・リダクション・ポリシーを本番以外のデータベースに適用してもかまいません。
データを開発およびテスト環境に移行する場合は、Oracle Enterprise Manager Data Masking and Subsetting Packを使用して、必ずデータ・セットをマスクしてください。データ・リダクションは、アプリケーション・コードを変更せずに、複数のアプリケーション間で一貫した方法で、起動時に本番アプリケーションをリダクションすることを主な目的として設計されています。
関連項目: データ・マスキングの詳細は、『Oracle Database Real Application Testingユーザーズ・ガイド』を参照してください。 |