179 DBMS_TSDP_PROTECT

DBMS_TSDP_PROTECTパッケージは、DBMS_TSDP_MANAGE パッケージと組み合せて透過的機密データ保護(TSDP)ポリシーを構成するインタフェースを提供します。

DBMS_TSDP_PROTECTは、Enterprise Editionでのみ使用できます。

この章のトピックは、次のとおりです:

関連項目

179.1 DBMS_TSDP_PROTECTの概要

DBMS_TSDP_PROTECTパッケージを使用して、透過的機密データ保護ポリシーを作成し、そのポリシーを機密タイプに関連付けることによって保護を構成し、構成した保護を有効または無効にします。

機密タイプは、 DBMS_TSDP_MANAGE パッケージを使用して追加できます。

179.2 DBMS_TSDP_PROTECTのセキュリティ・モデル

すべてのプロシージャは、実行者の権限で実行されます。通常、セキュリティ管理者がこのパッケージのEXECUTE権限を持っている必要があります。

179.3 DBMS_TSDP_PROTECTの定数

DBMS_TSDP_PROTECTは、パラメータ値の指定時に使用するTSDP_PARAM_MAX定数を定義します。

この定数を、次の表に示します。

表179-1 DBMS_TDSP_PROTECTの定数 - 圧縮タイプ

定数 タイプ 説明

TSDP_PARAM_MAX

INTEGER

4000

FEATURE_OPTIONSで指定できるパラメータ値の最大長

179.4 DBMS_TSDP_PROTECTのデータ構造

DBMS_TSDP_PROTECTパッケージは、2つのTABLEタイプを定義します。

179.4.1 FEATURE_OPTIONS表タイプ

次のタイプはVARCHAR2(TSDP_PARAM_MAX)の連想配列で、これはVARCHAR2(M_IDEN)で索引付けされています。

構文

TYPE FEATURE_OPTIONS IS TABLE OF VARCHAR2(TSDP_PARAM_MAX) 
INDEX BY VARCHAR2(M_IDEN);

179.4.2 POLICY_CONDITIONS表タイプ

次のタイプはVARCHAR2(TSDP_PARAM_MAX)の連想配列で、これはPLS_INTEGERで索引付けされています。

構文

TYPE POLICY_CONDITIONS IS TABLE OF VARCHAR2(TSDP_PARAM_MAX) 
INDEX BY PLS_INTEGER;

179.5 DBMS_TSDP_PROTECTサブプログラムの要約

この表は、DBMS_TSDP_PROTECTサブプログラムを示し、簡単に説明しています。

表179-2 DBMS_TSDP_PROTECTパッケージのサブプログラム

サブプログラム 説明

ADD_POLICYプロシージャ

TSDPポリシーを作成します。

ALTER_POLICYプロシージャ

TDSPポリシーを変更します。

ASSOCIATE_POLICYプロシージャ

TSDPポリシーを機密列タイプに関連付けるか、関連付けを解除します。

DISABLE_PROTECTION_COLUMNプロシージャ

列の保護を無効にします。

DISABLE_PROTECTION_SOURCEプロシージャ

機密列の真実のソースに基づいて保護を無効にします。

DISABLE_PROTECTION_TYPEプロシージャ

機密列タイプの保護を無効にします。

DROP_POLICYプロシージャ

TDSPポリシーを削除します。

ENABLE_PROTECTION_COLUMNプロシージャ

列の保護を有効にします。

ENABLE_PROTECTION_SOURCEプロシージャ

機密列の真実のソースに基づいて保護を有効にします。

ENABLE_PROTECTION_TYPEプロシージャ

機密列タイプの保護を有効にします。

179.5.1 ADD_POLICYプロシージャ

このプロシージャはTDSPポリシーを作成します。

構文

DBMS_TSDP_PROTECT.ADD_POLICY (
   policy_name              IN VARCHAR2, 
   security_feature         IN PLS_INTEGER,
   policy_enable_options    IN FEATURE_OPTIONS,
   policy_apply_condition   IN POLICY_CONDITION DEFAULT TSDP$default_condition);

パラメータ

表179-3 ADD_POLICYプロシージャのパラメータ

パラメータ 説明

policy_name

作成するポリシーの名前。この識別子の最大長はM_IDENです。Oracleのネーミング規則に従います。

