11 透過的機密データ保護の使用

透過的機密データ保護により、機密データを保持するデータベースのすべての表の列を確認できます。

11.1 透過的機密データ保護について

透過的機密データ保護は、機密情報を保持する列を表から探し出して分類するための手段です。

この機能を使用して、機密データを保持する列をデータベース表で特定し、このデータを分類して、指定されたクラスのこのデータ全体を保護するポリシーを作成できます。この種の機密データの例としては、クレジット・カード番号や社会保障番号などがあります。

TSDPポリシーは、次にOracle Data RedactionまたはOracle Virtual Private Databaseのいずれかの設定を使用して、これらの表の列の機密データを保護します。TSDPポリシーが保護する表の列レベルで適用され、クレジット・カード情報を含むすべてのNUMBERデータ型の列などの特定の列のデータ型を対象とします。分類するすべてのデータの均一のTSDPポリシーを作成して、コンプライアンス規制が変更される場合に必要に応じてこのポリシーを変更できます。オプションで、他のデータベースで使用するTSDPポリシーをエクスポートできます。

TSDPポリシーの利点は多くあります。多数のデータベースを使用する大きい組織全体にTSDPポリシーを簡単に作成および適用できます。これにより、TSDPポリシーが対象とするデータの保護を見積もることが可能なため、監査者にとって非常に便利です。TSDPは、似たセキュリティ制限を持つデータが多くあり、ポリシーをこのすべてのデータに一貫して適用する必要がある政府の環境に特に役立ちます。ポリシーは、リダクション、暗号化、そのアクセスの制御、そのアクセスの監査、監査証跡でのマスクを行うことができます。TSDPを使用しない場合、各リダクション・ポリシー、列レベルの暗号化構成および列ごとの仮想プライベート・データベース・ポリシーを構成する必要があります。

11.2 透過的機密データ保護を使用する一般的なステップ

Oracle Data RedactionでTSDPを使用するには、次の一般的なステップに従う必要があります。

  1. 機密タイプを作成して、保護する列のタイプを分類します。

    たとえば、すべての社会保障番号やクレジット・カード番号を分類するための機密タイプを作成できます。機密タイプを作成するには、DBMS_TSDP_MANAGE.ADD_SENSITIVE_TYPE PL/SQLプロシージャを使用するか、Enterprise Manager Cloud Controlアプリケーション・データ・モデルを使用します。アプリケーション・データ・モデルから1つの操作で複数の機密タイプを追加するには、DBMS_TSDP_MANAGE.IMPORT_SENSITIVE_TYPESプロシージャを使用できます。

  2. 機密タイプに関連付けられる機密列のリストを識別します。

    このリストを決定および生成するには、次の方法のいずれかを使用できます。

    • DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMNプロシージャは、機密列を個々に識別します。

    • Oracle Enterprise Manager Cloud Controlアプリケーション・データ・モデルにより、機密列のグループを識別できます。XML形式でこのリストの機密列を準備し、データベースにインポートします。

  3. ステップ2のアプリケーション・データ・モデルを使用した場合、DBMS_TSDP_MANAGE.IMPORT_DISCOVERY_RESULTプロシージャを使用して、アプリケーション・データ・モデルから機密列のリストをデータベースにインポートします。
  4. 使用するデータ・リダクションまたは仮想プライベート・データベースの設定を定義する無名ブロック内のDBMS_TSDP_PROTECT.ADD_POLICYプロシージャを使用して、TSDPポリシーを作成します。
  5. DBMS_TSDP_PROTECT.ASSOCIATE_POLICYプロシージャを使用して、TSDPポリシーを1つ以上の機密タイプと関連付けます。
  6. DBMS_TSDP_PROTECT.ENABLE_PROTECTION_SOURCEDBMS_TSDP_PROTECT.ENABLE_PROTECTION_COLUMNまたはDBMS_TSDP_PROTECT.ENABLE_PROTECTION_TYPEプロシージャを使用して、TSDPポリシー保護を有効化します。
  7. オプションで、Oracle Data Pumpを使用してフル・データベース・エクスポートを実行して、TSDPポリシーを他のデータベースにエクスポートします。(TSDPポリシーを個々にエクスポートできません。)

11.3 透過的機密データ保護ポリシーのユースケース

透過的機密データ保護には、次の利点があります。

これらの利点は次のとおりです。

  • 機密データ保護を一度構成して、必要に応じてこの保護をデプロイします。 透過的機密データ保護ポリシーを構成して、実際にターゲット・データを指定することなくどのようにデータのクラス(たとえば、クレジット・カード列など)を保護する必要があるかを指定できます。つまり、透過的機密データ保護ポリシーを作成する場合、保護する実際のターゲット列の参照を含む必要がありません。透過的機密データ保護ポリシーは、データベースの機密列のリストおよび指定された機密タイプのポリシーの関連付けに基づいて、これらのターゲット列を確認します。これは、透過的機密データ保護ポリシーを作成した後に追加の機密データをデータベースに追加する場合に便利です。ポリシーを作成した後、単一のステップで機密データの保護を有効化できます(たとえば、ソース・データベース全体に基づく保護の有効化など)。新しいデータの機密タイプ、機密タイプおよびポリシーの関連付けは、機密データの保護方法を決定します。これによって、新しい機密データが追加される場合、現在の透過的機密データ保護ポリシーの要件を満たしているかぎり、保護を構成する必要がありません。

  • 複数の機密列の保護を管理できます。適切な属性(ソース・データベースの識別、機密タイプ自体、特定のスキーマ、表、列など)に基づいて複数の機密列の保護を有効化または無効化できます。この精度により、データ・セキュリティの上位レベルの制御が提供されます。この機能の設計により、これらのコンプライアンス規制の範囲に該当する大きいデータ・セットの特定のコンプライアンス要件に基づいてデータ・セキュリティを管理できます。個別の列ごとではなく特定のカテゴリに基づいて、データ・セキュリティを構成できます。たとえば、クレジット・カード番号または社会保障番号の保護を構成できますが、このデータを含むデータベースの各列の保護を構成する必要はありません。

  • Oracle Enterprise Manager Cloud Controlアプリケーション・データ・モデル(ADM)機能を使用して識別された機密列を保護できます。Cloud Control ADM機能を使用して、機密タイプを作成し、機密列のリストで検出できます。次に、このリストの機密列および対応する機密タイプをデータベースにインポートできます。そこから、この情報を使用して、透過的機密データ保護ポリシーを作成および管理できます。

11.4 透過的機密データ保護の使用に必要な権限

透過的機密データ保護を使用するには、次のPL/SQLパッケージに対するEXECUTE権限が必要です。

これらの権限は次のとおりです。

  • 機密列および機密タイプをデータベースにインポートして管理できるDBMS_TSDP_MANAGE。このパッケージのプロシージャは、実行者権限で実行されます。通常、アプリケーション・データベース管理者には、このパッケージの権限が付与されます。

  • TSDPポリシーの作成に使用されるDBMS_TSDP_PROTECT。このパッケージのプロシージャは、実行者権限で実行されます。通常、セキュリティ・データベース管理者には、このパッケージの権限が付与されます。

  • データ・リダクション・ポリシーを作成する場合のDBMS_REDACT。通常、セキュリティ・データベース管理者には、このパッケージの権限が付与されます。

  • Oracle Virtual Private Database機能をTSDPポリシーに組み込む場合のDBMS_RLS。通常、セキュリティ・データベース管理者には、このパッケージの権限が付与されます。

業務分離を強化するために、アプリケーション・データベース管理者がTSDPポリシー作成の1つの領域(DBMS_TSDP_MANAGEパッケージの場合と同様)を制御するか、セキュリティ・データベース管理者(DBMS_TSDP_PROTECTDBMS_REDACTおよびDBMS_RLSパッケージ用)が制御できるように、これらのパッケージが設計されています。

11.5 マルチテナント環境が透過的機密データ保護に影響を与えるしくみ

マルチテナント環境では、透過的機密データ保護ポリシーを現在のPDBまたは現在のアプリケーションPDBのみに適用できます。

Enterprise Manager Cloud Controlアプリケーション・データ・モデルを使用している場合、PDB内のローカルおよび共通アプリケーション・オブジェクト(つまり、現在のPDB内で表示およびアクセスできる共通オブジェクト)に属する機密列を探すことができます。これにより、TSDPポリシーを使用して、PDBに対するローカル・オブジェクトと、PDBからアクセス可能な共通オブジェクトの両方を保護できます。

アプリケーション・ルート:

  • アプリケーション・コンテナ全般:

    • アプリケーションのインストール、アップグレード、パッチ適用またはアンインストール操作用のスクリプトを作成する際、ALTER PLUGGABLE DATABASE app_name BEGIN INSTALLおよびALTER PLUGGABLE DATABASE app_name END INSTALLブロック内にSQL文を含めて、様々な操作を実行できます。これらのブロックにTSDP文を含めると、そのTSDP文は失敗します。ただし、これらのブロック外のスクリプトにTSDP文を含めることができます。

  • アプリケーション・ルート:

    • アプリケーション共通オブジェクトと、アプリケーション・ルートのローカル・オブジェクトの両方でTSDP操作を実行できます。

    • アプリケーション・ルート・コンテナで定義されたTSDPポリシーは、アプリケーション・ルートに対するローカル・ポリシーであるかのように動作します。つまり、このポリシーが有効なのはアプリケーション・ルート・コンテナ内のみです。

