• ベストアンサー

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

特定のユーザーだけをオラクルの利用不可としたいのですがどのようにしたらよいのでしょうか? ユーザーを特定する方法はOSユーザーでの特定を考えています。 セッション情報は以下のようになりますので、OSユーザーが[USER22]だけ利用不可にしたいということです。 オラクルユーザー = AAA OSユーザー = USER11 オラクルユーザー = AAA OSユーザー = USER22 オラクルユーザー = AAA OSユーザー = USER33 既成のシステムのためプログラム修正が出来ないので、コマンドでの方法をお願いします。

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

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

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

kasukon
質問者

お礼

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

その他の回答 (3)

  • uresiiwa
  • ベストアンサー率45% (49/107)
回答No.4

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

回答No.3

>よろしければ8iで別の方法があるであれば教えて下さい。 私がやったのは、ファイングレイン・アクセス・コントロール(FGAC)による レコード開示範囲の限定です。 (所謂、バーチャルプライベートデータベース) 今回の場合、FGACを使って、セッションユーザの情報を元に、不許可の場合、 条件に「1=2」を指定することで、検索結果が常に0件にすることが可能です。 なお、r8.1.6でエンタープライズエディションであれば、FGACは利用可能です。 r8.1.6でも、#2で書かれているログイン・イベントによるトリガー機能は 利用可能なので、今回の場合は、ログイントリガーの方が適切かも知れませんね。

kasukon
質問者

お礼

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

回答No.1

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

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

補足

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

関連するQ&A