security_feature

ポリシーが関連付けられているOracleのセキュリティ機能。指定できる値は次のとおりです。

  • DBMS_TSDP_PROTECT.REDACT

  • DBMS_TSDP_PROTECT.VPD

  • DBMS_TSDP_PROTECT.UNIFIED_AUDIT

  • DBMS_TSDP_PROTECT.FINE_GRAINED_AUDIT

  • DBMS_TSDP_PROTECT.COLUMN_ENCRYPTION

policy_enable_options

security_feature設定に対応するパラメータと値のペアによって初期化されます。

policy_apply_condition

対応するpolicy_enable_optionsを適用するために満たす必要がある、プロパティと値のペアによって初期化されます。これは、キー(PLS_INTEGER)としてプロパティを指定した連想配列です。

例: example_policy_condition(Property)= property_value。プロパティに設定可能な値は次のとおりです。

  • DBMS_TSDP_PROPERTY.DATATYPE

  • DBMS_TSDP_PROPERTY.LENGTH

  • DBMS_TSDP_PROPERTY.PARENT_SCHEMA

  • DBMS_TSDP_PROPERTY.PARENT_TABLE

使用上のノート

TDSPポリシーを作成するには、プロシージャを無名ブロックに含める必要があります。この無名ブロックは、ポリシーが有効になっているときに、テストでポリシーおよび条件を使用するセキュリティ機能のタイプを定義します。詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

ポリシーPARTIAL_MASK_POLICYを作成します。

DECLARE
  redact_feature_options DBMS_TSDP_PROTECT.FEATURE_OPTIONS;
  policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
BEGIN
  redact_feature_options ('expression') :=
   'SYS_CONTEXT(''USERENV'',''SESSION_USER'')      =''APPUSER''';
  redact_feature_options ('function_type')        := 'DBMS_REDACT.PARTIAL';
  redact_feature_options ('function_parameters')  := 'STR, VVVVVVVVV,VVVVVVVVV, *,  1, 6';
  policy_conditions(DBMS_TSDP_PROTECT.DATATYPE)   := 'VARCHAR2';
 DBMS_TSDP_PROTECT.ADD_POLICY
  ('PARTIAL_MASK_POLICY',  DBMS_TSDP_PROTECT.REDACT, redact_feature_options, policy_conditions);
END; 

179.5.2 ALTER_POLICYプロシージャ

このプロシージャは、既存のTDSPポリシーを変更します。

構文

DBMS_TSDP_PROTECT.ALTER_POLICY (
   policy_name              IN VARCHAR2, 
   policy_enable_options    IN FEATURE_OPTIONS,
   policy_apply_condition   IN POLICY_CONDITION default TSDP$default_condition);

パラメータ

表179-4 ALTER_POLICYプロシージャのパラメータ

パラメータ 説明

policy_name

変更するポリシーの名前。

policy_enable_options

セキュリティ機能に対応するパラメータと値のペアによって初期化されます。

policy_apply_condition

対応するpolicy_enable_optionsを適用するために満たす必要がある、プロパティと値のペアによって初期化されます。これは、キー(PLS_INTEGER)としてプロパティを指定した連想配列です。

例: example_policy_condition(Property)= property_value。プロパティに設定可能な値は次のとおりです。

  • DBMS_TSDP_PROPERTY.DATATYPE

  • DBMS_TSDP_PROPERTY.LENGTH

  • DBMS_TSDP_PROPERTY.PARENT_SCHEMA

  • DBMS_TSDP_PROPERTY.PARENT_TABLE

使用上のノート

  • policy_apply_conditionがポリシーの既存の条件と一致する場合、対応する有効オプションはpolicy_enable_optionsで更新されます。

  • policy_apply_conditionがポリシーの既存のどの条件とも一致しない場合、policy_enable_optionspolicy_apply_conditionの組合せがポリシーに追加されます。

policy_apply_conditionpolicy_enable_optionsの新しい組合せを、既存のポリシーPARTIAL_MASK_POLICYに追加します。

DECLARE
  redact_feature_options DBMS_TSDP_PROTECT.FEATURE_OPTIONS;
  policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