アプリケーションPDB:

  • アプリケーションPDBを保護するセキュリティ・ポリシーは、ローカル・アプリケーション・オブジェクトに対して実行されるTSDP操作に適用されます。

  • アプリケーションPDBを保護するセキュリティ・ポリシーは、PDBからアクセス可能なアプリケーション共通オブジェクトに対して実行されるTSDP操作に適用されます。ただし、アプリケーションPDB外のアプリケーション共通オブジェクトへのアクセスは、アプリケーションPDBを保護するセキュリティ・ポリシーによって拘束されません。

DBA_TSDP_POLICY_FEATUREデータ・ディクショナリ・ビューを問い合せて、TSDPポリシー、および関連付けられているセキュリティ機能のリストを確認できます。すべてのPDBを検索するには、DBA_PDBSビューを問い合せます。

11.6 透過的機密データ保護ポリシーの作成

機密タイプを作成し、保護する機密列を特定して、それらの列をADMからデータベースにインポートする必要があります。

11.6.1 ステップ1: 機密タイプの作成

機密タイプは、機密として指定するデータのクラスです。

たとえば、すべてのクレジット・カード番号のcredit_card_type機密タイプを作成できます。

  • 機密タイプを作成するには、Enterprise Manager Cloud Controlアプリケーション・データ・モデルから機密タイプを作成するか、DBMS_TSDP_MANAGE.ADD_SENSITIVE_TYPE PL/SQLプロシージャを使用します。

    機密タイプを削除するには、DBMS_TSDP_MANAGE.DROP_SENSITIVE_TYPEプロシージャを使用します。

次に、機密タイプcredit_card_num_typeを作成する例を示します。

BEGIN
 DBMS_TSDP_MANAGE.ADD_SENSITIVE_TYPE (
  sensitive_type  => 'credit_card_num_type',
  user_comment    => 'Type for credit card columns using a number data type');
END;
/

この例では、次のようになります。

  • sensitive_type: 取得する機密タイプを説明する名前を作成します。この値は大/小文字を区別するので、後で参照する場合は、作成した大/小文字を使用していることを確認してください。DBA_SENSITIVE_COLUMN_TYPESデータ・ディクショナリ・ビューを問い合せて、既存の機密タイプを確認できます。

  • user_comment: オプションで、機密タイプの説明を入力します。

関連項目:

11.6.2 ステップ2: 保護する機密列の識別

機密列を定義したら、保護する列を特定します。

保護する列を識別するには、定義した機密タイプに基づいて、Enterprise Manager Cloud Controlアプリケーション・データ・モデルを使用してこれらの列を識別するか、DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMNプロシージャを使用できます。

データベースの機密列のリストから列を削除するには、DBMS_TSDP_MANAGE.DROP_SENSITIVE_COLUMNプロシージャを使用します。

  1. 使用する機密タイプを確認します。

    例:

    SELECT NAME FROM DBA_SENSITIVE_COLUMN_TYPES;
    
    NAME
    ---------------------
    credit_card_num_type
    
  2. DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMNプロシージャを実行して、機密タイプと表の列を関連付けます。機密タイプの作成に使用された大/小文字を使用してsensitive_typeパラメータを入力していることを確認します。

    例:

    BEGIN
     DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMN(
     schema_name        => 'OE',
     table_name         => 'CUST_CC',
     column_name        => 'CREDIT_CARD',
     sensitive_type     => 'credit_card_num_type',
     user_comment       => 'Sensitive column addition of credit_card_num_type');
    END;
    /

11.6.3 ステップ3: ADMからデータベースへの機密列リストのインポート

次に、ADMからデータベースに機密列リストをインポートします。

  • アプリケーション・データ・モデルを使用して機密列のリストを作成した場合、DBMS_TSDP_MANAGE.IMPORT_DISCOVERY_RESULTプロシージャを実行して、このリストをデータベースにインポートします。

    DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMNプロシージャを使用してこれらの列を識別した場合、このステップを回避できます。

次に、Cloud Controlアプリケーション・データ・モデルを現在のデータベースにインポートする例を示します。

BEGIN
 DBMS_TSDP_MANAGE.IMPORT_DISCOVERY_RESULT (
 discovery_result      => xml_adm_result,
 discovery_source      => 'ADM_Demo');
END;
/

この例では、次のようになります。

  • discovery_resultは、機密列および関連付けられている機密タイプのリストを表します。このリストはXML形式です。

  • discover_sourceは、discovery_result設定で参照された機密列のリストを含むアプリケーション・データ・モデルの名前を表します。Enterprise Manager Cloud Controlのデータ検出およびモデリング・ページからアプリケーション・データ・モデルのリストを確認できます。(このページにアクセスするには、「エンタープライズ」メニューから、「クオリティ管理」「データ検出およびモデリング」の順に選択します。「機密列」タブで、機密列および関連付けられているタイプのリストを確認できます。)

11.6.4 ステップ4: 透過的機密データ保護ポリシーの作成

機密列のリストを作成し、このリストをデータベースにインポートしたら、透過的機密データ保護ポリシーを作成します。

11.6.4.1 透過的機密データ保護ポリシーの作成について

DBMS_TSDP_PROTECT.ADD_POLICYプロシージャで、透過的機密データ保護ポリシーを作成します。

機密列の特定後、アプリケーション・データ・モデルを使用して機密列のリストを作成し、このリストをデータベースにインポートしたら、透過的機密データ保護ポリシーを作成します。透過的機密データ保護ポリシーを作成するには、使用する仮想プライベート・データベースまたはOracle Data Redaction設定にポリシーを構成し、これらの設定をDBMS_TSDP_PROTECT.ADD_POLICYで定義された透過的機密データ保護ポリシーに適用します。

次の構成要素を持つ無名ブロックを定義して、ポリシーを作成できます。

  • ポリシーにOracle Data Redactionを使用している場合、部分的なデータ・リダクションなど、使用するデータ・リダクションのタイプの指定

  • ポリシーにOracle Virtual Private Databaseを使用している場合、使用するVPD設定の指定

  • ポリシーを有効にする場合にテストする条件。たとえば、ポリシーを有効にする前に満たす必要がある列のデータ型など。

  • DBMS_TSDP_PROTECT.ADD_POLICYプロシージャを使用して、これらの構成要素を結合する名前付きの透過的機密データ保護ポリシー

機密タイプが作成された後、SYSスキーマに配置されます。

11.6.4.2 透過的機密データ保護ポリシーの作成

部分的な数値データ型ベースのデータ・リダクション・ポリシーを使用する透過的機密データ保護ポリシーを作成できます。

例11-1に、このタイプのポリシーを作成する方法を示します。

  • ポリシーを作成するには、例11-1に示すように、DBMS_TSDP_PROTECT.ADD_POLICYプロシージャを使用します。

例11-1 透過的機密データ保護ポリシーの作成

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') := '0,1,6';
  policy_conditions(DBMS_TSDP_PROTECT.DATATYPE) := 'NUMBER';
  policy_conditions(DBMS_TSDP_PROTECT.LENGTH) := '16';
 DBMS_TSDP_PROTECT.ADD_POLICY ('redact_partial_cc', 
  DBMS_TSDP_PROTECT.REDACT,redact_feature_options,
   policy_conditions);
END;
/

この例では、次のようになります。

  • redact_feature_options DBMS_TSDP_PROTECT.FEATURE_OPTIONSは、FEATURE_OPTIONSデータ型を使用する変数redact_feature_optionsを作成します。詳細は、Oracle Data Redactionまたは仮想プライベート・データベース機能オプションの設定を参照してください。

  • policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONSは、POLICY_CONDITIONSデータ型を使用する変数policy_conditionsを作成します。詳細は、透過的機密データ保護ポリシーの条件の設定を参照してください。

  • redact_feature_optionsの3行目は、データ・リダクション・ポリシー設定をredact_feature_option変数に書き込みます。この例では、データ・リダクション・ポリシーをユーザーAPPUSERに適用して、数値データ型の部分的なデータ・リダクションとしてポリシーを定義します。この場合のfunction_parametersパラメータの使用方法の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

  • policy_conditionsの2行目は、TSDPポリシー条件を保護されたNUMBERデータ型の列のpolicy_conditions変数(つまり、データ型および長さ)に書き込みます。

  • DBMS_TSDP_PROTECT.ADD_POLICYは、redact_partial_cc TSDPポリシーを作成するDBMS_TSDP_PROTECT.ADD_POLICYプロシージャを実行します。詳細は、DBMS_TSDP_PROTECT.ADD_POLICYプロシージャの指定を参照してください。

VPD用の類似したポリシーの例を確認する場合は、ステップ4: 透過的機密データ保護ポリシーの作成および有効化を参照してください。

11.6.4.3 Oracle Data Redactionまたは仮想プライベート・データベース機能オプションの設定

TSDP機能オプションは、透過的機密データ保護ポリシーに使用するOracle Data Redactionまたは仮想プライベート・データベース設定を示します。

  • Data Redactionの場合、redact_feature_options変数名を使用して機能オプションを定義し、型にはデータ型VARCHAR2(TSDP_PARAM_MAX)の結合配列であるDBMS_TSDP_PROTECT.FEATURE_OPTIONS型を使用する必要があります。DBMS_REDACT.ADD_POLICYパラメータに対応するパラメータと値のペアでこれらのオプションを初期化します。

