dポイントプレゼントキャンペーン実施中!

現在はアクセス制限していないAccessからのODBC接続による処理が多数あるのですが、セキュリティの観点から同一SQLを実行した場合でもユーザにより表示される項目を抑制したいと思っています。
重要情報のカラムは、管理者はデータ値で見えるけど、一般ユーザは「表示不可」とかにしたいです。(具体的には下記イメージ)
これを実現する上で、既存のAccessに手を加えることなく実現できる方法は無いかを探しています。

テーブル:TBL01(所有者:u01)に、「氏名」と「口座番号」のカラムがあるとし、
Select * from TBL01;を実行した場合、
<管理者>        <一般ユーザ>
氏名 口座番号      氏名 口座番号
-- ----      -- ----
A氏 12345678      A氏 表示不可
B氏 99999999      B氏 表示不可
となるようにしたい

所有者u02,u03で夫々以下の様なViewを作り、実行ユーザにViewのSelect権限を与えれば出来るかと考えました。
u02で:
create view u02.TBL01 (氏名,口座番号) as select * from u01.TBL01;
u03で:
create view u03.TBL01 (氏名,口座番号) as select 氏名,'表示不可' from u01.TBL01;
Viewのselect権限付与:
管理者(u04)と一般ユーザ(u05)に対して
grant select on u02.TBL01 to u04;
grant select on u03.TBL01 to u05;
とすれば、上手くいくのではないかと考えていました。

しかしAccessからのODBC接続の場合、'所有者'.'オブジェクト'(例にそうとu01.TBL01)という形でSQLが格納される様なので、上記の方法では実現できません。

違った視点から、カラムの暗号化が使えないか?とか、一般ユーザのselect権限にカラム指定をしてアクセス不可のカラムを外すとかも考えましたが、出来そうもありませんでした。

面倒な質問で申し訳ございませんが、良い案をご教授いただければ助かります。

A 回答 (1件)

Oracle10gなら、VPD(仮想プライベートデータベース)で実現できそうな


気がします。詳しくはマニュアルを参照下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。
現在のVersionは9iですが、Version Upの予定もありますのでVPDを調べて見ます。

お礼日時:2007/08/30 10:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!