BEGIN
   redact_feature_options ('expression') :=
       'SYS_CONTEXT(''USERENV'',''SESSION_USER'')=''APPUSER''';
   redact_feature_options ('function_type') := 'DBMS_REDACT.PARTIAL';
   redact_feature_options ('function_parameters') := 'STR, VVVVVVVVV,VVVVVVVVV, *,
        1, 6';
   policy_conditions (DBMS_TSDP_PROTECT.DATATYPE) := 'VARCHAR2';
   DBMS_TSDP_PROTECT.ALTER_POLICY ('PARTIAL_MASK_POLICY',  redact_feature_options, policy_conditions);
END;

179.5.3 ASSOCIATE_POLICYプロシージャ

このプロシージャは、TSDPポリシーを機密列タイプに関連付けるか、関連付けを解除します。

構文

DBMS_TSDP_PROTECT.ASSOCIATE_POLICY (
   policy_name        IN  VARCHAR2,
   sensitive_type     IN  VARCHAR2,
   associate          IN  BOOLEAN DEFAULT TRUE);

パラメータ

表179-5 ASSOCIATE_POLICYプロシージャのパラメータ

パラメータ 説明

policy_name

TDSPポリシー名。

sensitive_type

機密列タイプの名前。

associate

関連付けまたは関連解除。TRUEは関連付けを示します。

使用上のノート

ポリシーと機密列タイプの両方がデータベースに存在する必要があります。

PARTIAL_MASK_POLICYSSN_TYPEに関連付けます。

DBMS_TSDP_PROTECT.ASSOCIATE_POLICY ('PARTIAL_MASK_POLICY', 'SSN_TYPE');

179.5.4 DISABLE_PROTECTION_COLUMNプロシージャ

このプロシージャは、列の保護を無効にします。

構文

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN (
   schema_name        IN  VARCHAR2 DEFAULT '%',
   table_name         IN  VARCHAR2 DEFAULT '%',
   column_name        IN  VARCHAR2 DEFAULT '%',
   policy_name        IN  VARCHAR2 DEFAULT NULL);

パラメータ

表179-6 DISABLE_PROTECTION_COLUMNプロシージャのパラメータ

パラメータ 説明

schema_name

列を含むスキーマの名前。

table_name

列を含む表。

column_name

列名。

policy_name

ポリシー名(オプション)。指定すると、このポリシーのみが無効になります。

名前が%PAYROLL%、表名がEMP%、列名がSAL%のスキーマにある、列の対応する機密列タイプに関連付けられたTSDPポリシーを無効にします。

EXEC DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN ('%PAYROLL%', 'EMP%', 'SAL%');

179.5.5 DISABLE_PROTECTION_SOURCEプロシージャ

このプロシージャは、機密列の真実のソースに基づいて保護を無効にします。

構文

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_SOURCE (
   discovery_sourcename      IN  VARCHAR2);

パラメータ

表179-7 DISABLE_PROTECTION_SOURCEプロシージャのパラメータ

パラメータ 説明

discovery_sourcename

検出ソース名。これはアプリケーション・データ・モデル(ADM)名またはデータベース・ユーザーです。

ADM_Demoに対応するすべての列の保護を無効にします。

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_SOURCE ('ADM_Demo');

179.5.6 DISABLE_PROTECTION_TYPEプロシージャ

このプロシージャは、機密列タイプの保護を無効にします。

構文

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_TYPE (
   sensitive_type         IN VARCHAR2);

パラメータ

表179-8 DISABLE_PROTECTION_TYPEプロシージャのパラメータ

パラメータ 説明

sensitive_type

機密列タイプの名前。

SSN_TYPEで識別されたすべての列の保護を無効にします。

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_TYPE ('SSN_TYPE');

179.5.7 DROP_POLICYプロシージャ

このプロシージャは、TDSPポリシーまたはそのconditionとenable_optionsの組合せの1つを削除します。

構文

DBMS_TSDP_PROTECT.DROP_POLICY (
   policy_name              IN VARCHAR2, 
   policy_apply_condition   IN POLICY_CONDITIONS);

DBMS_TSDP_PROTECT.DROP_POLICY (
   policy_name              IN VARCHAR2);

パラメータ

表179-9 DROP_POLICYプロシージャのパラメータ

パラメータ 説明

policy_name

削除するポリシーの名前。