たとえば、部分的なデータ・リダクションを使用するTSDPポリシーを指定する場合、例11-1に次のパラメータと値のペアを示します。

redact_feature_options ('function_type')       := 'DBMS_REDACT.PARTIAL';

保護された列の数値データ型を使用する部分的なデータ・リダクション・ポリシーの場合、例11-1では、次の追加のパラメータと値のペアを指定しています。

redact_feature_options ('expression')          := 'expression';
redact_feature_options ('function_parameters') := 'values';

同様に、仮想プライベート・データベースの場合、vpd_feature_options変数を使用して、VPD機能オプションを定義します。例:

vpd_feature_options ('statement_types')   := 'SELECT, INSERT, UPDATE, DELETE';

関連項目:

11.6.4.4 透過的機密データ保護ポリシーの条件の設定

オプションで、透過的機密データ保護ポリシーの条件を指定できます。

ただし、条件を省略する場合、DECLARE変数の次の行を引き続き含む必要があります。(この場合、policy_conditionsのデフォルト値は、空の結合配列です。)

policy_conditions SYS.DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
  • 条件を定義するには、policy_conditions変数名を使用し、型にはデータ型VARCHAR2(TSDP_PARAM_MAX)の結合配列であるDBMS_TSDP_PROTECT.POLICY_CONDITIONS型を使用します。2つの条件が単一のターゲット機密列で満たされていることを確認します。ターゲット列のプロパティは、列に適用する対応するDBMS_TSDP_PROTECT.FEATURE_OPTIONS設定のすべての条件プロパティを満たす必要があります

例11-1は、次のポリシー条件を示しています。

policy_conditions(DBMS_TSDP_PROTECT.DATATYPE) := 'NUMBER';
policy_conditions(DBMS_TSDP_PROTECT.LENGTH)   := '16';

オプションで、POLICY_CONDITIONS設定の次の1つ以上のキーを指定できます。

  • DBMS_TSDP_PROTECT.DATATYPEでは、データ型を指定できます。

  • DBMS_TSDP_PROTECT.LENGTHでは、DBMS_TSDP_PROTECT.DATATYPEキーのデータ型の長さを指定できます。

  • DBMS_TSDP_PROTECT.PARENT_SCHEMAでは、ポリシーを特定のスキーマに制限できます。この設定を省略すると、ポリシーはデータベースのすべてのスキーマに適用されます。

  • DBMS_TSDP_PROTECT.PARENT_TABLEでは、ポリシーをDBMS_TSDP_PROTECT.PARENT_SCHEMAキーで指定された表に制限できます。この設定を省略すると、ポリシーは指定されたスキーマ内のすべての表に適用されます。

11.6.4.5 DBMS_TSDP_PROTECT.ADD_POLICYプロシージャの指定

DBMS_TSDP_PROTECT.ADD_POLICYプロシージャでTSDPポリシーに名前を付与し、FEATURE_OPTIONSおよびPOLICY_CONDITIONSの設定を実行します。

ポリシーでは、redact_feature_optionspolicy_conditions設定が連携します。ポリシーがターゲット・オブジェクトで有効な場合(DBMS_TSDP_PROTECT.ENABLE_PROTECTION*プロシージャを使用)、redact_feature_options設定は、対応するpolicy_condition設定を満たしている場合のみ適用されます。次のパラメータを入力します。

  • 透過的機密データ保護ポリシーの名前を付け、必要な設定を実行するプロシージャを指定するには、次のパラメータを含めます。

    • policy_nameは、TSDPポリシーの名前を作成します。入力する名前は、作成時に使用された大/小文字の区別が使用され、データベースに格納されます。たとえば、redact_partial_ccを入力した場合、データベースはredact_partial_ccではなくredact_partial_ccとして格納します。

    • security_featureは、TSDPポリシーが使用するセキュリティ機能を表します。DBMS_TSDP_PROTECT.REDACTを入力して、Oracle Data Redactionを指定します。

    • policy_enable_optionsは、DBMS_TSDP_PROTECT.FEATURE_OPTIONS型に定義された変数を表します。

    • policy_apply_conditionは、DBMS_TSDP_PROTECT.POLICY_CONDITIONS型に定義された変数を表します。

例11-1は、次のポリシー・セットを示しています。

DBMS_TSDP_PROTECT.ADD_POLICY('redact_partial_cc', DBMS_TSDP_PROTECT.REDACT, redact_feature_options, policy_conditions);

11.6.5 ステップ5: ポリシーと機密タイプの関連付け

DBMS_TSDP_PROTECT.ASSOCIATE_POLICYプロシージャで、TSDPポリシーと機密タイプを関連付けます。

  1. 使用する機密タイプを確認します。

    すべての機密タイプのリストを確認する例を次に示します。

    SELECT NAME FROM DBA_SENSITIVE_COLUMN_TYPES ORDER BY NAME;
    
    NAME
    --------------------
    credit_card_num_type
    
  2. DBMS_TSDP_PROTECT.ASSOCIATE_POLICYプロシージャを実行して、ポリシーと機密列タイプを関連付けます。

    例:

    BEGIN
     DBMS_TSDP_PROTECT.ASSOCIATE_POLICY(
     policy_name        => 'redact_partial_cc',
     sensitive_type     => 'credit_card_num_type',
     associate          => true);
    END;
    /

    次の問合せは、credit_card_num_typeredact_partial_ccポリシーが関連付けられたことを示します。

    SELECT POLICY_NAME, SENSITIVE_TYPE FROM DBA_TSDP_POLICY_TYPE ORDER BY SENSITIVE_TYPE;
    
    POLICY_NAME       SENSITIVE_TYPE
    ----------------- --------------------
    redact_partial_cc  credit_card_num_type

11.6.6 ステップ6: 透過的機密データ保護ポリシーの有効化

保護されるソースの現在のデータベース、特定の表の列または特定の列タイプに対してTSDPポリシーを有効にすることができます。

11.6.6.1 保護されたソースの現在のデータベースの保護の有効化

保護されるソースの現在のデータベースに対して透過的機密データ保護を有効にすることができます。

保護を無効化する必要がある場合、DBMS_TSDP_PROTECT.DISABLE_PROTECTION_SOURCEプロシージャを実行します。

  • このタイプの保護を有効にするには、DBMS_TSDP_PROTECT.ENABLE_PROTECTION_SOURCEプロシージャを実行します。

次に、orders_dbデータベースの透過的機密データ保護ポリシーを有効化する例を示します。

BEGIN
 DBMS_TSDP_PROTECT.ENABLE_PROTECTION_SOURCE(
  discovery_source       => 'orders_db');
END;
/
11.6.6.2 特定の表の列の保護の有効化

表の特定の列に対して透過的機密データ保護を有効にすることができます。

表ごとに1つのポリシーのみ有効化できることに注意してください。保護を無効化する必要がある場合、DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMNプロシージャを実行します。

  • このタイプの保護を有効にするには、DBMS_TSDP_PROTECT.ENABLE_PROTECTION_COLUMNプロシージャを実行します。

次に、特定の表の列の透過的機密データ保護ポリシーredact_partial_ccを有効化する例を示します。

BEGIN
 DBMS_TSDP_PROTECT.ENABLE_PROTECTION_COLUMN(
  schema_name          => 'OE',
  table_name           => 'CUST_CC',
  column_name          => 'CREDIT_CARD',
  policy               => 'redact_partial_cc');
END;
/

「ORA-45622: ポリシーの強制中に警告が生成されました」エラーが表示される場合、ポリシーの構成をチェックします。この例では、この列がNUMBERデータ型で長さが16の場合、redact_partial_ccポリシーが列で有効です。OE.CUST_CC.CREDIT_CARD列がredact_partial_ccポリシーに関連付けられていても、この列が条件(データ型および長さ)を満たさない場合はポリシーが無効です。

11.6.6.3 特定の列タイプの保護の有効化

VARCHAR2データ型を使用するすべての列など、特定の列タイプに対して透過的機密データ保護を有効にすることができます。

保護を無効化する必要がある場合、DBMS_TSDP_PROTECT.DISABLE_PROTECTION_TYPEプロシージャを実行します。

  • このタイプの保護を有効にするには、DBMS_TSDP_PROTECT.ENABLE_PROTECTION_TYPEプロシージャを実行します。

次に、credit_card_num_type機密タイプを使用するすべての列の透過的機密データ保護を有効化する例を示します。

BEGIN
 DBMS_TSDP_PROTECT.ENABLE_PROTECTION_TYPE(
  sensitive_type           => 'credit_card_num_type');
END;
/

11.6.7 ステップ7: 他のデータベースへのポリシーのエクスポート(オプション)

別のデータベースに対してポリシーをエクスポートまたはインポートできます。

  • 別のデータベースに対してTSDPポリシーをエクスポートまたはインポートするには、Oracle Data Pumpを使用して、ポリシーを含むデータベースのフル・エクスポートまたはインポートを実行します。

エクスポートおよびインポート操作が透過的機密データ保護ポリシーだけでなくデータベース全体に適用されるので注意してください。

関連項目:

11.7 透過的機密データ保護ポリシーの変更

DBMS_TSDP_PROTECT.ALTER_POLICYプロシージャで、TSDPポリシーを変更できます。

透過的データ保護ポリシーを変更する場合、データ・リダクション設定の変更方法を定義して、これらの変更を透過的機密データ保護ポリシー自体に適用する必要があります。

