DBMS_REDACTパッケージは、権限の低いユーザーやアプリケーションによって発行された問合せから戻されるデータをマスク(リダクション)できる、Oracle Data Redactionへのインタフェースを提供します。
|
関連項目:
|
この章では、次の項目について説明します。
概要
セキュリティ・モデル
定数
プロシージャの使用
Data Redactionを使用すると、アプリケーションのマスキング・ポリシーを定義できます。Oracle Data Redactionでは、ユーザーのSELECT問合せから戻されるデータをマスク(リダクション)するための機能が提供されます。マスキングはリアルタイムで発生します。データ・リダクション・ポリシーは、問合せ元のユーザーのSYS_CONTEXTの値に応じて、そのユーザーに適用されます。このリダクション・プロセスでは、問合せ対象のデータが静的または不変である必要はなく、データ・セット全体をオフラインで同時にリダクションする必要もありません。Oracle Databaseでは、エントリ列のデータではなく、ユーザーの問合せで指定された行のデータのみがリダクションされます。リダクションは、データが問合せ元のユーザーまたはアプリケーションに戻される直前に発生します。
問合せ元のユーザーにEXEMPT REDACTION POLICYシステム権限が付与されている場合、リダクションは実行されません。問合せ元のユーザーにEXEMPT REDACTION POLICYシステム権限が付与されていない場合、現行ユーザーの環境内で、ポリシーの式が評価されます。ポリシーの式がTRUEと評価された場合はリダクションが実行され、そうでない場合は実行されません。
DBMS_REDACTパッケージのサブプログラムを実行するには、そのパッケージのEXECUTE権限が必要です。インタフェースに含まれるプロシージャは、現在のユーザーの権限で実行されます。
DBMS_REDACTパッケージでは、次の表に示す定数が使用されます。
表121-1 DBMS_REDACT.ADD_POLICYのfunction_typeパラメータの値
| 定数 | 値 | タイプ | 説明 |
|---|---|---|---|
|
|
|
|
リダクションなし。 |
|
|
|
|
固定値へのリダクション。 |
|
|
2 |
|
部分的なリダクション。列データの一部をリダクションします。 |
|
|
4 |
|
ランダム・リダクション。各問合せの結果は、異なるランダムな値になります。 |
|
|
|
|
正規表現ベースのリダクション。 |
表121-2 DBMS_REDACT.ALTER_POLICYのactionパラメータの値
| 定数 | 値 | タイプ | 説明 |
|---|---|---|---|
|
|
|
|
リダクション・ポリシーに列を追加します。 |
|
|
|
|
リダクション・ポリシーから列を削除します。 |
|
|
|
|
リダクション・ポリシーの式を変更します(この式は |
|
|
|
|
リダクション・ポリシーに含まれる列を変更することによって、リダクションの |
|
|
|
|
リダクション・ポリシーの説明を設定します。 |
|
|
|
|
列に対して実行されるリダクションの説明を設定します。 |
次の表に、リダクションする列のデータ・タイプに基づく、リダクション・ファンクションのタイプとそのパラメータの関係を示します。様々な書式文字列の例を提供することによって、文字列データ・タイプ(この場合は社会保障番号(SSN))やDATEデータ・タイプに対していくつかの一般的なリダクションを実行する方法を示します。また、数値データ・タイプに対するリダクションの様々な例も提供します。
表121-3 データ・リダクション・ファンクションのタイプ
| function_type | function_parameters | 例 |
|---|---|---|
|
|
||
|
|
||
|
|
次の5つのフィールドを含むカンマ区切りリスト(フィールドを区切るカンマの後にはスペースを入れません)。
表121-4「書式記述子と構成要素のフィールド名およびデリミタ」を参照してください。 |
|
|
|
|
|
|
|
REDACT_PARTIAL_OUTPUT_FORMATのフィールド値 |
|
|
|
値 |
|
|
|
値 |
|
|
|
値 |
|
|
|
||
|
|
次の3つのフィールドを含むカンマ区切りリスト(フィールドを区切るカンマの後にはスペースを入れません)。
表121-4「書式記述子と構成要素のフィールド名およびデリミタ」を参照してください。 |
|
|
|
||
|
|
次の5つのフィールドを含むリスト(フィールド間にスペースが入らないように連結されます)。
表121-4「書式記述子と構成要素のフィールド名およびデリミタ」を参照してください。 |
|
|
|
||
|
|
表121-4 書式記述子と構成要素のフィールド名およびデリミタ
| データ・タイプ | 部分リダクション用の書式記述子 |
|---|---|
|
文字 |
|
|
NUMBER |
|
|
日時 |
|
表121-5 DBMS_REDACTパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
表またはビューのデータ・リダクション・ポリシーを定義します。 |
|
|
表またはビューのデータ・リダクション・ポリシーを変更します。 |
|
|
データ・リダクション・ポリシーを無効にします。 |
|
|
データ・リダクション・ポリシーを削除します。 |
|
|
データ・リダクション・ポリシーを有効にします。 |
|
UPDATE_FULL_REDACTION_VALUESプロシージャ |
完全リダクションのデータ・リダクション・ポリシーでデフォルトで表示される値を変更します。 |
このプロシージャは、表またはビューのデータ・リダクション・ポリシーを定義します。
構文
DBMS_REDACT.ADD_POLICY ( object_schema IN VARCHAR2 := NULL, object_name IN VARCHAR2, policy_name IN VARCHAR2, column_name IN VARCHAR2 := NULL, function_type IN BINARY_INTEGER := DBMS_REDACT.FULL, function_parameters IN VARCHAR2 := NULL, expression IN VARCHAR2, enable IN BOOLEAN := TRUE, regexp_pattern IN VARCHAR2 := NULL, regexp_replace_string IN VARCHAR2 := NULL, regexp_position IN BINARY_INTEGER := 1, regexp_occurrence IN BINARY_INTEGER := 0, regexp_match_parameter IN VARCHAR2 := NULL, policy_description IN VARCHAR2 := NULL, column_description IN VARCHAR2 := NULL);
パラメータ
表121-6 ADD_POLICYプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
表を所有するスキーマ。 |
|
|
データ・リダクション・ポリシーが追加される表またはビューの名前です。 |
|
|
ポリシー名。 |
|
|
(オプション)リダクション・ポリシーを適用する列の名前。複数の列をリダクションする必要がある場合は、ALTER_POLICYプロシージャを使用して列を追加します。 |
|
|
使用するリダクション・ファンクションのタイプ。有効な値は、次のとおりです。 - - - - -
これらの値の意味の概要とその使用方法の一部の例は、表121-1「DBMS_REDACT.ADD_POLICYのfunction_typeパラメータの値」を参照してください。 |
|
|
リダクション・ファンクションのパラメータ。指定できる値は、提供された
- - - 部分文字マスキングのマスキング・パラメータ。文字データ・タイプの場合、カンマ区切りリストには次のフィールドが含まれます。
数値データ・タイプの場合、カンマ区切りリストには次のフィールドが含まれます。
|
|
日時データ・タイプの場合、この書式は、次の一連のフィールドを含む、間にスペースやカンマがない文字列になります。各フィールドは1つ以上の文字から構成され、フィールドの長さは、マスキングが必要であるかどうかによって異なります。1文字のフィールドは、日時値のその構成要素のリダクションは発生しないことを指定するために使用されます。それよりも長いフィールドは、日時値のその構成要素をリダクションした後の値として使用する、特定の時間または日付を示します。
たとえば、 部分文字と番号マスキング・ショートカットの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。 |
|
|
|
表またはビューのブール式で、 |
|
|
データ・リダクション・ポリシーを作成時に有効にするかどうかを決定するブール値。 デフォルト値の |
|
|
最大512バイトの正規表現パターン。
正規表現パターンの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。 |
|
|
この置換文字列(最大4000文字)には、最大500個の部分正規表現への後方参照を
|
|
|
1から始まる整数。検索の開始位置を指定します。
|
|
|
|
|
|
デフォルトの一致動作を変更します。'i'、'c'、'n'、'm'、'x'を組み合せた値を指定できます。
正規表現一致パラメータの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。 |
|
|
リダクション・ポリシーの説明です。 |
|
|
リダクションされた列の説明です。 |
例外
ORA-28060: この列には、すでにデータ・リダクション・ポリシーが存在します。
ORA-28061: このオブジェクトには、データ・リダクション・ポリシーを定義できません。
ORA-28062: ポリシー式が長すぎます。
ORA-28063: ポリシー式が空です。
ORA-28064: リダクション・ファンクションのタイプが無効です。
ORA-28066: 列columnは無効です。
ORA-28069 - このオブジェクトには、すでにデータ・リダクション・ポリシーが存在します。
ORA-28073 - 列column_nameにサポートされていないデータ型があります。
ORA-28074 - マスキング・パラメータのfield field_nameが無効です。
このフィールドには、次のいずれかを指定できます。
REDACT_PARTIAL_INPUT_FORMAT
REDACT_PARTIAL_OUTPUT_FORMAT
REDACT_PARTIAL_MASKCHAR
REDACT_PARTIAL_MASKFROM
REDACT_PARTIAL_MASKTO
REDACT_PARTIAL_DATE_MONTH
REDACT_PARTIAL_DATE_DAY
REDACT_PARTIAL_DATE_YEAR
REDACT_PARTIAL_DATE_HOUR
REDACT_PARTIAL_DATE_MINUTE
REDACT_PARTIAL_DATE_SECOND
ORA-28075 - ポリシー式にサポートされていない機能が含まれています。
ORA-28076 - SYS_SESSION_ROLESに属性が指定されていません。
ORA-28077 - 指定された属性(attribute)が最大長を超えています。
ORA-28078 - 正規表現パラメータがないか無効です。
ORA-28082 - パラメータparameterは無効です(ここで使用可能な値は、function_parameters、column_description、policy_nameおよびpolicy_descriptionです)。
ORA-28085 - リダクションの入力と出力の長さが一致しません。
例
部分リダクション・ポリシー:
BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema => 'hr',
object_name => 'employees',
column_name => 'employee_id',
policy_name => 'mask_emp_id_nums',
function_type => DBMS_REDACT.PARTIAL,
function_parameters => '7,1,5',
expression => '1=1');
END;
完全リダクション・ポリシー:
BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema => 'hr',
object_name => 'employees',
column_name => 'employee_id',
policy_name => 'mask_emp_ids',
function_type => DBMS_REDACT.FULL,
expression => 'SYS_CONTEXT(''SYS_SESSION_ROLES'',''CLERK'')
= ''FALSE''');
END;
このプロシージャは、次の1つ以上の方法で、表またはビューの既存のデータ・リダクション・ポリシーを変更します。
ポリシーの式の変更。
指定した列のリダクション・タイプの変更。
指定した列のリダクション・ファンクションのパラメータの変更。
リダクション・ポリシーへの列の追加(リダクション・タイプと任意のパラメータを指定する必要がある)。
リダクション・ポリシーからの列の削除。
構文
DBMS_REDACT.ALTER_POLICY ( object_schema IN VARCHAR2 := NULL, object_name IN VARCHAR2, policy_name IN VARCHAR2, action IN BINARY_INTEGER := DBMS_REDACT.ADD_COLUMN, column_name IN VARCHAR2 := NULL, function_type IN BINARY_INTEGER := DBMS_REDACT.FULL, function_parameters IN VARCHAR2 := NULL, expression IN VARCHAR2, regexp_pattern IN VARCHAR2 := NULL, regexp_replace_string IN VARCHAR2 := NULL, regexp_position IN BINARY_INTEGER := 1, regexp_occurrence IN BINARY_INTEGER := 0, regexp_match_parameter IN VARCHAR2 := NULL, policy_description IN VARCHAR2 := NULL, column_description IN VARCHAR2 := NULL);
パラメータ
表121-7 ALTER_POLICYプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
表を所有するスキーマ。 |
|
|
データ・リダクション・ポリシーが変更される表またはビューの名前です。 |
|
|
30バイトに制限されているポリシーの名前です。 |
|
|
実行するアクション。詳細は、表121-2「DBMS_REDACT.ALTER_POLICYのactionパラメータの値」を参照してください。 |
|
|
(オプション)リダクション・ポリシーを適用する列の名前。 |
|
|
使用するリダクション・ファンクションのタイプ。有効な値は、次のとおりです。 - - - - -
これらの値の意味の概要とその使用方法の一部の例は、表121-1「DBMS_REDACT.ADD_POLICYのfunction_typeパラメータの値」を参照してください。 |
|
|
リダクション・ファンクションのパラメータ。指定できる値は、提供された
- - -
数値データ・タイプの場合、カンマ区切りリストには次のフィールドが含まれます。
|
|
日時データ・タイプの場合、この書式は、次の一連のフィールドを含む、間にスペースやカンマがない文字列になります。各フィールドは1つ以上の文字から構成され、フィールドの長さは、マスキングが必要であるかどうかによって異なります。1文字のフィールドは、日時値のその構成要素のリダクションは発生しないことを指定するために使用されます。それよりも長いフィールドは、日時値のその構成要素をリダクションした後の値として使用する、特定の時間または日付を示します。
たとえば、 部分文字と番号マスキング・ショートカットの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。 |
|
|
|
表またはビューのブール式で、 |
|
|
最大512バイトの正規表現パターン。
正規表現パターンの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。 |
|
|
この置換文字列(最大4000文字)には、最大500個の部分正規表現への後方参照を
|
|
|
1から始まる整数。検索の開始位置を指定します。
|
|
|
|
|
|
デフォルトの一致動作を変更します。'i'、'c'、'n'、'm'、'x'を組み合せた値を指定できます。
正規表現一致パラメータの使用およびその例については、『Oracle Database SQL言語リファレンス』を参照してください。 |
|
|
リダクション・ポリシーの説明です。 |
|
|
リダクションされた列の説明です。 |
例外
ORA-28062: ポリシー式が長すぎます。
ORA-28063: ポリシー式が空です。
ORA-28064: リダクション・ファンクションのタイプが無効です。
ORA-28066: 列columnは無効です。
ORA-28067: 列名がないか無効です
ORA-28068: オブジェクト"object"には、データ・リダクション・ポリシーがありません。
ORA-28070: 列"column"には、データ・リダクション・ポリシーがありません。
ORA-28071: アクションが無効です。
ORA-28072: 指定されたポリシー名が正しくありません。
ORA-28073 - 列column_nameにサポートされていないデータ型があります。
ORA-28074 - マスキング・パラメータのfield_nameが無効です。
このフィールドには、次のいずれかを指定できます。
REDACT_PARTIAL_INPUT_FORMAT
REDACT_PARTIAL_OUTPUT_FORMAT
REDACT_PARTIAL_MASKCHAR
REDACT_PARTIAL_MASKFROM
REDACT_PARTIAL_MASKTO
REDACT_PARTIAL_DATE_MONTH
REDACT_PARTIAL_DATE_DAY
REDACT_PARTIAL_DATE_YEAR
REDACT_PARTIAL_DATE_HOUR
REDACT_PARTIAL_DATE_MINUTE
REDACT_PARTIAL_DATE_SECOND
ORA-28075: ポリシー式にサポートされていない機能が含まれています。
ORA-28076: SYS_SESSION_ROLESに属性が指定されていません。
ORA-28077: 指定された属性(attribute)が最大長を超えています。
ORA-28078: 正規表現パラメータがないか無効です。
ORA-28082 - パラメータparameterは無効です(ここで使用可能な値は、function_parameters、column_description、policy_nameおよびpolicy_descriptionです)。
ORA-28085 - リダクションの入力と出力の長さが一致しません。
このプロシージャは、データ・リダクション・ポリシーを無効にします。
構文
DBMS_REDACT.DISABLE_POLICY ( object_schema IN VARCHAR2 := NULL, object_name IN VARCHAR2, policy_name IN VARCHAR2);
このプロシージャは、表またはビューからマスキング・ポリシーを削除することによって、データ・リダクション・ポリシーを削除します。
構文
DBMS_REDACT.DROP_POLICY ( object_schema IN VARCHAR2 := NULL, object_name IN VARCHAR2, policy_name IN VARCHAR2);
このプロシージャは、データ・リダクション・ポリシーを再度有効にします。
構文
DBMS_REDACT.ENABLE_POLICY ( object_schema IN VARCHAR2 := NULL, object_name IN VARCHAR2, policy_name IN VARCHAR2);
このプロシージャは、完全リダクションのデータ・リダクション・ポリシーでデフォルトで表示される値を変更します。
構文
DBMS_REDACT.UPDATE_FULL_REDACTION_VALUES ( number_val IN NUMBER := NULL, binfloat_val IN BINARY_FLOAT := NULL, bindouble_val IN BINARY_DOUBLE := NULL, char_val IN CHAR := NULL, varchar_val IN VARCHAR2 := NULL, nchar_val IN NCHAR := NULL, nvarchar_val IN NVARCHAR2 := NULL, date_val IN DATE := NULL, ts_val IN TIMESTAMP := NULL, tswtz_val IN TIMESTAMP WITH TIME ZONE := NULL, blob_val IN BLOB := NULL, clob_val IN CLOB := NULL, nclob_val IN NCLOB NULL);
パラメータ
表121-11 UPDATE_FULL_REDACTION_VALUESプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|