この章では、Oracle Data Redactionを使用する場合の一連のセキュリティ・ガイドラインを示します。
この章の内容は次のとおりです。
Oracle Data Redactionは、データベースに対して直接非定型な問合せを実行する権限を持つデータベース・ユーザーによって行われる攻撃に対する保護目的では使用できません。
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操作、レプリケーションなど)には影響しません。
SQL文のGROUP BY
句で使用されるSQL式にリダクションされた列を含めることはできません。Oracleでは、このような動作をサポートせず、 「ORA-00979: GROUP BYの式ではありません。」
エラーが発生します。これはSELECT
リスト内の式がデータ・リダクションにより内部で変更される必要があるために発生しますが、GROUP BY
句(その時点ではデータ・リダクションにより更新されていない)を処理するときに見つからなくなっている原因となり、この予期せぬエラー・メッセージが発生します。
DBMS_REDACT
パッケージに対するEXECUTE
権限を持つユーザーを制限し、REDACTION_POLICIES
およびREDACTION_COLUMNS
ビューに対するSELECT
権限を持つユーザーを制限することによって、データ・リダクション・ポリシーを作成、表示および編集できるユーザーのリストを制限できます。また、EXEMPT REDACTION POLICY
権限を制限することによって、リダクションから除外されるユーザーも制限できます。Oracle Database Vaultを使用して、権限ユーザーのアクセスを制限すると、レルムを使用してEXEMPT REDACTION POLICY
の付与を制限できます。
関連項目:
|
ユーザーSYS
およびSYSTEM
はいずれも自動的にEXEMPT REDACTION POLICY
システム権限が付与されています。(SYSTEM
には、EXEMPT REDACTION POLICY
システム権限を含むEXP_FULL_DATABASE
ロールが付与されています。)そのため、SYS
およびSYSTEM
ユーザーは、常に既存のOracle Data Redactionポリシーをバイパスでき、またデータ・リダクション・ポリシーが定義されている表(またはビュー)のデータを常に表示できます。
次のガイドラインに従ってください。
デフォルトのOracle Databaseスキーマには、データ・リダクション・ポリシーを作成しないでください。SYS
およびSYSTEM
スキーマも同様です。
追加ロールにEXEMPT DATA REDACTION
システム権限を付与すると、ユーザーにOracle Data Redactionのバイパスを許す場合があることに注意してください。権限受領者ロールが追加のロールに付与されている可能性があるからです。
デフォルトで付与されているロールからは、EXEMPT DATA REDACTION
システム権限を取り消さないでください。
アプリケーションによって移入される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
に評価された場合にのみ実行されることに注意してください。
Oracle Data Redactionポリシーは、マテリアライズド・ビューやその実表に作成できます。ただし、マテリアライズド・ビューの作成者(または、マテリアライズド・ビューのリフレッシュを実行するユーザー)は、データ・リダクション・ポリシーによってブロックされないようにしてください。つまり、マテリアライズド・ビューの作成操作やリフレッシュ操作を実行するユーザーは、データ・リダクション・ポリシーから除外する必要があります。ベスト・プラクティスは、新しいマテリアライズド・ビューを作成する場合に、それを実際の表のコピーとして扱い、個別のデータ・リダクション・ポリシーを作成してそれを保護することです。
ごみ箱機能が有効になっている場合にOracle Data Redactionポリシーが定義されている表またはビューを削除するか、または、ごみ箱を空にする前にREDACTION_COLUMNS
またはREDACTION_POLICIES
データ・ディクショナリ・ビューを問い合せると、BIN$...
(BIN$1Xu5PSW5VaPgQxGS5AoAEA==$0
など)のオブジェクト名が表示されます。これは正常な動作です。これらのポリシーは、ごみ箱を空にすると削除されます。
ごみ箱が有効になっているかどうかを確認するには、SQL*PlusのSHOW PARAMETER RECYCLEBIN
コマンドを実行します。
関連項目: ごみ箱からのオブジェクトの消去の詳細は、『Oracle Database管理者ガイド』を参照してください。 |