policy_apply_condition

関連条件で初期化されます。

使用上のノート

  • policy_conditionspolicy_enable_optionsの組合せは、policy_apply_conditionパラメータを指定することによってTSDPポリシーから削除できます。デフォルトのconditionとデフォルトのoptionsの組合せも削除できます(ポリシーに存在する場合)。そのためには、DBMS_TSDP_PROTECT.POLICY_CONDITIONタイプの空の連想配列を渡します。

  • 削除するconditionとenable_optionsの組合せがポリシーの最後のconditionとenable_optionsの組合せの場合、ポリシー自体が削除されます。

  • ポリシーは、policy_nameのみを取るプロシージャのオーバーロードを使用することによって完全に削除できます。

  • ポリシーまたはそのconditionの1つは、ポリシーがどの機密列タイプにも関連付けられていない場合にのみ削除できます。これは、削除されるポリシーがどの列(オブジェクト)でも有効になっていないことも意味します。

特定のconditionに基づいたconditionとenable_optionsの組合せの削除:

DECLARE
   policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
BEGIN
   policy_conditions (DBMS_TSDP_PROTECT.DATATYPE) := 'VARCHAR2';
   DBMS_TSDP_PROTECT.DROP_POLICY ('PARTIAL_MASK_POLICY', policy_conditions);
END;

デフォルトのconditionとenable_optionsの組合せは、DBMS_TSDP_PROTECT.POLICY_CONDITIONSタイプの連想配列をpolicy_apply_conditionパラメータに渡すことによって削除できます。

DECLARE
   policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
BEGIN
  DBMS_TSDP_PROTECT.DROP_POLICY ('redact_partial_cc', policy_conditions);
END;

TSDPポリシーの削除:

BEGIN
   DBMS_TSDP_PROTECT.DROP_POLICY(
   policy_name => 'PARTIAL_MASK_POLICY');
END;

179.5.8 ENABLE_PROTECTION_COLUMNプロシージャ

このプロシージャは、列の保護を有効にします。

構文

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_COLUMN (
   schema_name        IN  VARCHAR2 DEFAULT '%',
   table_name         IN  VARCHAR2 DEFAULT '%',
   column_name        IN  VARCHAR2 DEFAULT '%',
   policy_name        IN  VARCHAR2 DEFAULT NULL);

パラメータ

表179-10 ENABLE_PROTECTION_COLUMNプロシージャのパラメータ

パラメータ 説明

schema_name

列を含むスキーマの名前。

table_name

列を含む表。

column_name

列名。

policy_name

ポリシー名(オプション)。指定すると、このポリシーのみが有効になります。

使用上のノート

  • このプロシージャを使用して有効にできるのは、機密列の機密列タイプに関連付けられたTSDPポリシーのみです。

  • LIKE条件は、schema_nametable_nameおよびcolumn_nameで使用されます。ANDセマンティクスが続きます。

名前が%PAYROLL%、表名がEMP%、列名がSAL%のスキーマにある、列の対応する機密列タイプに関連付けられたTSDPポリシーを有効にします。

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_COLUMN ('%PAYROLL%', 'EMP%', 'SAL%');

179.5.9 ENABLE_PROTECTION_SOURCEプロシージャ

このプロシージャは、機密列の真実のソースに基づいて保護を有効にします。

構文

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_SOURCE (
   discovery_sourcename      IN  VARCHAR2);

パラメータ

表179-11 ENABLE_PROTECTION_SOURCEプロシージャのパラメータ

パラメータ 説明

discovery_sourcename

検出ソース名。これはアプリケーション・データ・モデル(ADM)名またはデータベース・ユーザーです。

ADM_Demoに対応するすべての列の保護を有効にします。

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_SOURCE ('ADM_Demo');

179.5.10 ENABLE_PROTECTION_TYPEプロシージャ

このプロシージャは、機密列タイプの保護を有効にします。

構文

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_TYPE (
   sensitive_type         IN VARCHAR2);

パラメータ

表179-12 ENABLE_PROTECTION_TYPEプロシージャのパラメータ

パラメータ 説明

sensitive_type

機密列タイプの名前。

SSN_TYPEで識別されたすべての列の保護を有効にします。

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_TYPE ('SSN_TYPE');