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$
データ・ディクショナリ表に表示されます。