2021年8月16日月曜日

データベース・セキュリティの活用(10) - 透過的機密データ保護

Data Redactionおよび仮想プライベート・データベースによる列の保護のために、透過的機密データ保護(Transparent Sensitive Data Protection)を構成することができます。

Data Redactionの記事にて行った伏字処理を、TSDPにて構成してみます。データベース・アクションにユーザーADMINにて接続し、構成します。

保護するデータの種類を定義します。伏字処理の対象は表HR.EMPの列SALですが、この列の機密タイプsalary_typeと定義し、伏字処理はこのsalary_typeに対して構成します。

プロシージャDBMS_TSDP_MANAGE.ADD_SENSITIVE_TYPEを呼び出します。

作成された機密タイプはビューDBA_SENSITIVE_COLUMN_TYPESより確認できます。

作成した機密タイプに表HR.EMPの列SALを登録します。プロシージャDBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMNを呼び出します。

TSDPのポリシーとしてredact_salを作成します。プロシージャDBMS_TSDP_PROTECT.ADD_POLICYを呼び出します。

Data Redactionの設定と同様に、function_typeとしてDBMS_REDACT.PARTIALfunction_parametersとして9,1,3expression1=1を指定しています。

作成したポリシーについては、ビューDBA_TSDP_POLICY_CONDITIONDBA_TSDP_POLICY_FEATUREDBA_TSDP_POLICY_PARAMETERより確認できます。

作成した機密タイプsalary_typeとポリシーredact_salを関連付けます。プロシージャDBMS_TSDP_PROTECT.ASSOCIATE_POLICYを呼び出します。


機密タイプsalary_typeに登録されている全ての列について、ポリシーに従った(この場合Data Redactionによる伏字処理)保護を有効にします。プロシージャDBMS_TSDP_PROTECT.ENABLE_PROTECTION_TYPEを呼び出します。

以上で透過的機密データ保護によるData Redactionの設定が完了しました。

設定内容はビューDBA_TSDP_POLICY_PROTECTIONより確認できます。

テスト用のAPEXアプリケーションを実行します。

従業員名に以下を入力し、TSDPによる伏字処理を確認します。

SCOTT' or '1' = '1

列Salに伏字処理が適用されていることが確認できます。


TSDPの無効化を行います。プロシージャDBMS_TSDP_PROTECT.DISABLE_PROTECTION_TYPEを呼び出します。


TSDPのポリシーを削除します。プロシージャDBMS_TSDP_PROTECT.DROP_POLICYを呼び出します。

機密タイプから列の登録を削除には、プロシージャDBMS_TSDP_MANAGE.DROP_SENSITIVE_COLUMN、機密タイプの削除にはDBMS_TSDP_MANAGE.DROP_SENSITIVE_TYPEを呼び出します。

Data Redactionの他に、仮想プライベート・データベース、統合監査、ファイングレイン監査のポリシーについても透過的機密データ保護(TSDP)ポリシーを使用することができます。

透過的機密データ保護はアプリケーション・データ・モデルを作成して機密列をリストアップする機能など、オラクルの管理ツールであるOracle Enterprise Managerの利用を前提としている部分があります。Enterprise Managerを使用しない場合は、列の一括操作などができないため、機能ごとにポリシーを設定しても大きな違いはないと感じます。