3.7 完全データ・ポリシーの作成と完全リダクション値の変更
完全リダクション・ポリシーを作成して、データ列のすべての内容をリダクションできます。また、必要に応じて、デフォルトの完全リダクション値を変更できます。
3.7.1 完全リダクション・ポリシーの作成
完全データ・リダクション・ポリシーでは、データ列のすべての内容がリダクションされます。
3.7.1.1 完全データ・リダクション・ポリシーの作成について
列のすべてのデータをリダクションするリダクション・ポリシーを設定するには、function_typeパラメータをDBMS_REDACT.FULLに設定する必要があります。
デフォルトでは、NUMBERデータ型の列はゼロ(0)に置き換えられ、文字データ型の列は空白1つ( )に置き換えられます。DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャを使用することにより、このデフォルトを変更できます。
関連トピック
3.7.1.2 完全リダクション・ポリシーを作成する構文
DBMS_REDACT.ADD_POLICYプロシージャでは、完全リダクション・ポリシーを作成できます。
完全データ・リダクション・ポリシーを作成する場合のDBMS_REDACT.ADD_POLICYフィールドは次のとおりです。
DBMS_REDACT.ADD_POLICY ( object_schema IN VARCHAR2 := NULL, object_name IN VARCHAR2, column_name IN VARCHAR2 := NULL, policy_name IN VARCHAR2, function_type IN BINARY_INTEGER := NULL, expression IN VARCHAR2, enable IN BOOLEAN := TRUE);
ここでは次のように指定します:
-
object_schema、object_name、column_name、policy_name、expression、enable: 「DBMS_REDACT.ADD_POLICYプロシージャの一般的な構文」を参照してください。 -
function_type: リダクションのタイプの設定に使用するファンクションを指定します。DBMS_REDACT.FULLと入力します。function_typeパラメータを省略する場合、デフォルトのリダクションfunction_type設定は、DBMS_REDACT.FULLです。列のデータ型は、使用が許可されている
function_type設定を決定することに注意してください。「データ型に基づいた完全、部分、正規表現、ランダムおよびNULL化リダクションの比較」を参照してください。
3.7.1.3 例: 完全リダクション・ポリシー
DBMS_REDACT.ADD_POLICY PL/SQLプロシージャを使用して、完全リダクション・ポリシーを作成できます。
例3-1に、HR.EMPLOYEES表のCOMMISSION_PCT列にあるすべての値に対して完全リダクションを使用する方法を示します。この例の式パラメータは常にTRUEに評価されるため、EXEMPT REDACTION POLICYシステムまたはスキーマ権限が付与されているか、SYSDBA管理権限が付与されているユーザー以外は、表の問合せを行うすべてのユーザーに対してデータ・リダクション・ポリシーが適用されます。
例3-1 完全データ・リダクション・ポリシー
BEGIN DBMS_REDACT.ADD_POLICY( object_schema => 'hr', object_name => 'employees', column_name => 'commission_pct', policy_name => 'redact_com_pct', function_type => DBMS_REDACT.FULL, expression => '1=1'); END; /
問合せおよびリダクションされた結果:
SELECT COMMISSION_PCT FROM HR.EMPLOYEES; COMMISSION_PCT -------------- 0 0 0
3.7.1.4 例: 完全にリダクションされた文字値
DBMS_REDACT.ADD_POLICY PL/SQLプロシージャを使用して、文字値を完全にリダクションするポリシーを作成できます。
例3-2では、mavis.cust_info表にあるuser_id列のユーザーIDを完全にリダクションする方法を示します。user_id列は、VARCHAR2データ型です。出力は単一の空白です。expression設定により、MGRロールのあるユーザーは、ユーザーIDを表示できます。
例3-2 完全にリダクションされる文字値
BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema => 'mavis',
object_name => 'cust_info',
column_name => 'user_id',
policy_name => 'redact_cust_user_ids',
function_type => DBMS_REDACT.FULL,
expression => 'SYS_CONTEXT(''SYS_SESSION_ROLES'',''MGR'') = ''FALSE''');
END;
/
問合せおよびリダクションされた結果:
SELECT user_id FROM mavis.cust_info; USER_ID ------------ 0 0 0
3.7.2 デフォルトの完全データ・リダクション値の変更
DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャは、デフォルトの完全データ・リダクション値を変更します。
3.7.2.1 デフォルトの完全データ・リダクション値の変更について
完全データ・リダクション・ポリシーで表示されるデフォルトの値を変更できます。
Oracle DatabaseがNUMBERデータ型の列に完全リダクション(DBMS_REDACT.FULL)を実行する場合、デフォルトでは0がリダクションされた値です。これを他の値(たとえば、7)に変更する場合、DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャを実行すると、この値を変更できます。この変更は、現在のデータベース・インスタンスのすべてのデータ・リダクション・ポリシーに適用されます。値を有効にするには、変更した後に、データベースを再起動する必要があります。現在の値を検索するには、REDACTION_VALUES_FOR_TYPE_FULLデータ・ディクショナリ・ビューを問い合せます。
この変更は、完全なデータ・リダクションを使用するデータベースのすべてのデータ・リダクション・ポリシーに影響することに注意してください。デフォルトの完全データ・リダクション値を変更する前に、既存の完全データ・リダクション・ポリシーにこの変更が及ぼす影響を確認してください。
3.7.2.2 DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャの構文
DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESプロシージャでは、サポートされている標準のOracle Databaseデータ型を使用できます。
構文は以下のとおりです。
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, boolean_val IN BOOLEAN NULL);
ここでは次のように指定します:
-
number_valは、NUMBERデータ型の列のデフォルトの値を変更します。 -
binfloat_valは、BINARY_FLOATデータ型の列のデフォルトの値を変更します。 -
bindouble_valは、BINARY_DOUBLEデータ型の列のデフォルトの値を変更します。 -
char_valは、CHARデータ型の列のデフォルトの値を変更します。 -
varchar_valは、VARCHAR2データ型の列のデフォルトの値を変更します。 -
nchar_valは、NCHARデータ型の列のデフォルトの値を変更します。 -
nvarchar_valは、NVARCHAR2データ型の列のデフォルトの値を変更します。 -
date_valは、DATEデータ型の列のデフォルトの値を変更します。 -
ts_valは、TIMESTAMPデータ型の列のデフォルトの値を変更します。 -
tswtz_valは、TIMESTAMP WITH TIME ZONEデータ型の列のデフォルトの値を変更します。 -
blob_valは、BLOBデータ型の列のデフォルトの値を変更します。 -
clob_valは、CLOBデータ型の列のデフォルトの値を変更します。 -
nclobは、NCLOBデータ型の列のデフォルトの値を変更します。 -
boolean_valは、BOOLEANデータ型の列のデフォルトの値を変更します。COMPATIBLEデータベース初期化パラメータを23以上に設定した後、DBMS_REDACT.UPDATE_FULL_REDACTION_VALUESをboolean_valパラメータにNULL以外の値を指定して初めて呼び出すと、REDACTION_VALUES_FOR_TYPE_FULLのカタログ・ビューにBOOLEAN_VALUE列が表示され、BOOLCOL列がSYS.RADM_FPTM$データ・ディクショナリ表に表示されます。