DBA_TSDP_POLICY_FEATUREデータ・ディクショナリ・ビューを問い合せて、既存のポリシーおよび保護定義のリストを確認できます。

  • 透過的機密データ保護ポリシーを変更するには、DBMS_TSDP_PROTECT.ALTER_POLICYプロシージャを使用します。

次に、既存の透過的機密データ保護ポリシーを変更する例を示します。

DECLARE
  redact_feature_options SYS.DBMS_TSDP_PROTECT.FEATURE_OPTIONS;
  policy_conditions SYS.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') := '9,1,6';
  policy_conditions(DBMS_TSDP_PROTECT.DATATYPE) := 'NUMBER';
  policy_conditions(DBMS_TSDP_PROTECT.LENGTH) := '22';
 DBMS_TSDP_PROTECT.ALTER_POLICY ('redact_partial_cc',  
  redact_feature_options, policy_conditions);
END;
/

この例では、次のようになります。

  • redact_feature_options SYS.DBMS_TSDP_PROTECT.FEATURE_OPTIONSは、FEATURE_OPTIONSデータ型を使用する変数redact_feature_optionsを作成します。

  • policy_conditions SYS.DBMS_TSDP_PROTECT.POLICY_CONDITIONSは、POLICY_CONDITIONSデータ型を使用する変数policy_conditionsを作成します。

  • redact_feature_options ... redact_feature_optionsは、データ・リダクション・ポリシー設定をredact_feature_option変数に書き込みます。この例では、データ・リダクション・ポリシーをユーザーAPPUSERに適用して、数値データ型の部分的なデータ・リダクションとしてポリシーを定義します。この場合のfunction_parametersパラメータの使用方法の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

  • policy_conditions ... policy_conditionsは、TSDPポリシー条件を保護されたNUMBERデータ型の列のpolicy_conditions変数(つまり、データ型および長さ)に書き込みます。

  • DBMS_TSDP_PROTECT.ALTER_POLICY ...は、redact_partial_cc TSDPポリシーを変更してredact_feature_optionsおよびpolicy_conditions変数に設定された定義を使用するDBMS_TSDP_PROTECT.ALTER_POLICYプロシージャを実行します。

11.8 透過的機密データ保護ポリシーの無効化

DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMNプロシージャは1つまたはすべてのTSDPポリシーを無効にします。

  1. DBA_TSDP_POLICY_PROTECTIONデータ・ディクショナリ・ビューを問い合せて、保護された列および関連付けられた透過的機密データ保護ポリシーを確認します。

    例:

    SELECT COLUMN_NAME, TSDP_POLICY FROM DBA_TSDP_POLICY_PROTECTION WHERE TABLE_NAME = 'CUST_CC';
    
    COLUMN_NAME   TSDP_POLICY
    ------------  ------------------
    CREDIT_CARD   redact_partial_cc
    
  2. DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMNプロシージャを実行します。

    CUST_CC表のCREDIT_CARD列のredact_partial_ccポリシーを無効化する例を次に示します。

    BEGIN
     DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN(
      schema_name          => 'OE',
      table_name           => 'CUST_CC',
      column_name          => 'CREDIT_CARD',
      policy               => 'redact_partial_cc');
    END;
    /
    

    このプロシージャの%ワイルドカードを使用して、複数の項目を指定できます。たとえば、CREDITで始まる列の保護を無効化するには、次のように入力できます。

    BEGIN
     DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN(
      schema_name          => 'OE',
      table_name           => 'CUST_CC',
      column_name          => 'CREDIT%',
      policy               => 'redact_partial_cc');
    END;
    /
    

    表のすべての透過的機密データ保護ポリシーを無効化するには、policyパラメータを省略できます。例:

    BEGIN
     DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN(
      schema_name          => 'OE',
      table_name           => 'CUST_CC',
      column_name          => '%');
    END;
    /

11.9 透過的機密データ保護ポリシーの削除

TSDPポリシー全体を削除するか、またはポリシーから条件有効オプションの組合せを削除できます。

ポリシーが1つの条件有効オプションの組合せのみ持つ場合、Oracle Databaseはポリシー全体を削除します。削除する前にポリシーを無効化する必要はありませんが、関連付けられている機密列、機密タイプの順に削除する必要があります。

  1. DBA_TSDP_POLICY_FEATUREデータ・ディクショナリ・ビューのPOLICY_NAME列を問い合せて、削除するポリシーを確認します。
    SELECT POLICY_NAME FROM DBA_TSDP_POLICY_FEATURE;
    
    POLICY_NAME
    -----------------
    redact_partial_cc
    

    透過的機密データ保護データ・ディクショナリ・ビューを問い合せるには、SELECT_CATALOG_ROLEロールが付与されている必要があります。

  2. このポリシーに関連付けられている機密列を確認します。

    例:

    SELECT COLUMN_NAME FROM DBA_TSDP_POLICY_PROTECTION WHERE TSDP_POLICY = 'redact_partial_cc';
    
    COLUMN_NAME
    -----------------
    CREDIT_CARD
    
  3. この機密列を削除します。

    例:

    BEGIN
     DBMS_TSDP_MANAGE.DROP_SENSITIVE_COLUMN (
       schema_name        => 'OE',
       table_name         => 'CUST_CC',
       column_name        => 'CREDIT_CARD');
    END;
    /
    
  4. このポリシーに関連付けられている機密タイプを確認します。

    例:

    SELECT SENSITIVE_TYPE FROM DBA_TSDP_POLICY_TYPE WHERE POLICY_NAME = 'redact_partial_cc'; 
    
    SENSITIVE_TYPE
    --------------------
    credit_card_num_type
    
  5. この機密タイプを削除します。

    例:

    BEGIN
     DBMS_TSDP_MANAGE.DROP_SENSITIVE_TYPE (   sensitive_type     => 'credit_card_num_type');END;
    /
    
  6. DBMS_TSDP_PROTECT.DROP_POLICYプロシージャを実行して、ポリシーを削除します。

    ポリシーを完全に削除する例を次に示します。

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

    ポリシーからデフォルトの条件有効オプションの組合せを削除するには:

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

    特定の条件に基づいてポリシーからデフォルトの条件有効オプションを削除するには:

    DECLARE
       policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
    BEGIN
       policy_conditions (DBMS_TSDP_PROTECT.DATATYPE) := 'NUMBER';
       DBMS_TSDP_PROTECT.DROP_POLICY ('redact_partial_cc', policy_conditions);
    END;
    /

11.10 事前定義のREDACT_AUDITポリシーを使用したバインド値のマスク

事前定義のREDACT_AUDITポリシーはバインド値をマスクします。バインド値は、イベントの設定時にトレース・ファイルに表示されます。

11.10.1 REDACT_AUDITポリシーについて

事前定義のREDACT_AUDIT透過的機密データ保護ポリシーはバインド値をマスクします。

SQL文で使用されるバインド変数のバインド値は、監査の構成時に監査レコードに表示できます。同様に、バインド値は、適切なイベントの設定時にトレース・ファイルに表示できます。V$SQL_BIND_DATA動的ビューを問い合せる場合、バインド値も表示できます。

REDACT_AUDIT透過的機密データ保護ポリシーは、監査レコード、トレース・ファイルおよびV$SQL_BIND_DATAビューの問合せでアスタリスク(*)としてデータを表示します。デフォルトでは、REDACT_AUDITポリシーがデータベースの機密タイプに関連付けられます。機密として列を識別する場合、デフォルトではREDACT_AUDITポリシーが有効です。

REDACT_AUDITポリシーを無効化および有効化できますが、変更または削除できません。

11.10.2 機密列と関連付けられた変数

バインド変数は、条件やSELECTアイテム、INSERTまたはUPDATE操作のある機密列の使用に影響します。

11.10.2.1 機密列に関連付けられた変数について

TSDPポリシーで変数を機密列に関連付けることができます。

バインド変数が機密列と同じ比較条件にある場合、機密列とともにSELECT文にある場合、または機密列を含むINSERTまたはUPDATE操作にある場合、そのバインド変数は機密とみなされるか、または機密列と関連付けられます。

11.10.2.2 条件式のバインド変数および機密列

WHERE句を含むSQL問合せに機密列を含めることができます。

WHERE句を含むSQL問合せには、比較演算子(=ISIS NOTLIKEBETWEENINなど)とともに使用したり、副問合せで使用する機密列およびバインド変数を含めることができます

次の比較問合せでは、VAR1および機密列SALARYが比較条件>を使用して比較される式に表示されているため、VAR1のバインド値がマスクされます。

SELECT EMPLOYEE_ID FROM HR.EMPLOYEES WHERE SALARY > :VAR1;

次の問合せでは、VAR1VAR2および機密列SALARYが比較等価条件=を使用する式に表示されているため、VAR1およびVAR2のバインド値がマスクされます。

SELECT EMPLOYEE_ID FROM HR.EMPLOYEES WHERE SALARY + :VAR1 = TO_NUMBER(:VAR2, '9G999D99');

浮動小数点条件の場合、機密列およびバインド変数が評価される式に表示されます。次の例では、VAR1および機密列SALARYIS NOT NAN条件の式に表示されているため、VAR1のバインド値がマスクされます。

SELECT COUNT( ) FROM HR.EMPLOYEES WHERE (SALARY * :VAR1) IS NOT NAN;

