15 透過的機密データ保護の使用
- 透過的機密データ保護について
透過的機密データ保護は、機密情報を保持する列を表から探し出して分類するための手段です。 - 透過的機密データ保護を使用する一般的なステップ
Oracle Data RedactionでTSDPを使用するには、次の一般的なステップに従う必要があります。 - 透過的機密データ保護ポリシーのユースケース
透過的機密データ保護には、次の利点があります。 - 透過的機密データ保護の使用に必要な権限
透過的機密データ保護を使用するには、次のPL/SQLパッケージに対するEXECUTE
権限が必要です。 - マルチテナント環境が透過的機密データ保護に影響を与えるしくみ
マルチテナント環境では、透過的機密データ保護ポリシーを現在のPDBまたは現在のアプリケーションPDBのみに適用できます。 - 透過的機密データ保護ポリシーの作成
機密タイプを作成し、保護する機密列を特定して、それらの列をADMからデータベースにインポートする必要があります。 - 透過的機密データ保護ポリシーの変更
DBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャで、TSDPポリシーを変更できます。 - 透過的機密データ保護ポリシーの無効化
DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN
プロシージャは1つまたはすべてのTSDPポリシーを無効にします。 - 透過的機密データ保護ポリシーの削除
TSDPポリシー全体を削除するか、またはポリシーから条件有効オプションの組合せを削除できます。 - 事前定義のREDACT_AUDITポリシーを使用したバインド値のマスク
事前定義のREDACT_AUDIT
ポリシーはバインド値をマスクします。バインド値は、イベントの設定時にトレース・ファイルに表示されます。 - データ・リダクションでの透過的機密データ保護ポリシー
Oracle Data Redaction機能を透過的機密データ保護ポリシーで使用できます。 - Oracle VPDポリシーでの透過的機密データ保護ポリシーの使用
TSDPとOracle Virtual Private Databaseの保護を1つのポリシーに統合できます。 - 統合監査での透過的機密データ保護ポリシーの使用
透過的機密データ保護および統合監査プロシージャを使用すると、これら2つの機能の保護を組み合せることができます。 - ファイングレイン監査での透過的機密データ保護ポリシーの使用
透過的機密データ保護およびファイングレイン監査プロシージャを使用すると、これら2つの機能の保護を組み合せることができます。 - TDE列暗号化での透過的機密データ保護ポリシーの使用
TSDPプロシージャと透過的データ暗号化の列暗号化文を使用すると、これら2つの機能の保護を組み合せることができます。 - 透過的機密データ保護のデータ・ディクショナリ・ビュー
Oracle Databaseには、透過的機密データ保護ポリシーに関する情報を表示するデータ・ディクショナリ・ビューが用意されています。
親トピック: データへのアクセス制御
15.1 透過的機密データ保護について
透過的機密データ保護は、機密情報を保持する列を表から探し出して分類するための手段です。
この機能を使用して、機密データを保持する列をデータベース表で特定し、このデータを分類して、指定されたクラスのこのデータ全体を保護するポリシーを作成できます。この種の機密データの例としては、クレジット・カード番号や社会保障番号などがあります。
TSDPポリシーは、次にOracle Data RedactionまたはOracle Virtual Private Databaseのいずれかの設定を使用して、これらの表の列の機密データを保護します。TSDPポリシーが保護する表の列レベルで適用され、クレジット・カード情報を含むすべてのNUMBER
データ型の列などの特定の列のデータ型を対象とします。分類するすべてのデータの均一のTSDPポリシーを作成して、コンプライアンス規制が変更される場合に必要に応じてこのポリシーを変更できます。オプションで、他のデータベースで使用するTSDPポリシーをエクスポートできます。
TSDPポリシーの利点は多くあります。多数のデータベースを使用する大きい組織全体にTSDPポリシーを簡単に作成および適用できます。これにより、TSDPポリシーが対象とするデータの保護を見積もることが可能なため、監査者にとって非常に便利です。TSDPは、似たセキュリティ制限を持つデータが多くあり、ポリシーをこのすべてのデータに一貫して適用する必要がある政府の環境に特に役立ちます。ポリシーは、リダクション、暗号化、そのアクセスの制御、そのアクセスの監査、監査証跡でのマスクを行うことができます。TSDPを使用しない場合、各リダクション・ポリシー、列レベルの暗号化構成および列ごとの仮想プライベート・データベース・ポリシーを構成する必要があります。
親トピック: 透過的機密データ保護の使用
15.2 透過的機密データ保護を使用する一般的なステップ
Oracle Data RedactionでTSDPを使用するには、次の一般的なステップに従う必要があります。
親トピック: 透過的機密データ保護の使用
15.3 透過的機密データ保護ポリシーのユースケース
透過的機密データ保護には、次の利点があります。
これらの利点は次のとおりです。
-
機密データ保護を一度構成して、必要に応じてこの保護をデプロイします。 透過的機密データ保護ポリシーを構成して、実際にターゲット・データを指定することなくどのようにデータのクラス(たとえば、クレジット・カード列など)を保護する必要があるかを指定できます。つまり、透過的機密データ保護ポリシーを作成する場合、保護する実際のターゲット列の参照を含む必要がありません。透過的機密データ保護ポリシーは、データベースの機密列のリストおよび指定された機密タイプのポリシーの関連付けに基づいて、これらのターゲット列を確認します。これは、透過的機密データ保護ポリシーを作成した後に追加の機密データをデータベースに追加する場合に便利です。ポリシーを作成した後、単一のステップで機密データの保護を有効化できます(たとえば、ソース・データベース全体に基づく保護の有効化など)。新しいデータの機密タイプ、機密タイプおよびポリシーの関連付けは、機密データの保護方法を決定します。これによって、新しい機密データが追加される場合、現在の透過的機密データ保護ポリシーの要件を満たしているかぎり、保護を構成する必要がありません。
-
複数の機密列の保護を管理できます。適切な属性(ソース・データベースの識別、機密タイプ自体、特定のスキーマ、表、列など)に基づいて複数の機密列の保護を有効化または無効化できます。この精度により、データ・セキュリティの上位レベルの制御が提供されます。この機能の設計により、これらのコンプライアンス規制の範囲に該当する大きいデータ・セットの特定のコンプライアンス要件に基づいてデータ・セキュリティを管理できます。個別の列ごとではなく特定のカテゴリに基づいて、データ・セキュリティを構成できます。たとえば、クレジット・カード番号または社会保障番号の保護を構成できますが、このデータを含むデータベースの各列の保護を構成する必要はありません。
-
Oracle Enterprise Manager Cloud Controlアプリケーション・データ・モデル(ADM)機能を使用して識別された機密列を保護できます。Cloud Control ADM機能を使用して、機密タイプを作成し、機密列のリストで検出できます。次に、このリストの機密列および対応する機密タイプをデータベースにインポートできます。そこから、この情報を使用して、透過的機密データ保護ポリシーを作成および管理できます。
親トピック: 透過的機密データ保護の使用
15.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_PROTECT
、DBMS_REDACT
およびDBMS_RLS
パッケージ用)が制御できるように、これらのパッケージが設計されています。
親トピック: 透過的機密データ保護の使用
15.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ビューを問い合せます。
親トピック: 透過的機密データ保護の使用
15.6 透過的機密データ保護ポリシーの作成
機密タイプを作成し、保護する機密列を特定して、それらの列をADMからデータベースにインポートする必要があります。
- ステップ1: 機密タイプの作成
機密タイプは、機密として指定するデータのクラスです。 - ステップ2: 保護する機密列の識別
機密列を定義したら、保護する列を特定します。 - ステップ3: ADMからデータベースへの機密列リストのインポート
次に、ADMからデータベースに機密列リストをインポートします。 - ステップ4: 透過的機密データ保護ポリシーの作成
機密列のリストを作成し、このリストをデータベースにインポートしたら、透過的機密データ保護ポリシーを作成します。 - ステップ5: ポリシーと機密タイプの関連付け
DBMS_TSDP_PROTECT.ASSOCIATE_POLICY
プロシージャで、TSDPポリシーと機密タイプを関連付けます。 - ステップ6: 透過的機密データ保護ポリシーの有効化
保護されるソースの現在のデータベース、特定の表の列または特定の列タイプに対してTSDPポリシーを有効できます。 - ステップ7: 他のデータベースへのポリシーのエクスポート(オプション)
別のデータベースに対してポリシーをエクスポートまたはインポートできます。
親トピック: 透過的機密データ保護の使用
15.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
: オプションで、機密タイプの説明を入力します。
関連項目:
-
アプリケーション・データ・モデルの詳細は、Oracle Database Testingガイドを参照してください。
-
DBMS_TSDP_MANAGE.ADD_SENSITIVE_TYPE
PL/SQLプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
親トピック: 透過的機密データ保護ポリシーの作成
15.6.2 ステップ2: 保護する機密列の識別
機密列を定義したら、保護する列を特定します。
保護する列を識別するには、定義した機密タイプに基づいて、Enterprise Manager Cloud Controlアプリケーション・データ・モデルを使用してこれらの列を識別するか、DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMN
プロシージャを使用できます。
データベースの機密列のリストから列を削除するには、DBMS_TSDP_MANAGE.DROP_SENSITIVE_COLUMN
プロシージャを使用します。
親トピック: 透過的機密データ保護ポリシーの作成
15.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のデータ検出およびモデリング・ページからアプリケーション・データ・モデルのリストを確認できます。(このページにアクセスするには、「エンタープライズ」メニューから、「クオリティ管理」、「データ検出およびモデリング」の順に選択します。「機密列」タブで、機密列および関連付けられているタイプのリストを確認できます。)
親トピック: 透過的機密データ保護ポリシーの作成
15.6.4 ステップ4: 透過的機密データ保護ポリシーの作成
機密列のリストを作成し、このリストをデータベースにインポートしたら、透過的機密データ保護ポリシーを作成します。
- 透過的機密データ保護ポリシーの作成について
DBMS_TSDP_PROTECT.ADD_POLICY
プロシージャで、透過的機密データ保護ポリシーを作成します。 - 透過的機密データ保護ポリシーの作成
部分的な数値データ型ベースのデータ・リダクション・ポリシーを使用する透過的機密データ保護ポリシーを作成できます。 - Oracle Data Redactionまたは仮想プライベート・データベース機能オプションの設定
TSDP機能オプションは、透過的機密データ保護ポリシーに使用するOracle Data Redactionまたは仮想プライベート・データベース設定を示します。 - 透過的機密データ保護ポリシーの条件の設定
オプションで、透過的機密データ保護ポリシーの条件を指定できます。 - DBMS_TSDP_PROTECT.ADD_POLICYプロシージャの指定
DBMS_TSDP_PROTECT.ADD_POLICY
プロシージャでTSDPポリシーに名前を付与し、FEATURE_OPTIONS
およびPOLICY_CONDITIONS
の設定を実行します。
親トピック: 透過的機密データ保護ポリシーの作成
15.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
スキーマに配置されます。
15.6.4.2 透過的機密データ保護ポリシーの作成
部分的な数値データ型ベースのデータ・リダクション・ポリシーを使用する透過的機密データ保護ポリシーを作成できます。
例15-1に、このタイプのポリシーを作成する方法を示します。
-
ポリシーを作成するには、例15-1に示すように、
DBMS_TSDP_PROTECT.ADD_POLICY
プロシージャを使用します。
例15-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: 透過的機密データ保護ポリシーの作成および有効化を参照してください。
親トピック: ステップ4: 透過的機密データ保護ポリシーの作成
15.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ポリシーを指定する場合、例15-1に次のパラメータと値のペアを示します。
redact_feature_options ('function_type') := 'DBMS_REDACT.PARTIAL';
保護された列の数値データ型を使用する部分的なデータ・リダクション・ポリシーの場合、例15-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';
関連項目:
-
データ・リダクション・ポリシー作成パラメータの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。
-
使用できるVPDパラメータの詳細は、「TSDPポリシーに使用されるDBMS_RLS.ADD_POLICYパラメータ」を参照してください。
親トピック: ステップ4: 透過的機密データ保護ポリシーの作成
15.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
設定のすべての条件プロパティを満たす必要があります
例15-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
キーで指定された表に制限できます。この設定を省略すると、ポリシーは指定されたスキーマ内のすべての表に適用されます。
親トピック: ステップ4: 透過的機密データ保護ポリシーの作成
15.6.4.5 DBMS_TSDP_PROTECT.ADD_POLICYプロシージャの指定
DBMS_TSDP_PROTECT.ADD_POLICY
プロシージャでTSDPポリシーに名前を付与し、FEATURE_OPTIONS
およびPOLICY_CONDITIONS
の設定を実行します。
ポリシーでは、redact_feature_options
とpolicy_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
型に定義された変数を表します。
-
例15-1は、次のポリシー・セットを示しています。
DBMS_TSDP_PROTECT.ADD_POLICY('redact_partial_cc', DBMS_TSDP_PROTECT.REDACT, redact_feature_options, policy_conditions);
親トピック: ステップ4: 透過的機密データ保護ポリシーの作成
15.6.5 ステップ5: ポリシーと機密タイプの関連付け
DBMS_TSDP_PROTECT.ASSOCIATE_POLICY
プロシージャで、TSDPポリシーと機密タイプを関連付けます。
親トピック: 透過的機密データ保護ポリシーの作成
15.6.6 ステップ6: 透過的機密データ保護ポリシーの有効化
保護されるソースの現在のデータベース、特定の表の列または特定の列タイプに対してTSDPポリシーを有効にすることができます。
- 保護されたソースの現在のデータベースの保護の有効化
保護されるソースの現在のデータベースに対して透過的機密データ保護を有効にできます。 - 特定の表の列の保護の有効化
表の特定の列に対して透過的機密データ保護を有効にできます。 - 特定の列タイプの保護の有効化
VARCHAR2
データ型を使用するすべての列など、特定の列タイプに対して透過的機密データ保護を有効にできます。
親トピック: 透過的機密データ保護ポリシーの作成
15.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; /
親トピック: ステップ6: 透過的機密データ保護ポリシーの有効化
15.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
ポリシーに関連付けられていても、この列が条件(データ型および長さ)を満たさない場合はポリシーが無効です。
親トピック: ステップ6: 透過的機密データ保護ポリシーの有効化
15.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; /
親トピック: ステップ6: 透過的機密データ保護ポリシーの有効化
15.6.7 ステップ7: 他のデータベースへのポリシーのエクスポート(オプション)
別のデータベースに対してポリシーをエクスポートまたはインポートできます。
-
別のデータベースに対してTSDPポリシーをエクスポートまたはインポートするには、Oracle Data Pumpを使用して、ポリシーを含むデータベースのフル・エクスポートまたはインポートを実行します。
エクスポートおよびインポート操作が透過的機密データ保護ポリシーだけでなくデータベース全体に適用されるので注意してください。
関連項目:
-
Oracle Data Pumpの使用方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。
-
Oracle Database Vault環境のOracle Data Pumpの使用の詳細は、『Oracle Database Vault管理者ガイド』を参照してください。
親トピック: 透過的機密データ保護ポリシーの作成
15.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
プロシージャを実行します。
親トピック: 透過的機密データ保護の使用
15.8 透過的機密データ保護ポリシーの無効化
DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN
プロシージャは1つまたはすべてのTSDPポリシーを無効にします。
親トピック: 透過的機密データ保護の使用
15.9 透過的機密データ保護ポリシーの削除
TSDPポリシー全体を削除するか、またはポリシーから条件有効オプションの組合せを削除できます。
ポリシーが1つの条件有効オプションの組合せのみ持つ場合、Oracle Databaseはポリシー全体を削除します。削除する前にポリシーを無効化する必要はありませんが、関連付けられている機密列、機密タイプの順に削除する必要があります。
親トピック: 透過的機密データ保護の使用
15.10 事前定義のREDACT_AUDITポリシーを使用したバインド値のマスク
事前定義のREDACT_AUDIT
ポリシーはバインド値をマスクします。バインド値は、イベントの設定時にトレース・ファイルに表示されます。
- REDACT_AUDITポリシーについて
事前定義のREDACT_AUDIT
透過的機密データ保護ポリシーはバインド値をマスクします。 - 機密列と関連付けられた変数
バインド変数は、条件やSELECT
アイテム、INSERT
またはUPDATE
操作のある機密列の使用に影響します。 - ビューでの機密列のバインド変数の動作
ビューの列が機密列を参照する場合、ビューの問合せに表示されるバインド変数が機密とみなされます。 - REDACT_AUDITポリシーの無効化
デフォルトでは、REDACT_AUDIT
ポリシーがすべての機密列に有効です。 - REDACT_AUDITポリシーの有効化
特定の機密列、またはデータベース内のすべての列に対してREDACT_AUDIT
ポリシーを有効化できます。
親トピック: 透過的機密データ保護の使用
15.10.1 REDACT_AUDITポリシーについて
事前定義のREDACT_AUDIT
透過的機密データ保護ポリシーはバインド値をマスクします。
SQL文で使用されるバインド変数のバインド値は、監査の構成時に監査レコードに表示できます。同様に、バインド値は、適切なイベントの設定時にトレース・ファイルに表示できます。V$SQL_BIND_DATA
動的ビューを問い合せる場合、バインド値も表示できます。
REDACT_AUDIT
透過的機密データ保護ポリシーは、監査レコード、トレース・ファイルおよびV$SQL_BIND_DATA
ビューの問合せでアスタリスク(*
)としてデータを表示します。デフォルトでは、REDACT_AUDIT
ポリシーがデータベースの機密タイプに関連付けられます。機密として列を識別する場合、デフォルトではREDACT_AUDIT
ポリシーが有効です。
REDACT_AUDIT
ポリシーを無効化および有効化できますが、変更または削除できません。
15.10.2 機密列と関連付けられた変数
バインド変数は、条件やSELECT
アイテム、INSERT
またはUPDATE
操作のある機密列の使用に影響します。
- 機密列に関連付けられた変数について
TSDPポリシーで変数を機密列に関連付けることができます。 - 条件式のバインド変数および機密列
WHERE
句を含むSQL問合せに機密列を含めることができます。 - 同じSELECT項目に表示されるバインド変数および機密列
SELECT
項目の列が機密である場合、SELECT
項目のすべてのバインドが機密とみなされます。 - INSERTまたはUPDATE操作の機密列に割り当てられる式のバインド変数
複数のバインド変数を1つのINSERT
またはUPDATE
文の異なる列に割り当てることができます。
15.10.2.1 機密列に関連付けられた変数について
TSDPポリシーで変数を機密列に関連付けることができます。
バインド変数が機密列と同じ比較条件にある場合、機密列とともにSELECT
文にある場合、または機密列を含むINSERT
またはUPDATE
操作にある場合、そのバインド変数は機密とみなされるか、または機密列と関連付けられます。
親トピック: 機密列に関連付けられている変数
15.10.2.2 条件式のバインド変数および機密列
WHERE
句を含むSQL問合せに機密列を含めることができます。
WHERE
句を含むSQL問合せには、比較演算子(=
、IS
、IS NOT
、LIKE
、BETWEEN
、IN
など)とともに使用したり、副問合せで使用する機密列およびバインド変数を含めることができます
次の比較問合せでは、VAR1
および機密列SALARY
が比較条件>
を使用して比較される式に表示されているため、VAR1
のバインド値がマスクされます。
SELECT EMPLOYEE_ID FROM HR.EMPLOYEES WHERE SALARY > :VAR1;
次の問合せでは、VAR1
、VAR2
および機密列SALARY
が比較等価条件=
を使用する式に表示されているため、VAR1
およびVAR2
のバインド値がマスクされます。
SELECT EMPLOYEE_ID FROM HR.EMPLOYEES WHERE SALARY + :VAR1 = TO_NUMBER(:VAR2, '9G999D99');
浮動小数点条件の場合、機密列およびバインド変数が評価される式に表示されます。次の例では、VAR1
および機密列SALARY
がIS NOT NAN
条件の式に表示されているため、VAR1
のバインド値がマスクされます。
SELECT COUNT( ) FROM HR.EMPLOYEES WHERE (SALARY * :VAR1) IS NOT NAN;
パターン一致条件では、機密列およびバインド変数が引数として表示されます。次の例では、VAR1
および機密列LAST_NAME
がLIKE
条件の引数であるため、VAR1
のバインド値がマスクされます。
SELECT LAST_NAME FROM HR.EMPLOYEES WHERE LAST_NAME LIKE :VAR1;
BETWEEN
条件の場合、機密列およびバインド変数が引数である式に表示されます。次の例では、VAR1
、VAR2
およびSALARY
がBETWEEN
条件の引数である式に表示されているため、VAR1
およびVAR2
のバインド値がマスクされます。
SELECT EMPLOYEE_ID FROM HR.EMPLOYEES WHERE SALARY BETWEEN :VAR1 AND :VAR2;
次の例では、機密列およびバインド変数がIN
条件の引数です。ここでは、VAR1
、VAR2
および機密列SALARY
がIN
条件の引数として表示されているため、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
条件の場合、バインド変数および機密列が相互に関連付けられることはありません。これは、これらの条件の構造または性質のためです。
親トピック: 機密列に関連付けられている変数
15.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;
親トピック: 機密列に関連付けられている変数
15.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
に割り当てられます。
親トピック: 機密列に関連付けられている変数
15.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
がマスクされます。
15.10.4 REDACT_AUDITポリシーの無効化
デフォルトでは、REDACT_AUDIT
ポリシーがすべての機密列に有効です。
特定の機密列またはすべての機密列に対して無効化できますが、必要に応じて再度有効化できます。REDACT_AUDIT
ポリシーを変更または削除できないことに注意してください。
-
REDACT_AUDIT
ポリシーを無効化するには、DBMS_TSDP_PROTECT.DISABLE_PROTECTION_COLUMN
プロシージャを使用します。
たとえば、HR.EMPLOYEES
のSALARY
列の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; /
15.10.5 REDACT_AUDITポリシーの有効化
特定の機密列、またはデータベース内のすべての列に対してREDACT_AUDIT
ポリシーを有効化できます。
-
REDACT_AUDIT
ポリシーを有効化するには、DBMS_TSDP_PROTECT.ENABLE_PROTECTION_COLUMN
プロシージャを使用します。
たとえば、HR.EMPLOYEES
のSALARY
列の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.ENABLE_PROTECTION_COLUMN( policy => 'REDACT_AUDIT'); END; /
15.11 データ・リダクションでの透過的機密データ保護ポリシー
Oracle Data Redaction機能を透過的機密データ保護ポリシーで使用できます。
Data Redactionの関数タイプ、関数パラメータおよび式をTSDPポリシーの定義に使用できます。たとえば、TSDPポリシーの有効化を設定して、FULL
またはPARTIAL
データ・リダクションを使用できます。この章では、TSDPポリシーを管理する例としてデータ・リダクションを使用します。
関連項目:
-
データ・リダクション関数タイプを使用するTSDPポリシーの作成方法の例は、透過的機密データ保護ポリシーの作成を参照してください
-
Oracle Data Redactionの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。
親トピック: 透過的機密データ保護の使用
15.12 Oracle VPDポリシーでの透過的機密データ保護ポリシーの使用
TSDPとOracle Virtual Private Databaseの保護を1つのポリシーに統合できます。
- TSDPポリシーとOracle Virtual Private Databaseポリシーの併用について
Oracle Virtual Private Database保護を透過的機密データ保護ポリシーに組み込むには、DBMS_TSDP_PROTECT
およびDBMS_RLS
パッケージを使用する必要があります。 - TSDPポリシーに使用されるDBMS_RLS.ADD_POLICYパラメータ
Oracle Databaseには、TSDPポリシーの動作を調整するための一連のパラメータが用意されています。 - チュートリアル: 仮想プライベート・データベース保護を使用するTSDPポリシーの作成
このチュートリアルでは、Oracle Virtual Private Database保護を透過的機密データ保護ポリシーに組み込む方法を示します。
親トピック: 透過的機密データ保護の使用
15.12.1 TSDPポリシーとOracle Virtual Private Databaseポリシーの併用について
Oracle Virtual Private Database保護を透過的機密データ保護ポリシーに組み込むには、DBMS_TSDP_PROTECT
およびDBMS_RLS
パッケージを使用する必要があります。
この機能の手順は次のとおりです。
-
適切な述語を使用して、VPDポリシー関数を作成します。後で、TSDPポリシーを作成する場合、
DBMS_TSDP_PROTECT.ADD_POLICY
プロシージャのfeature_options
パラメータにDBMS_RLS.ADD_POLICY
プロシージャのpolicy_function
設定を使用して、このVPDポリシー関数を参照します。 -
VPDポリシー関数と似ている必要なVPD設定を使用して、TSDPポリシーを作成します。
TSDPポリシーは、
DBMS_RLS.ADD_POLICY
プロシージャのパラメータ設定を使用して、VPD保護を提供します。表15-1に、これらのパラメータを示します。DBMS_RLS.ADD_GROUPED_POLICY
ポリシーのパラメータはサポートされていないので注意してください。 -
DBMS_TSDP_PROTECT.ASSOCIATE_POLICY
プロシージャを使用して、TSDPポリシーを必要な機密タイプと関連付けます。 -
次に、
DBMS_TSDP_PROTECT.ENABLE_PROTECTION_
*プロシージャのいずれかを使用して、TSDP保護を有効化します。 -
TSDPポリシーを有効化します。この時点で、Oracle Databaseは、ステップ1で作成した関数を使用する内部VPDポリシーを作成します。
内部ポリシーの名前は、
ORA$VPD
で始まり、識別子と続きます(たとえば、ORA$VPD_6J6L3RSJSN2VAN0XF
など)。このポリシーは、DBA_POLICIES
データ・ディクショナリ・ビューのPOLICY_NAME
列に問い合せて確認できます。 -
ユーザーが表を問い合せる場合、列の出力は、現在設定されているVPD保護およびTSDPポリシーに基づきます。
-
この列のTSDPポリシーを無効化するまで、これらの保護は残ります。この時点で、不要になるため、Oracle Databaseが内部VPDポリシーを自動的に削除します。TSDPポリシーを再度有効化すると、内部VPDポリシーが再作成されます。
関連トピック
15.12.2 TSDPポリシーに使用されるDBMS_RLS.ADD_POLICYパラメータ
Oracle Databaseには、TSDPポリシーの動作を調整するための一連のパラメータが用意されています。
表15-1に、DBMS_TSDP_PROTECT.ADD_POLICY
またはDBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャを使用する場合にFEATURE_OPTIONS
パラメータで許可できるDBMS_RLS.ADD_POLICY
パラメータを示します。
表15-1 TSDPポリシーに使用されるDBMS_RLS.ADD_POLICYパラメータ
パラメータ | 説明 | デフォルト |
---|---|---|
|
ポリシー・ファンクションのスキーマ( |
|
|
ポリシーの述語を生成するファンクションの名前。関数がパッケージ内で定義される場合、パッケージの名前(たとえば、 |
|
|
ポリシーを適用する文タイプ。 |
|
|
文タイプ チェックは、ポリシー定義に含まれるセキュリティ関連列にのみ適用されます。つまり、ポリシーで定義されているセキュリティ関連の列が |
|
|
この値が |
|
|
デフォルト値の |
|
|
デフォルト値の |
|
|
このパラメータを指定すると、透過的機密データ保護は、
|
|
関連トピック
15.12.3 チュートリアル: 仮想プライベート・データベース保護を使用するTSDPポリシーの作成
このチュートリアルでは、Oracle Virtual Private Database保護を透過的機密データ保護ポリシーに組み込む方法を示します。
- ステップ1: hr_appuserユーザー・アカウントの作成
まず、サンプル・ユーザー・アカウントを作成し、このユーザーに適切な権限を付与する必要があります。 - ステップ2: 機密列の識別
サンプル・ユーザーtsdp_admin
として、保護する機密データを特定します。 - ステップ3: Oracle Virtual Private Database関数の作成
TSDPはOracle VPDポリシー関数を、TSDPポリシーが有効になったときに自動作成されるVPDポリシーに関連付けます。 - ステップ4: 透過的機密データ保護ポリシーの作成および有効化
VPDポリシー関数の作成後、その関数を透過的機密データ保護ポリシーに関連付けることができます。 - ステップ5: 透過的機密データ保護ポリシーのテスト
これで、透過的機密データ保護ポリシーをテストする準備ができました。 - ステップ6: このチュートリアルのコンポーネントの削除
このチュートリアルのコンポーネントが不要になった場合、それらを削除できます。
15.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; /
15.13 統合監査での透過的機密データ保護ポリシーの使用
透過的機密データ保護および統合監査プロシージャを使用すると、これら2つの機能の保護を組み合せることができます。
- 統合監査ポリシーでのTSDPポリシーの使用について
統合監査を使用してオブジェクトのアクションを監査するように、透過的機密データ保護ポリシーを構成できます。 - TSDPポリシーに使用される統合監査ポリシーの設定
監査ポリシー設定は、DBMS_TSDP_PROTECT.ADD_POLICY
またはDBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャのPOLICY_ENABLE_OPTIONS
パラメータで使用できます。
親トピック: 透過的機密データ保護の使用
15.13.1 統合監査ポリシーでのTSDPポリシーの使用について
統合監査を使用してオブジェクトのアクションを監査するように、透過的機密データ保護ポリシーを構成できます。
DBMS_TSDP_PROTECT.ADD_POLICY
およびDBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャでは、CREATE AUDIT POLICY
、ALTER AUDIT POLICY
、AUDIT POLICY
およびCOMMENT
SQL文の設定を指定できます。TSDPポリシーを使用すると、INSERT
またはDELETE
操作など、ポリシー内のオブジェクト固有のオプションに対するアクション監査オプションを作成できます。システム全体の監査オプションはサポートされていません。したがって、監査対象のオブジェクト型は常にTABLE
です。標準のアクション(INSERT
など)のみが許可されます。コンポーネント・アクション(Oracle Label Securityまたは他のOracle Database機能に対するポリシーの作成など)はサポートされていません。
この機能の手順は次のとおりです。
-
必要な統合監査設定を使用して、TSDPポリシーを作成します。
TSDPポリシーでは、
CREATE AUDIT POLICY
、AUDIT POLICY
およびCOMMENT
文のパラメータ設定を使用します。これらの設定は、TSDPポリシーに使用される統合監査ポリシーの設定にリストされています。 -
DBMS_TSDP_PROTECT.ASSOCIATE_POLICY
プロシージャを使用して、TSDPポリシーを必要な機密タイプと関連付けます。 -
次に、
DBMS_TSDP_PROTECT.ENABLE_PROTECTION_
*プロシージャのいずれかを使用して、TSDP保護を有効化します。 -
TSDPポリシーを有効化します。TSDPポリシー有効化プロセスの一環として、Oracle Databaseでは統合監査ポリシーが内部的に作成され、ステップ1で
DBMS_TSDP_PROTECT.ADD_POLICY
プロシージャに指定したターゲット・ユーザーおよびロールのリストに対して、そのポリシーが有効化されます。内部ポリシーの名前は、
ORA$UNIFIED_AUDIT_
で始まり、その後にランダムな英数文字列が続きます(たとえば、ORA$UNIFIED_AUDIT_6J6L3RSJSN2VAN0XF
など)。このポリシーは、AUDIT_UNIFIED_POLICIES
データ・ディクショナリ・ビューのPOLICY_NAME
列に問い合せて確認できます。この内部的に作成されたTSDP統合監査ポリシーが強制されるユーザーとロールの名前を確認するには、AUDIT_UNIFIED_ENABLED_POLICIES
ビューを問い合せます。 -
TSDPポリシーによって保護されている表に対してユーザーがアクションの実行を試みると、TSDP統合監査ポリシー構成に基づいて、このオブジェクト・アクセスについて統合監査レコードが統合監査証跡に書き込まれます。その後、
UNIFIED_AUDIT_TRAIL
ビューを問い合せて、TSDP統合監査ポリシーの実施により作成された統合監査レコードを確認できます。 -
この列のTSDPポリシーを無効化するまで、これらの保護は残ります。この時点で、Oracle Databaseでは内部ポリシーが不要になるため、自動的に無効化され、削除されます。(統合監査ポリシーは、削除前に無効化する必要があります。)TSDPポリシーを再度有効化すると、内部ポリシーが再作成されます。
親トピック: 統合監査での透過的機密データ保護ポリシーの使用
15.13.2 TSDPポリシーに使用される統合監査ポリシーの設定
監査ポリシー設定は、DBMS_TSDP_PROTECT.ADD_POLICY
またはDBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャのPOLICY_ENABLE_OPTIONS
パラメータで使用できます。
これらの監査ポリシー設定は、AUDIT
、CREATE AUDIT POLICY
およびALTER AUDIT POLICY
文からの設定です。
次の表に、これらの設定を示します。
表15-2 TSDPポリシーに使用される統合監査ポリシーの設定
パラメータ | 説明 | デフォルト |
---|---|---|
|
SQLアクションのカンマ区切りリストを含む文字列。 該当するアクション: これらのアクションをすべて監査するようにポリシーを構成するには、キーワード |
|
|
この構文では、 監査条件に一重引用符が含まれている場合、1つではなく2つの一重引用符を指定し、 'SYS_CONTEXT(''USERENV'', ''CLIENT_IDENTIFIER'') = ''myclient''' |
|
|
次のいずれかです。
|
|
|
ユーザーまたはロールのカンマ区切りリストを含む文字列。このパラメータを省略すると、すべてのユーザーに対して監査ポリシーが有効になります。 |
|
|
|
|
|
作成される統合監査ポリシーを示す文字列。 |
|
親トピック: 統合監査での透過的機密データ保護ポリシーの使用
15.14 ファイングレイン監査での透過的機密データ保護ポリシーの使用
透過的機密データ保護およびファイングレイン監査プロシージャを使用すると、これら2つの機能の保護を組み合せることができます。
- ファイングレイン監査でのTSDPポリシーの使用について
ファイングレイン監査のために透過的機密データ保護ポリシーを構成できます。 - TSDPポリシーに使用されるファイングレイン監査パラメータ
DBMS_FGA.ADD_POLICY
設定は、DBMS_TSDP_PROTECT.ADD_POLICY
またはDBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャのPOLICY_ENABLE_OPTIONS
パラメータで使用できます。
親トピック: 透過的機密データ保護の使用
15.14.1 ファイングレイン監査でのTSDPポリシーの使用について
ファイングレイン監査のために透過的機密データ保護ポリシーを構成できます。
DBMS_TSDP_PROTECT.ADD_POLICY
およびDBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャを使用すると、DBMS_FGA.ADD_POLICY
プロシージャの設定を指定できます。
この機能の手順は次のとおりです。
-
必要なファイングレイン監査設定を使用して、TSDPポリシーを作成します。
TSDPポリシーでは、
DBMS_FGA.ADD_POLICY
プロシージャのパラメータ設定が使用されます。これらの設定は、TSDPポリシーに使用されるファイングレイン監査パラメータにリストされています。 -
DBMS_TSDP_PROTECT.ASSOCIATE_POLICY
プロシージャを使用して、TSDPポリシーを必要な機密タイプと関連付けます。 -
次に、
DBMS_TSDP_PROTECT.ENABLE_PROTECTION_
*プロシージャのいずれかを使用して、TSDP保護を有効化します。 -
TSDPポリシーを有効化します。TSDPポリシー有効化プロセスの一環として、Oracle Databaseでは、ステップ1で
DBMS_TSDP_PROTECT.ADD_POLICY
プロシージャに指定したファイングレイン監査ポリシーが内部的に作成されます。内部ポリシーの名前は、
ORA$FGA_
で始まり、その後にランダムな英数文字列が続きます(たとえば、ORA$FGA_6J6L3RSJSN2VAN0XF
など)。このポリシーは、DBA_POLICIES
データ・ディクショナリ・ビューのPOLICY_NAME
列に問い合せて確認できます。 -
TSDPポリシーによって保護されている表に対してユーザーがアクションの実行を試みると、ポリシー構成に基づいて、このオブジェクト・アクセスについて
DBA_FGA_AUDIT_TRAIL
データ・ディクショナリ・ビューにファイングレイン監査レコードが生成されます。 -
この列のTSDPポリシーを無効化するまで、これらの保護は残ります。この時点で、Oracle Databaseでは内部ポリシーが不要になるため、自動的に削除されます。TSDPポリシーを再度有効化すると、内部ポリシーが再作成されます。
15.14.2 TSDPポリシーに使用されるファイングレイン監査パラメータ
DBMS_FGA.ADD_POLICY
設定は、DBMS_TSDP_PROTECT.ADD_POLICY
またはDBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャのPOLICY_ENABLE_OPTIONS
パラメータで使用できます。
次の表に、これらの設定を示します。
表15-3 TSDPポリシーに使用されるファイングレイン監査ポリシーの設定
パラメータ | 説明 | デフォルト |
---|---|---|
|
次の構文を使用して、監視状況を示すブール値を指定します。 operator value たとえば: |
|
|
イベント・ハンドラを含むスキーマ。デフォルトの |
|
|
イベント・ハンドラのファンクション名。必要に応じて、パッケージ名を含めます。このファンクションは、問合せの監査条件と一致する最初の行が処理された後でのみ実行されます。例外が発生してプロシージャが異常終了すると、ユーザーのSQL文も異常終了します。 |
|
|
次の文タイプのいずれかを指定できます: |
|
|
データベースを完全な統合監査にまだ移行していない場合は、この設定を使用して、監査レコードの書込み先(データベースの場合は 完全な統合監査が有効になっている場合は、Oracle Databaseによってこのパラメータは無視され、監査レコードが統合監査証跡に書き込まれます。 |
|
|
機密列に対応するスキーマ |
機密列が含まれているスキーマ |
|
機密列が含まれている表 |
機密列が含まれているオブジェクト(表またはビュー) |
|
内部ファイングレイン監査ポリシーに対してシステムが生成した名前 |
システムが生成した内部ファイングレイン監査ポリシー名 |
|
機密列 |
機密列 |
|
すべての列または特定の列の監査を指定します |
|
|
TSDPポリシーの有効化ステータス( |
|
|
|
現行ユーザー |
15.15 TDE列暗号化での透過的機密データ保護ポリシーの使用
TSDPプロシージャと透過的データ暗号化の列暗号化文を使用すると、これら2つの機能の保護を組み合せることができます。
- TDE列暗号化でのTSDPポリシーの使用について
TSDPポリシーで、透過的データ暗号化を使用する列の暗号化を有効にできます。 - TSDPポリシーに使用されるTDE列暗号化ENCRYPT句の設定
CREATE TABLE
およびALTER TABLE
文のENCRYPT
句の設定は、DBMS_TSDP_PROTECT.ADD_POLICY
またはDBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャのPOLICY_ENABLE_OPTIONS
パラメータで使用できます。
親トピック: 透過的機密データ保護の使用
15.15.1 TDE列暗号化でのTSDPポリシーの使用について
TSDPポリシーで、透過的データ暗号化を使用する列の暗号化を有効にできます。
DBMS_TSDP_PROTECT.ADD_POLICY
およびDBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャを使用すると、CREATE TABLE
またはALTER TABLE
文のENCRYPT
句の設定を指定できます。
この機能の手順は次のとおりです。
-
DBMS_TSDP_PROTECT.ADD_POLICY
プロシージャを使用して、TSDPポリシーを作成できます。ADD_POLICY
プロシージャでは、SECURITY_FEATURE
パラメータをDBMS_TSDP_PROTECT.COLUMN_ENCRYPTION
に設定することで、列暗号化のポリシーを構成できます。この設定により、TSDPポリシーがオブジェクトに対して有効になっている場合、機密列の暗号化が有効になります。 -
必要な表暗号化設定を使用して、TSDPポリシーを作成します。
TSDPポリシーでは、
CREATE TABLE
またはALTER TABLE
SQL文のパラメータ設定が使用されます。これらの設定は、TSDPポリシーに使用されるTDE列暗号化ENCRYPT句の設定にリストされています。 -
DBMS_TSDP_PROTECT.ASSOCIATE_POLICY
プロシージャを使用して、TSDPポリシーを必要な機密タイプと関連付けます。 -
次に、
DBMS_TSDP_PROTECT.ENABLE_PROTECTION_
*プロシージャのいずれかを使用して、TSDP保護を有効化します。 -
TSDPポリシーを有効化します。この時点で、Oracle Databaseでは、この手順の最初に作成した表暗号化設定を使用する内部TSDPポリシーが作成されます。
内部ポリシーの名前は、
ORA$TDECE_
で始まり、その後にランダムな英数文字列が続きます(たとえば、ORA#TDECE_6J6L3RSJSN2VAN0XF
など)。このポリシーは、DBA_TSDP_POLICY_PROTECTION
ビューのTSDP_POLICY
列に問い合せて確認できます。 -
ポリシーによって保護されている表に対してユーザーがアクションの実行を試みると、実行中のTDE列の保護およびTSDPポリシーの両方に基づいて、列に対する出力が行われます。TSDPポリシーを有効化した後、列が暗号化されているかどうかを確認するには、
DBA_ENCRYPTED_COLUMNS
ビューのENCRYPTION_ALG
列を問い合せます。 -
この列のTSDPポリシーを無効化するまで、これらの保護は残ります。その時点で、Oracle Databaseでは、機密列が暗号化されるように、機密列が含まれている表に対して
ALTER TABLE
文が内部的に発行されます。TSDPポリシーを再有効化すると、TSDPでは列に対してALTER TABLE
文がENCRYPT
句とともに内部的に実行されます。
ノート:
同じ列に対して、異なる暗号化アルゴリズムを指定した2つのポリシーを作成できます。この場合、2つのアルゴリズムのうち、より強いアルゴリズムが機密列に対して実施されます。
親トピック: TDE列暗号化での透過的機密データ保護ポリシーの使用
15.15.2 TSDPポリシーに使用されるTDE列暗号化ENCRYPT句の設定
CREATE TABLE
およびALTER TABLE
文のENCRYPT
句の設定は、DBMS_TSDP_PROTECT.ADD_POLICY
またはDBMS_TSDP_PROTECT.ALTER_POLICY
プロシージャのPOLICY_ENABLE_OPTIONS
パラメータで使用できます。
次の表に、これらの設定を示します。
表15-4 TSDPポリシーに使用されるTDE列暗号化ENCRYPTの設定
パラメータ | 説明 | デフォルト |
---|---|---|
|
使用可能な値
|
|
|
使用可能な値:
|
|
|
使用可能な値:
|
|
親トピック: TDE列暗号化での透過的機密データ保護ポリシーの使用
15.16 透過的機密データ保護のデータ・ディクショナリ・ビュー
Oracle Databaseには、透過的機密データ保護ポリシーに関する情報を表示するデータ・ディクショナリ・ビューが用意されています。
表15-5に、これらのビューを示します。これらのビューを使用する前に、SELECT_CATALOG_ROLE
ロールを付与する必要があります。
表15-5 透過的機密データ保護ビュー
ビュー | 説明 |
---|---|
|
透過的機密データの保護ポリシーに関するインポート情報の検出を説明します。 |
|
現在のデータベースに定義されている機密列のタイプを説明します。 |
|
データベースの機密列を説明します。 |
|
検出結果のインポート中に発生したエラーに関する情報を表示します。エラー・コード、スキーマ名、表名、列名および機密タイプに関する情報を表示します。 |
|
透過的機密データ保護ポリシーおよび条件マッピングを示します。このビューは、条件のプロパティと値のペアもリストします。 |
|
透過的機密データ保護ポリシーのセキュリティ機能マッピングを表示します。(現時点で、Oracle Data RedactionおよびOracle Virtual Private Databaseのみサポートされます。) |
|
透過的機密データ保護ポリシーのパラメータを示します |
|
透過的機密データ保護を通じて保護されている列のリストを表示します |
|
ポリシーと機密列タイプのマッピングを表示します |
関連トピック
親トピック: 透過的機密データ保護の使用