7

シナリオ:間違った当事者に開示された場合に法的責任を負う可能性のある機密ユーザーデータを含むOracle11gデータベース。

望ましい効果:特定のIPから接続している特定のユーザーのみが、この機密性の高いユーザーデータを含む列を表示できます

非表示の列または仮想列がこれを行う正しい方法かどうかはわかりません。きめ細かいアクセス制御が役立つようです。何が最善の解決策かわかりません。IPによる制限はおそらくリスナーレベルで行われますか?

質問:特定のユーザーのみが使用できるように列の表示を制限するにはどうすればよいですか?「DESCTABLE_WITH_SENSITIVE_DATA」を実行している場合でも、他のすべてのユーザーには列が表示されません。

ヒントをありがとう。

4

3 に答える 3

10

これを行う最も簡単な方法は、すべての列を含まないテーブルにビューを作成することです。テーブルで選択を許可しないでください。ビューでのみ許可してください。

于 2013-02-13T12:38:35.817 に答える
4

これを行う「適切な」方法は、特定の条件が満たされない場合に列の内容を NULL に置き換えることができる、きめ細かなアクセス制御 (仮想プライベート データベース) を使用することです。

ここの例を参照してください: http://docs.oracle.com/cd/B28359_01/network.111/b28531/vpd.htm#autoId17

貧しくて熟練していると感じている場合は、おそらくこの種の機能を自分で構築できます。

于 2013-02-13T12:51:46.007 に答える
1

ロールを変更してビューを作成できますか? おそらく、2 つの別個のビューを作成し、そのテーブルの 2 つの異なるロールにアクセス権を付与することができます。機密データの表示が制限されているすべてのユーザーは「制限付き」ロールに属し、他のユーザーは「制限なし」ロールにアクセスできます。各ビューに対する権限を適切なロールに付与する必要があります。

ビューに関連付けられた基になるデータの更新には制限があることに注意することが重要です。hereで説明されているように、セット演算子、集計、および GROUP BY DISTINCT と結合を含み、変更できないビュー。

于 2013-02-13T12:57:58.010 に答える