パターン一致条件では、機密列およびバインド変数が引数として表示されます。次の例では、VAR1および機密列LAST_NAMELIKE条件の引数であるため、VAR1のバインド値がマスクされます。

SELECT LAST_NAME FROM HR.EMPLOYEES WHERE LAST_NAME LIKE :VAR1;

BETWEEN条件の場合、機密列およびバインド変数が引数である式に表示されます。次の例では、VAR1VAR2およびSALARYBETWEEN条件の引数である式に表示されているため、VAR1およびVAR2のバインド値がマスクされます。

SELECT EMPLOYEE_ID FROM HR.EMPLOYEES WHERE SALARY BETWEEN :VAR1 AND :VAR2;

次の例では、機密列およびバインド変数がIN条件の引数です。ここでは、VAR1VAR2および機密列SALARYIN条件の引数として表示されているため、VAR1およびVAR2のバインド値がマスクされます。

SELECT COUNT( ) FROM HR.EMPLOYEES WHERE SALARY IN ( :VAR1, :VAR2);

条件に引数としてネストされた副問合せがある場合、ネストされた副問合せに表示されるバインド変数および機密列は条件に関連付けられているとみなされません。次の問合せでは、機密列SALARY列および副問合せは、次より大きい条件>の式です。

SELECT EMPLOYEE_ID FROM HR.EMPLOYEES WHERE SALARY > (SELECT SALARY FROM HR.EMPLOYEES WHERE MANAGER_ID = :VAR1);

ただし、変数VAR1およびMANAGER_IDが条件=を使用して比較される式に表示されるため、変数VAR1が列MANAGER_IDに関連付けられます。MANAGER_IDが機密列ではないため、変数VAR1は機密とみなされません。変数VAR1は、機密列SALARYと関連付けられているとみなされません。

論理条件、モデル条件、多重集合条件、XML条件、複合条件、IS OF型条件およびEXISTS条件の場合、バインド変数および機密列が相互に関連付けられることはありません。これは、これらの条件の構造または性質のためです。

11.10.2.3 同じSELECT項目に表示されるバインド変数および機密列

SELECT項目の列が機密である場合、SELECT項目のすべてのバインドが機密とみなされます。

たとえば、HR.EMPLOYEES.SALARYおよびHR.EMPLOYEES.COMMISSION_PCTが機密列であるとします。次の問合せでは、機密列SALARYと同じSELECT項目に表示されているため、バインド変数VAR1が機密とみなされ、バインド値がマスクされます。

SELECT (SALARY * :VAR1) AS BONUS AS FROM HR.EMPLOYEES WHERE EMPLOYEE_ID = :VAR2;

次の例では、SALARYと同じSELECT項目に表示されているため、バインド変数VAR1が機密とみなされます。機密列COMMISSION_PCTと同じSELECT項目に表示されているため、VAR2が機密とみなされます。

SELECT (SALARY * :VAR1), (COMMISSION_PCT * :VAR2), (EMPNO + :VAR3) AS BONUS AS FROM PAYROLL.ACCOUNT;
11.10.2.4 INSERTまたはUPDATE操作の機密列に割り当てられる式のバインド変数

複数のバインド変数を1つのINSERTまたはUPDATE文の異なる列に割り当てることができます。

次のINSERT文を考えてみます。

INSERT INTO PAYROLL.ACCOUNT (ACCOUNT_NUM, SALARY) VALUES (:VAR1 * :VAR2 , :VAR3); 

このINSERT文では、次が発生します。

  • バインド変数VAR1およびVAR2が式(:VAR1 * :VAR2)に表示され、機密列ACCOUNT_NUMに割り当てられます。

  • バインド変数VAR3が機密列SALARYに割り当てられます。

次のUPDATE文を考えてみます。

UPDATE PAYROLL.ACCOUNT SET ACCOUNT_NUM = :VAR1, SALARY = :VAR2;

このUPDATE文では、次が発生します。

  • バインド変数VAR1が機密列ACCOUNT_NUMに割り当てられます。

  • バインド変数VAR2が機密列SALARYに割り当てられます。

11.10.3 ビューでの機密列のバインド変数の動作

ビューの列が機密列を参照する場合、ビューの問合せに表示されるバインド変数が機密とみなされます。

たとえば、HR.EMPLOYEES表のSALARY列を機密と識別するとします。次に、ビューEMPLOYEES_VIEWを次のように作成します。

CREATE OR REPLACE VIEW HR.EMPLOYEES_VIEW AS SELECT * FROM HR.EMPLOYEES;

ユーザーがSQL文でこのビューからSALARY列を参照する場合、SALARY列に関連付けられているバインド変数が機密とみなされ、バインド値がマスクされます。

SELECT EMPLOYEE_ID FROM HR.EMPLOYEES_VIEW WHERE SALARY = :VAR1;

この場合、機密列HR.EMPLOYEES.SALARYを参照するHR.EMPLOYEES_VIEW.SALARY列に関連付けられているため、バインド変数VAR1がマスクされます。

11.10.4 REDACT_AUDITポリシーの無効化

デフォルトでは、REDACT_AUDITポリシーがすべての機密列に有効です。

特定の機密列またはすべての機密列に対して無効化できますが、必要に応じて再度有効化できます。REDACT_AUDITポリシーを変更または削除できないことに注意してください。

  • REDACT_AUDITポリシーを無効化するには、DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMNプロシージャを使用します。

次に、HR.EMPLOYEESSALARY列のREDACT_AUDITポリシーを無効化する例を示します。

BEGIN
 DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN(
  schema_name          => 'HR',
  table_name           => 'EMPLOYEES',
  column_name          => 'SALARY',
  policy               => 'REDACT_AUDIT');
END;
/

次の例は、現在のデータベースのすべての機密列のREDACT_AUDITポリシーを無効化する方法を示します。

BEGIN
 DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN(
  policy               => 'REDACT_AUDIT');
END;
/

11.10.5 REDACT_AUDITポリシーの有効化

特定の機密列、またはデータベース内のすべての列に対してREDACT_AUDITポリシーを有効化できます。

  • REDACT_AUDITポリシーを有効化するには、DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMNプロシージャを使用します。

次に、HR.EMPLOYEESSALARY列のREDACT_AUDITポリシーを再有効化する例を示します。

BEGIN
 DBMS_TSDP_PROTECT.ENABLE_PROTECTION_COLUMN(
  schema_name          => 'HR',
  table_name           => 'EMPLOYEES',
  column_name          => 'SALARY',
  policy               => 'REDACT_AUDIT');
END;
/

次の例は、現在のデータベースのすべての機密列のREDACT_AUDITポリシーを有効化する方法を示します。

BEGIN
 DBMS_TSDP_PROTECT.ENSABLE_PROTECTION_COLUMN(
  policy               => 'REDACT_AUDIT');
END;
/

11.11 データ・リダクションでの透過的機密データ保護ポリシー

Oracle Data Redaction機能を透過的機密データ保護ポリシーで使用できます。

Data Redactionの関数タイプ、関数パラメータおよび式をTSDPポリシーの定義に使用できます。たとえば、TSDPポリシーの有効化を設定して、FULLまたはPARTIALデータ・リダクションを使用できます。この章では、TSDPポリシーを管理する例としてデータ・リダクションを使用します。

関連項目:

11.12 Oracle VPDポリシーでの透過的機密データ保護ポリシーの使用

TSDPとOracle Virtual Private Databaseの保護を1つのポリシーに統合できます。

11.12.1 TSDPポリシーとOracle Virtual Private Databaseポリシーの併用について

Oracle Virtual Private Database保護を透過的機密データ保護ポリシーに組み込むには、DBMS_TSDP_PROTECTおよびDBMS_RLSパッケージを使用する必要があります。

この機能の手順は次のとおりです。

  1. 適切な述語を使用して、VPDポリシー関数を作成します。後で、TSDPポリシーを作成する場合、DBMS_TSDP_PROTECT.ADD_POLICYプロシージャのfeature_optionsパラメータにDBMS_RLS.ADD_POLICYプロシージャのpolicy_function設定を使用して、このVPDポリシー関数を参照します。

  2. VPDポリシー関数と似ている必要なVPD設定を使用して、TSDPポリシーを作成します。

    TSDPポリシーは、DBMS_RLS.ADD_POLICYプロシージャのパラメータ設定を使用して、VPD保護を提供します。表11-1に、これらのパラメータを示します。DBMS_RLS.ADD_GROUPED_POLICYポリシーのパラメータはサポートされていないので注意してください。

  3. DBMS_TSDP_PROTECT.ASSOCIATE_POLICYプロシージャを使用して、TSDPポリシーを必要な機密タイプと関連付けます。

  4. 次に、DBMS_TSDP_PROTECT.ENABLE_PROTECTION_*プロシージャのいずれかを使用して、TSDP保護を有効化します。

  5. TSDPポリシーを有効化します。この時点で、Oracle Databaseは、ステップ1で作成した関数を使用する内部VPDポリシーを作成します。

    内部ポリシーの名前は、ORA$VPDで始まり、識別子と続きます(たとえば、ORA$VPD_6J6L3RSJSN2VAN0XFなど)。このポリシーは、DBA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列に問い合せて確認できます。

  6. ユーザーが表を問い合せる場合、列の出力は、現在設定されているVPD保護およびTSDPポリシーに基づきます。

  7. この列のTSDPポリシーを無効化するまで、これらの保護は残ります。この時点で、不要になるため、Oracle Databaseが内部VPDポリシーを自動的に削除します。TSDPポリシーを再度有効化すると、内部VPDポリシーが再作成されます。

