16 Oracle Data Redactionのセキュリティの考慮事項
Oracleでは、Oracle Data Redactionを使用する場合のガイドラインを提供しています。
- Oracle Data Redactionの一般的なセキュリティのガイドライン
Oracle Data Redactionを使用するための一般的なセキュリティのガイドラインを理解することが重要です。 - Oracle Data Redactionポリシーへの管理アクセスの制限
データ・リダクション・ポリシーを作成、表示および編集できるユーザーのリストを制限できます。 - Oracle Data RedactionがSYS、SYSTEMおよびデフォルト・スキーマに与える影響
ユーザーSYS
およびSYSTEM
はいずれも自動的にEXEMPT REDACTION POLICY
システム権限が付与されています。 - SYS_CONTEXT属性を使用するポリシー式
アプリケーションによって移入されるSYS_CONTEXT
属性に依存するポリシー式を記述するときは、注意してください。 - マテリアライズド・ビューに対するOracle Data Redactionポリシー
マテリアライズド・ビューやその実表に対するOracle Data Redactionポリシーを作成できます。 - ごみ箱が有効になっている場合のOracle Data Redactionポリシーの削除
Oracle Data Redactionポリシーを削除する前に、ごみ箱が有効になっているかどうかを確認する必要があります。
親トピック: Oracle Data Redactionの使用
16.1 Oracle Data Redactionの一般的なセキュリティのガイドライン
Oracle Data Redactionを使用するための一般的なセキュリティ上のガイドラインを理解することが重要です。
-
Oracle Data Redactionは、データベースに対して直接非定型な問合せを実行する権限を持つ通常のデータベース・ユーザーによって行われる攻撃に対する保護目的では使用できません。ユーザーが任意のSQL文またはPL/SQL文を発行できる場合、そのユーザーは実際の値にアクセスできます。
-
Oracle Data Redactionは、推論によって実際の値を判断しようと試みる非定型なSQL問合せを実行するユーザーに対する保護目的では使用できません。
-
Oracle Data Redactionは、データベースおよびアプリケーションのコンテキスト値に依存します。アプリケーションの場合、コンテキスト値を適切に初期化するのは、アプリケーションの役割です。
-
Oracle Data Redactionは、
SYSDBA
管理権限を使用してログインしているユーザーには適用されません。 -
データ・リダクション・ポリシーの管理下から実際のデータをコピーしようとする特定のDDL文(
CREATE TABLE AS SELECT
やINSERT AS SELECT
)は、デフォルトでブロックされますが、ユーザーにEXEMPT REDACTION POLICY
システム権限を付与することでこの動作を無効にできます。 -
Oracle Data Redactionは、日常のデータベース操作(バックアップおよびリカバリ、Oracle Data Pumpエクスポート/インポート、Oracle Data Guard操作、レプリケーションなど)には影響しません。
16.2 Oracle Data Redactionポリシーへの管理アクセスの制限
データ・リダクション・ポリシーを作成、表示および編集できるユーザーのリストを制限できます。
これを実行するには、DBMS_REDACT
パッケージに対するEXECUTE
権限を持つユーザーを制限し、REDACTION_POLICIES
およびREDACTION_COLUMNS
ビューに対するSELECT
権限を持つユーザーを制限します。
また、EXEMPT REDACTION POLICY
権限を制限することによって、リダクションから除外されるユーザーも制限できます。Oracle Database Vaultを使用して、権限ユーザーのアクセスを制限すると、レルムを使用してEXEMPT REDACTION POLICY
の付与を制限できます。
16.3 Oracle Data RedactionがSYS、SYSTEMおよびデフォルト・スキーマに与える影響
ユーザーSYS
およびSYSTEM
はいずれも自動的にEXEMPT REDACTION POLICY
システム権限が付与されています。
SYSTEM
には、EXEMPT REDACTION POLICY
システム権限を含む、EXP_FULL_DATABASE
ロールが付与されています。
そのため、SYS
およびSYSTEM
ユーザーは、常に既存のOracle Data Redactionポリシーをバイパスでき、またデータ・リダクション・ポリシーが定義されている表(またはビュー)のデータを常に表示できます。
次のガイドラインに従ってください。
-
デフォルトのOracle Databaseスキーマには、データ・リダクション・ポリシーを作成しないでください。
SYS
およびSYSTEM
スキーマも同様です。 -
追加ロールに
EXEMPT REDACTION POLICY
システム権限を付与すると、ユーザーにOracle Data Redactionのバイパスを許す場合があることに注意してください。権限受領者ロールが追加のロールに付与されている可能性があるからです。 -
デフォルトで付与されているロールからは、
EXEMPT REDACTION POLICY
システム権限を取り消さないでください。
16.4 SYS_CONTEXT属性を使用するポリシー式
アプリケーションによって移入されるSYS_CONTEXT
属性に依存するポリシー式を記述するときは、注意してください。
その属性はアプリケーションによって常に移入されるわけではありません。
ユーザーが(アプリケーションを通じてではなく)なんらかの方法で直接接続した場合、SYS_CONTEXT
属性は移入されません。ポリシー式でこのNULL
シナリオを処理しないと、意図せずに実際のデータを問合せユーザーに開示してしまうことがあります。
たとえば、クライアント識別子の値がSUPERVISOR
であるユーザー以外のすべてのユーザーに問合せ結果をリダクションする目的でポリシー式を作成するとします。次の式では、CLIENT_IDENTIFIER
の値がNULL
である問合せユーザーに、意図せずに実際のデータが表示されます。
SYS_CONTEXT('USERENV', 'CLIENT_IDENTIFIER') IS NOT 'SUPERVISOR'
ポリシー式をより厳密にすると、クライアント識別子が設定されていない場合(NULL
値である場合)、問合せ結果はリダクションされます。
SYS_CONTEXT('USERENV', 'CLIENT_IDENTIFIER') IS NOT 'SUPERVISOR' OR IS NULL
SQLでは、NULL
との比較は未定義であるため、FALSE
になりますが、リダクションはポリシー式がTRUE
に評価された場合にのみ実行されることに注意してください。
16.5 マテリアライズド・ビューに対するOracle Data Redactionポリシー
Oracle Data Redactionポリシーは、マテリアライズド・ビューやその実表に作成できます。
ただし、マテリアライズド・ビューの作成者(または、マテリアライズド・ビューのリフレッシュを実行するユーザー)は、データ・リダクション・ポリシーによってブロックされないようにしてください。つまり、マテリアライズド・ビューの作成操作やリフレッシュ操作を実行するユーザーは、データ・リダクション・ポリシーから除外する必要があります。ベスト・プラクティスは、新しいマテリアライズド・ビューを作成する場合に、それを実際の表のコピーとして扱い、個別のデータ・リダクション・ポリシーを作成してそれを保護することです。
16.6 ごみ箱が有効になっている場合のOracle Data Redactionポリシーの削除
Oracle Data Redactionポリシーを削除する前に、ごみ箱が有効になっているかどうかを確認する必要があります。
ごみ箱機能が有効になっている場合にOracle Data Redactionポリシーが定義されている表またはビューを削除するか、または、ごみ箱を空にする前にREDACTION_COLUMNS
またはREDACTION_POLICIES
データ・ディクショナリ・ビューを問い合せると、BIN$...
(BIN$1Xu5PSW5VaPgQxGS5AoAEA==$0
など)のオブジェクト名が表示されます。
これは正常な動作です。これらのポリシーは、ごみ箱を空にすると削除されます。
ごみ箱が有効になっているかどうかを確認するには、SQL*PlusのSHOW PARAMETER RECYCLEBIN
コマンドを実行します。
関連項目:
ごみ箱からのオブジェクトの消去の詳細は、Oracle Database管理者ガイドを参照してください。