こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

特定のユーザーをDBの利用を不可にする方法について

特定のユーザーだけをオラクルの利用不可としたいのですがどのようにしたらよいのでしょうか?
ユーザーを特定する方法はOSユーザーでの特定を考えています。
セッション情報は以下のようになりますので、OSユーザーが[USER22]だけ利用不可にしたいということです。
オラクルユーザー = AAA OSユーザー = USER11
オラクルユーザー = AAA OSユーザー = USER22
オラクルユーザー = AAA OSユーザー = USER33

既成のシステムのためプログラム修正が出来ないので、コマンドでの方法をお願いします。

投稿日時 - 2009-10-30 10:33:37

QNo.5408145

困ってます

質問者が選んだベストアンサー

こんにちわ。

データベース・イベント・トリガーを使えば簡単に実装できますょ。
ログオン・トリガーの中で、V$session.username, v$session.osuser
を取得してそれが'AAA', 'USER22' ならraise_application_error で
例外を発生させてしまえば良い筈です。

投稿日時 - 2009-11-01 09:10:56

お礼

回答ありがとございます。
返事が遅くなってしまい申し訳ありません。
教えていただいた方法でユーザーを特定することは成功しましたが、
raise_application_error による例外発生がまだ出来ません。
NO.4様の回答内容も気になるため、慎重にためしていきたいと思います。
まだ、あきらめてはいませんが、
いったん質問を締め切ろうと思います。
どうもありがとうございました。

投稿日時 - 2009-11-11 10:08:50

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

ログオントリガーで対応できると思いますが、
このトリガーでエラーを出してしまうと誰もログインできなくなるので気をつけてくださいね。
システム停止状態で導入してログインテストしたほうがよろしいです。

投稿日時 - 2009-11-03 08:41:10

>よろしければ8iで別の方法があるであれば教えて下さい。

私がやったのは、ファイングレイン・アクセス・コントロール(FGAC)による
レコード開示範囲の限定です。
(所謂、バーチャルプライベートデータベース)
今回の場合、FGACを使って、セッションユーザの情報を元に、不許可の場合、
条件に「1=2」を指定することで、検索結果が常に0件にすることが可能です。
なお、r8.1.6でエンタープライズエディションであれば、FGACは利用可能です。

r8.1.6でも、#2で書かれているログイン・イベントによるトリガー機能は
利用可能なので、今回の場合は、ログイントリガーの方が適切かも知れませんね。

投稿日時 - 2009-11-02 23:08:42

お礼

回答ありがとございます。
ログイン・イベントによるトリガー機能で挑戦してみます。
大変、ためになりました。

投稿日時 - 2009-11-11 09:51:47

実現できるとは思いますが、面倒な感じがします。
オラクルのバージョンとエディションに因るんですが、ファイングレイン・アクセス・コントロールを利用した
アクセス制御が独自ルールで実現できるので、それを利用すれば出来なくは無いかと。
(8i時代に同じようなことを実験的実装したことがるので、出来るのは間違いない)

参考URL:http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/network.111/E05730-05/vpd.htm#CIHHDHGD

投稿日時 - 2009-10-31 03:06:27

補足

回答、ありがとうございます。

質問本文から洩れていましたが、オラクルのバージョンは8.1.6です。
よろしければ8iで別の方法があるであれば教えて下さい。
> (8i時代に同じようなことを.....

投稿日時 - 2009-11-02 11:04:48

あなたにオススメの質問