11.12.2 TSDPポリシーに使用されるDBMS_RLS.ADD_POLICYパラメータ

Oracle Databaseには、TSDPポリシーの動作を調整するための一連のパラメータが用意されています。

表11-1に、DBMS_TSDP_PROTECT.ADD_POLICYまたはDBMS_TSDP_PROTECT.ALTER_POLICYプロシージャを使用する場合にFEATURE_OPTIONSパラメータで許可できるDBMS_RLS.ADD_POLICYパラメータを示します。

表11-1 TSDPポリシーに使用されるDBMS_RLS.ADD_POLICYパラメータ

パラメータ 説明 デフォルト

function_schema

ポリシー・ファンクションのスキーマ(NULLの場合は現行のデフォルト・スキーマ)。function_schemaが指定されていない場合は、現在のユーザーのスキーマと想定されます。

NULL

policy_function

ポリシーの述語を生成するファンクションの名前。関数がパッケージ内で定義される場合、パッケージの名前(たとえば、my_package.my_functionなど)を含む必要があります。

NULL

statement_types

ポリシーを適用する文タイプ。INDEXSELECTINSERTUPDATEまたはDELETEを任意に組み合せることができます。デフォルトでは、これらの中からINDEX以外のほとんどのタイプが適用されます。

NULL

update_check

文タイプINSERTまたはUPDATEに対するオプションの引数。update_checkTRUEに設定すると、Oracle Databaseは、INSERTまたはUPDATE操作後に値に対してポリシーをチェックします。

チェックは、ポリシー定義に含まれるセキュリティ関連列にのみ適用されます。つまり、ポリシーで定義されているセキュリティ関連の列がINSERTまたはUPDATE文で追加または更新された場合にのみ、INSERT操作またはUPDATE操作が失敗します。

FALSE

static_policy

この値がTRUEに設定されている場合は、オブジェクトにアクセスするすべてのユーザー(ただし、SYSまたはEXEMPT ACCESS POLICY権限を持つ特権ユーザーを除く)に対して、静的ポリシーのポリシー・ファンクションが同一の述語文字列を生成するものとOracle Databaseはみなします。

FALSE

policy_type

デフォルト値のNULLは、policy_typestatic_policyパラメータの値によって決定されることを意味します。この中から指定したポリシー・タイプは、static_policyの値よりも優先されます。

NULL

long_predicate

デフォルト値のFALSEは、ポリシー・ファンクションから最大4000バイト長の述語が戻されることを意味します。TRUEは、述語テキスト文字列の長さを最大32Kバイトにできることを意味します。long_predicateパラメータを使用する前に存在するポリシーは、32K制限を保持します。

FALSE

sec_relevant_cols_opt

このパラメータを指定すると、透過的機密データ保護は、DBMS_RLS.ADD_POLICYプロシージャのsec_relevant_colsパラメータに対して保護が有効な機密列を入力します。

sec_relevant_cols_optの許可された値は次のとおりです。

  • NULLは、sec_relevant_colsで定義されたフィルタ処理を有効にします。

  • DBMS_RLS.ALL_ROWSはすべての行を表示しますが、機密情報の列の値があると、列の値がsec_relevant_colsパラメータでフィルタ処理されるため、NULLが表示されます。

NULL

11.12.3 チュートリアル: 仮想プライベート・データベース保護を使用するTSDPポリシーの作成

このチュートリアルでは、Oracle Virtual Private Database保護を透過的機密データ保護ポリシーに組み込む方法を示します。

11.12.3.1 ステップ1: hr_appuserユーザー・アカウントの作成

まず、サンプル・ユーザー・アカウントを作成し、このユーザーに適切な権限を付与する必要があります。

  1. SYSDBA管理権限を持つユーザーSYSとして、データベース・インスタンスにログインします。
    sqlplus sys as sysdba
    Enter password: password
    
  2. マルチテナント環境を使用している場合は、適切なプラガブル・データベース(PDB)に接続します。

    例:

    CONNECT SYS@hrpdb AS SYSDBA
    Enter password: password
    

    利用可能なPDBを検索するには、DBA_PDBSデータ・ディクショナリ・ビューを問い合せます。現在のPDBを確認するには、show con_nameコマンドを実行します。

  3. 次のユーザー・アカウントを作成します。
    GRANT CREATE SESSION TO hr_appuser IDENTIFIED BY password;
    GRANT CREATE SESSION TO tsdp_admin IDENTIFIED BY password;
    

    「パスワードの最低要件」のガイドラインに従って、passwordを安全なパスワードに置き換えます。

  4. ユーザーtsdp_adminに次の権限を付与します。
    GRANT CREATE PROCEDURE TO tsdp_admin;
    GRANT EXECUTE ON DBMS_TSDP_MANAGE TO tsdp_admin;
    GRANT EXECUTE ON DBMS_TSDP_PROTECT TO tsdp_admin; 
    GRANT EXECUTE ON DBMS_RLS to tsdp_admin;
    
  5. ユーザーSCOTTとして接続します。
    CONNECT SCOTT -- Or, CONNECT SCOTT@hrpdb
    Enter password: password
    
  6. hr_appuserEMP表のREADオブジェクト権限を付与します。
    GRANT READ ON EMP TO hr_appuser;
11.12.3.2 ステップ2: 機密列の識別

サンプル・ユーザーtsdp_adminとして、保護する機密データを特定します。

  1. ユーザーtsdp_adminとして接続します。
    CONNECT tsdp_admin -- Or, CONNECT tsdb_admin@hrpdb
    Enter password: password
    
  2. salary_type機密タイプを作成します。
    BEGIN
     DBMS_TSDP_MANAGE.ADD_SENSITIVE_TYPE (
      sensitive_type  => 'salary_type',
      user_comment    => 'Type for SCOTT.EMP column');
    END;
    /
    
  3. salary_type機密タイプとSCOTT.EMP表を関連付けます。
    BEGIN
     DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMN (
     schema_name        => 'SCOTT',
     table_name         => 'EMP',
     column_name        => 'SAL',
     sensitive_type     => 'salary_type',
     user_comment       => 'Sensitive column addition of SALARY_TYPE');
    END;
    /
11.12.3.3 ステップ3: Oracle Virtual Private Database関数の作成

TSDPはOracle VPDポリシー関数を、TSDPポリシーが有効になったときに自動作成されるVPDポリシーに関連付けます。

  • VPDポリシー関数を作成するには、CREATE OR REPLACE FUNCTIONプロシージャを次のように使用します。

    CREATE OR REPLACE FUNCTION vpd_function (
      v_schema IN VARCHAR2, 
      v_objname IN VARCHAR2) 
     RETURN VARCHAR2 AS 
    BEGIN
     RETURN 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''HR_APPUSER'''; 
    END vpd_function;
    /
11.12.3.4 ステップ4: 透過的機密データ保護ポリシーの作成および有効化

VPDポリシー関数の作成後、その関数を透過的機密データ保護ポリシーに関連付けることができます。

  1. 透過的機密データ保護ポリシーを作成します。
    DECLARE 
     vpd_feature_options DBMS_TSDP_PROTECT.FEATURE_OPTIONS;
     policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS;
    BEGIN
     vpd_feature_options ('policy_function') := 'vpd_function';   
     vpd_feature_options ('sec_relevant_cols_opt') := 'DBMS_RLS.ALL_ROWS';   
     dbms_tsdp_protect.add_policy('tsdp_vpd', DBMS_TSDP_PROTECT.VPD, vpd_feature_options, policy_conditions); 
    END; 
    /
    

    この例では、vpd_feature_optionsパラメータは、DBMS_RLS.ADD_POLICYプロシージャからsec_relevant_cols_optパラメータを参照します。TSDPポリシーを有効にすると、自動的に作成されるVPDポリシーは、DBMS_RLS.ADD_POLICYsec_relevant_colsパラメータをTSDPによってVPDポリシーが有効になる機密列の名前に設定します。sec_relevant_cols_optパラメータを使用しなかった場合、TSDPはDBMS_RLS.ADD_POLICY sec_relevant_cols_optパラメータを使用していません。

  2. tsdp_vpd1 TSDPポリシーとsalary_type機密タイプを関連付けます。
    BEGIN
     DBMS_TSDP_PROTECT.ASSOCIATE_POLICY(
     policy_name        => 'tsdp_vpd',
     sensitive_type     => 'salary_type',
     associate          => TRUE);
    END;
    /
    
  3. 保護を有効化して、SALARY_TYPEとして識別されるすべての列の仮想プライベート・データベース・ポリシーを規定します。
    BEGIN
     DBMS_TSDP_PROTECT.ENABLE_PROTECTION_TYPE(
      sensitive_type           => 'salary_type');
    END;
    /
11.12.3.5 ステップ5: 透過的機密データ保護ポリシーのテスト

これで、透過的機密データ保護ポリシーをテストする準備ができました。

  1. ユーザーhr_appuserとして接続します。
    CONNECT hr_appuser -- Or, CONNECT hr_appuser@hrpdb
    Enter password: password
    
  2. 次のようにSCOTT.EMP表を問い合せます。
    SELECT SAL, COMM, EMPNO FROM SCOTT.EMP;
    

    次のような出力結果が表示されます。

        SAL   COMM   EMPNO
    --------- ------ ----------
        800          7369
       1600    300   7499
       1250    500   7521
       2975          7566
       1250   1400   7654
       2850          7698
       2450          7782
       3000          7788
       5000          7839
       1500     0    7844
       1100          7876
        950          7900
       3000          7902
       1300          7934
    14 rows selected. 
    

    vpd_function関数により、ユーザーhr_appuserEMP表のSAL列の給与を確認できます。

  3. ユーザーSCOTTとして接続し、同じ問合せを実行します。
    CONNECT SCOTT -- Or, CONNECT SCOTT@hrpdb
    Enter password: password
    
    SELECT SAL, COMM, EMPNO FROM SCOTT.EMP;
    

    次のような出力結果が表示されます。

        SAL   COMM   EMPNO
    --------- ------ ----------
                     7369
               300   7499
               500   7521
                     7566
              1400   7654
                     7698
                     7782
                     7788
                     7839
                0    7844
                     7876
                     7900
                     7902
                     7934
    14 rows selected. 
    

    SCOTTEMP表を所有していても、vpd_function関数は、この表のSAL列の給与を表示しません。

11.12.3.6 ステップ6: このチュートリアルのコンポーネントの削除

このチュートリアルのコンポーネントが不要になった場合、それらを削除できます。

  1. ユーザーtsdp_adminとして接続します。
    CONNECT tsdp_admin -- Or, CONNECT tsdp_admin@hrpdb
    Enter password: password
    
  2. 表示されている順序で次の文を実行します。
    BEGIN
     DBMS_TSDP_MANAGE.DROP_SENSITIVE_COLUMN (
       schema_name        => 'SCOTT',
       table_name         => 'EMP',
       column_name        => 'SAL');
    END;
    /
    
    BEGIN
     DBMS_TSDP_MANAGE.DROP_SENSITIVE_TYPE(
     sensitive_type     => 'salary_type');
    END;
    /
    
    BEGIN
     DBMS_TSDP_PROTECT.DROP_POLICY(
       policy_name     => 'tsdp_vpd');
    END;
    /
    
  3. ユーザーSYSTEMで接続します。
    CONNECT SYSTEM -- Or, CONNECT SYSTEM@hrpdb
    Enter password: password
    
  4. tsdp_adminおよびhr_appuserアカウントを削除します。
    DROP USER tsdp_admin CASCADE;
    DROP USER hr_appuser

11.13 統合監査での透過的機密データ保護ポリシーの使用

透過的機密データ保護および統合監査プロシージャを使用すると、これら2つの機能の保護を組み合せることができます。

11.13.1 統合監査ポリシーでのTSDPポリシーの使用について

統合監査を使用してオブジェクトのアクションを監査するように、透過的機密データ保護ポリシーを構成できます。

DBMS_TSDP_PROTECT.ADD_POLICYおよびDBMS_TSDP_PROTECT.ALTER_POLICYプロシージャでは、CREATE AUDIT POLICYALTER AUDIT POLICYAUDIT POLICYおよびCOMMENT SQL文の設定を指定できます。TSDPポリシーを使用すると、INSERTまたはDELETE操作など、ポリシー内のオブジェクト固有のオプションに対するアクション監査オプションを作成できます。システム全体の監査オプションはサポートされていません。したがって、監査対象のオブジェクト型は常にTABLEです。標準のアクション(INSERTなど)のみが許可されます。コンポーネント・アクション(Oracle Label Securityまたは他のOracle Database機能に対するポリシーの作成など)はサポートされていません。

この機能の手順は次のとおりです。

  1. 必要な統合監査設定を使用して、TSDPポリシーを作成します。

    TSDPポリシーでは、CREATE AUDIT POLICYAUDIT POLICYおよびCOMMENT文のパラメータ設定を使用します。これらの設定は、TSDPポリシーに使用される統合監査ポリシーの設定にリストされています。

  2. DBMS_TSDP_PROTECT.ASSOCIATE_POLICYプロシージャを使用して、TSDPポリシーを必要な機密タイプと関連付けます。

  3. 次に、DBMS_TSDP_PROTECT.ENABLE_PROTECTION_*プロシージャのいずれかを使用して、TSDP保護を有効化します。

  4. TSDPポリシーを有効化します。TSDPポリシー有効化プロセスの一環として、Oracle Databaseでは統合監査ポリシーが内部的に作成され、ステップ1DBMS_TSDP_PROTECT.ADD_POLICYプロシージャに指定したターゲット・ユーザーおよびロールのリストに対して、そのポリシーが有効化されます。

    内部ポリシーの名前は、ORA$UNIFIED_AUDIT_で始まり、その後にランダムな英数文字列が続きます(たとえば、ORA$UNIFIED_AUDIT_6J6L3RSJSN2VAN0XFなど)。このポリシーは、AUDIT_UNIFIED_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列に問い合せて確認できます。この内部的に作成されたTSDP統合監査ポリシーが強制されるユーザーとロールの名前を確認するには、AUDIT_UNIFIED_ENABLED_POLICIESビューを問い合せます。

  5. TSDPポリシーによって保護されている表に対してユーザーがアクションの実行を試みると、TSDP統合監査ポリシー構成に基づいて、このオブジェクト・アクセスについて統合監査レコードが統合監査証跡に書き込まれます。その後、UNIFIED_AUDIT_TRAILビューを問い合せて、TSDP統合監査ポリシーの実施により作成された統合監査レコードを確認できます。

  6. この列のTSDPポリシーを無効化するまで、これらの保護は残ります。この時点で、Oracle Databaseでは内部ポリシーが不要になるため、自動的に無効化され、削除されます。(統合監査ポリシーは、削除前に無効化する必要があります。)TSDPポリシーを再度有効化すると、内部ポリシーが再作成されます。

11.13.2 TSDPポリシーに使用される統合監査ポリシーの設定

監査ポリシー設定は、DBMS_TSDP_PROTECT.ADD_POLICYまたはDBMS_TSDP_PROTECT.ALTER_POLICYプロシージャのPOLICY_ENABLE_OPTIONSパラメータで使用できます。

これらの監査ポリシー設定は、AUDITCREATE AUDIT POLICYおよびALTER AUDIT POLICY文からの設定です。

次の表に、これらの設定を示します。

表11-2 TSDPポリシーに使用される統合監査ポリシーの設定

パラメータ 説明 デフォルト

ACTION_AUDIT_OPTIONS

SQLアクションのカンマ区切りリストを含む文字列。

該当するアクション: ALTERAUDITCOMMENTDELETEFLASHBACKGRANTINDEXINSERTLOCKRENAMESELECTUPDATE

これらのアクションをすべて監査するようにポリシーを構成するには、キーワードALLを指定します。

ALL

AUDIT_CONDITION

SYS_CONTEXT (namespace, attribute)  operation  value-list

この構文では、operationに、次の任意の演算子を使用できます: IN,| NOT IN, =, <, >, or <>

監査条件に一重引用符が含まれている場合、1つではなく2つの一重引用符を指定し、SYS_CONTEXTを一重引用符で囲みます。例:

'SYS_CONTEXT(''USERENV'', ''CLIENT_IDENTIFIER'') = ''myclient'''

NULL

EVALUATE_PER

次のいずれかです。

  • STATEMENT

  • SESSION

  • INSTANCE

STATEMENT

ENTITY_NAME

ユーザーまたはロールのカンマ区切りリストを含む文字列。このパラメータを省略すると、すべてのユーザーに対して監査ポリシーが有効になります。

NULL (つまり、すべてのデータベース・ユーザー)

ENABLE_OPTION

ENTITY_NAMEパラメータが使用されている場合にのみ適用されます。これは、ENTITY_NAMEBYユーザー・リスト、EXCEPTユーザー・リスト、BY USERS WITH GRANTED ROLESロール・リストのいずれであるかを指定します。有効な設定は次のとおりです。

  • BY

  • EXCEPT

  • BY USERS WITH GRANTED ROLES

BY

UNIFIED_AUDIT_POLICY_COMMENT

作成される統合監査ポリシーを示す文字列。

NULL

11.14 ファイングレイン監査での透過的機密データ保護ポリシーの使用

透過的機密データ保護およびファイングレイン監査プロシージャを使用すると、これら2つの機能の保護を組み合せることができます。

11.14.1 ファイングレイン監査でのTSDPポリシーの使用について

ファイングレイン監査のために透過的機密データ保護ポリシーを構成できます。

DBMS_TSDP_PROTECT.ADD_POLICYおよびDBMS_TSDP_PROTECT.ALTER_POLICYプロシージャを使用すると、DBMS_FGA.ADD_POLICYプロシージャの設定を指定できます。

この機能の手順は次のとおりです。

  1. 必要なファイングレイン監査設定を使用して、TSDPポリシーを作成します。

    TSDPポリシーでは、DBMS_FGA.ADD_POLICYプロシージャのパラメータ設定が使用されます。これらの設定は、TSDPポリシーに使用されるファイングレイン監査パラメータにリストされています。

  2. DBMS_TSDP_PROTECT.ASSOCIATE_POLICYプロシージャを使用して、TSDPポリシーを必要な機密タイプと関連付けます。

  3. 次に、DBMS_TSDP_PROTECT.ENABLE_PROTECTION_*プロシージャのいずれかを使用して、TSDP保護を有効化します。

  4. TSDPポリシーを有効化します。TSDPポリシー有効化プロセスの一環として、Oracle Databaseでは、ステップ1DBMS_TSDP_PROTECT.ADD_POLICYプロシージャに指定したファイングレイン監査ポリシーが内部的に作成されます。

    内部ポリシーの名前は、ORA$FGA_で始まり、その後にランダムな英数文字列が続きます(たとえば、ORA$FGA_6J6L3RSJSN2VAN0XFなど)。このポリシーは、DBA_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列に問い合せて確認できます。

  5. TSDPポリシーによって保護されている表に対してユーザーがアクションの実行を試みると、ポリシー構成に基づいて、このオブジェクト・アクセスについてDBA_FGA_AUDIT_TRAILデータ・ディクショナリ・ビューにファイングレイン監査レコードが生成されます。

  6. この列のTSDPポリシーを無効化するまで、これらの保護は残ります。この時点で、Oracle Databaseでは内部ポリシーが不要になるため、自動的に削除されます。TSDPポリシーを再度有効化すると、内部ポリシーが再作成されます。

11.14.2 TSDPポリシーに使用されるファイングレイン監査パラメータ

DBMS_FGA.ADD_POLICY設定は、DBMS_TSDP_PROTECT.ADD_POLICYまたはDBMS_TSDP_PROTECT.ALTER_POLICYプロシージャのPOLICY_ENABLE_OPTIONSパラメータで使用できます。

次の表に、これらの設定を示します。

表11-3 TSDPポリシーに使用されるファイングレイン監査ポリシーの設定

パラメータ 説明 デフォルト

audit_condition

次の構文を使用して、監視状況を示すブール値を指定します。

operator value

例: < 1000

NULL

handler_schema

イベント・ハンドラを含むスキーマ。デフォルトのNULLの場合、現在のスキーマが使用されます。

NULL

handler_module

イベント・ハンドラのファンクション名。必要に応じて、パッケージ名を含めます。このファンクションは、問合せの監査条件と一致する最初の行が処理された後でのみ実行されます。例外が発生してプロシージャが異常終了すると、ユーザーのSQL文も異常終了します。

NULL

statement_types

次の文タイプのいずれかを指定できます: INSERTUPDATESELECTまたはDELETE

SELECT

audit_trail

データベースを完全な統合監査にまだ移行していない場合は、この設定を使用して、監査レコードの書込み先(データベースの場合はDB、またはXMLレコードの場合はXML)を設定できます。この設定では、FGA_LOG$システム表のLSQLTEXT列およびLSQLBIND列にデータを移入するかどうかについても指定します。

完全な統合監査が有効になっている場合は、Oracle Databaseによってこのパラメータは無視され、監査レコードが統合監査証跡に書き込まれます。

NULL

object_schema

機密列に対応するスキーマ

機密列が含まれているスキーマ

object_name

機密列が含まれている表

機密列が含まれているオブジェクト(表またはビュー)

policy_name

内部ファイングレイン監査ポリシーに対してシステムが生成した名前

システムが生成した内部ファイングレイン監査ポリシー名

audit_column

機密列

機密列

audit_column_opts

すべての列または特定の列の監査を指定します

DBMS_FGA.ANY_COLUMN

enable

TSDPポリシーの有効化ステータス(TRUEまたはFALSE)

TRUE

policy_owner

DBMS_TSDP_PROTECT.ENABLE_PROTECTION_*プロシージャを起動するユーザー

現行ユーザー

11.15 TDE列暗号化での透過的機密データ保護ポリシーの使用

TSDPプロシージャと透過的データ暗号化の列暗号化文を使用すると、これら2つの機能の保護を組み合せることができます。

11.15.1 TDE列暗号化でのTSDPポリシーの使用について

TSDPポリシーで、透過的データ暗号化を使用する列の暗号化を有効にできます。

DBMS_TSDP_PROTECT.ADD_POLICYおよびDBMS_TSDP_PROTECT.ALTER_POLICYプロシージャを使用すると、CREATE TABLEまたはALTER TABLE文のENCRYPT句の設定を指定できます。

この機能の手順は次のとおりです。

  1. DBMS_TSDP_PROTECT.ADD_POLICYプロシージャを使用して、TSDPポリシーを作成できます。ADD_POLICYプロシージャでは、SECURITY_FEATUREパラメータをDBMS_TSDP_PROTECT.COLUMN_ENCRYPTIONに設定することで、列暗号化のポリシーを構成できます。この設定により、TSDPポリシーがオブジェクトに対して有効になっている場合、機密列の暗号化が有効になります。

  2. 必要な表暗号化設定を使用して、TSDPポリシーを作成します。

    TSDPポリシーでは、CREATE TABLEまたはALTER TABLE SQL文のパラメータ設定が使用されます。これらの設定は、TSDPポリシーに使用されるTDE列暗号化ENCRYPT句の設定にリストされています。

  3. DBMS_TSDP_PROTECT.ASSOCIATE_POLICYプロシージャを使用して、TSDPポリシーを必要な機密タイプと関連付けます。

  4. 次に、DBMS_TSDP_PROTECT.ENABLE_PROTECTION_*プロシージャのいずれかを使用して、TSDP保護を有効化します。

  5. TSDPポリシーを有効化します。この時点で、Oracle Databaseでは、この手順の最初に作成した表暗号化設定を使用する内部TSDPポリシーが作成されます。

    内部ポリシーの名前は、ORA$TDECE_で始まり、その後にランダムな英数文字列が続きます(たとえば、ORA#TDECE_6J6L3RSJSN2VAN0XFなど)。このポリシーは、DBA_TSDP_POLICY_PROTECTIONビューのTSDP_POLICY列に問い合せて確認できます。

  6. ポリシーによって保護されている表に対してユーザーがアクションの実行を試みると、実行中のTDE列の保護およびTSDPポリシーの両方に基づいて、列に対する出力が行われます。TSDPポリシーを有効化した後、列が暗号化されているかどうかを確認するには、DBA_ENCRYPTED_COLUMNSビューのENCRYPTION_ALG列を問い合せます。

  7. この列のTSDPポリシーを無効化するまで、これらの保護は残ります。その時点で、Oracle Databaseでは、機密列が暗号化されるように、機密列が含まれている表に対してALTER TABLE文が内部的に発行されます。TSDPポリシーを再有効化すると、TSDPでは列に対してALTER TABLE文がENCRYPT句とともに内部的に実行されます。

ノート:

同じ列に対して、異なる暗号化アルゴリズムを指定した2つのポリシーを作成できます。この場合、2つのアルゴリズムのうち、より強いアルゴリズムが機密列に対して実施されます。

11.15.2 TSDPポリシーに使用されるTDE列暗号化ENCRYPT句の設定

CREATE TABLEおよびALTER TABLE文のENCRYPT句の設定は、DBMS_TSDP_PROTECT.ADD_POLICYまたはDBMS_TSDP_PROTECT.ALTER_POLICYプロシージャのPOLICY_ENABLE_OPTIONSパラメータで使用できます。

次の表に、これらの設定を示します。

表11-4 TSDPポリシーに使用されるTDE列暗号化ENCRYPTの設定

パラメータ 説明 デフォルト

encrypt_algorithm

使用可能な値

  • 3DES168

  • AES128

  • AES192

  • AES256

  • ARIA128

  • ARIA192

  • ARIA256

  • SEED128

  • GOST256

AES192

salt

使用可能な値:

  • SALT

  • NO SALT

SALT

integrity_algorithm

使用可能な値:

  • SHA-1

  • NOMAC

SHA-1

11.16 透過的機密データ保護のデータ・ディクショナリ・ビュー

Oracle Databaseには、透過的機密データ保護ポリシーに関する情報を表示するデータ・ディクショナリ・ビューが用意されています。

表11-5に、これらのビューを示します。これらのビューを使用する前に、SELECT_CATALOG_ROLEロールを付与する必要があります。

表11-5 透過的機密データ保護ビュー

ビュー 説明

DBA_DISCOVERY_SOURCE

透過的機密データの保護ポリシーに関するインポート情報の検出を説明します。

DBA_SENSITIVE_COLUMN_TYPES

現在のデータベースに定義されている機密列のタイプを説明します。

DBA_SENSITIVE_DATA

データベースの機密列を説明します。

DBA_TSDP_IMPORT_ERRORS

検出結果のインポート中に発生したエラーに関する情報を表示します。エラー・コード、スキーマ名、表名、列名および機密タイプに関する情報を表示します。

DBA_TSDP_POLICY_CONDITION

透過的機密データ保護ポリシーおよび条件マッピングを示します。このビューは、条件のプロパティと値のペアもリストします。

DBA_TSDP_POLICY_FEATURE

透過的機密データ保護ポリシーのセキュリティ機能マッピングを表示します。(現時点で、Oracle Data RedactionおよびOracle Virtual Private Databaseのみサポートされます。)

DBA_TSDP_POLICY_PARAMETER

透過的機密データ保護ポリシーのパラメータを示します

DBA_TSDP_POLICY_PROTECTION

透過的機密データ保護を通じて保護されている列のリストを表示します

DBA_TSDP_POLICY_TYPE

ポリシーと機密列タイプのマッピングを表示します

関連項目:

これらのビューの詳細は、『Oracle Databaseリファレンス』を参照してください。