• ベストアンサー

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

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

  • Oracle
  • 回答数4
  • ありがとう数5

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

  • ベストアンサー
  • 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

  • TCPセッションとそれを利用するプロセスの特定方法

    よろしくお願いします。 OS:HP-UX11i netstatで出力されるTCPセッションについて、 そのセッションを利用しているローカルプロセスを 特定する方法はありますでしょうか。 セッションにあたりをつけてパケットトレースしてみるとかではなくて、 もうちょっと簡単な方法でレポートしてくれるコマンド、プログラムなど があると幸いなのですが。

  • ACCESSで開いているユーザーの特定方法

    ACCESSのMDBをサーバーにおいて、複数人(5名程度)で利用しているのですが、プログラムを書き換えるときに「~さん閉じて」と言いたいのですが人物の特定ができないので困っています。 MDBを利用しているユーザーの特定はできるのでしょうか?宜しくお願いします。

  • 制限つきユーザーで特定のアプリケーションを使用不可にするには?

    制限つきユーザーで特定のアプリケーションを使用不可にするにはどうしたらいいんでしょうか? ユーザー(制限つき)⇒禁止したいアプリケーション「IP Messenger for Win ver 2.04」 です。 セキュリティ面で困っています…よろしくお願いします!! OS⇒WINDOWS XP 

  • ターミナルサービスでログオンしているユーザにウィンドウを出す方法

    あるサービスプログラムが起動しているターミナルサービスに複数のユーザをログオンさせて、ユーザごとに、そのサービスプログラムからウィンドウを出す方法はありますか?OSはWindowsです。 サービスプログラムではなく、各ユーザセッションごとに1つのプログラム(プロセス)を起動すればいいのですが、このプログラムはメモリを食うため、セッションごとにプロセスを作るとメモリ搭載量を数十GBもつまなければなりません。 このプログラムは、メモリ上のデータをグラフィカルに表示するだけのプログラムです。Win32 API の、CreateWindowEx に セッションIDがついたようなAPIがあればベストのように思うのですが。 もしくは、ログオンしたユーザ側から別のCOMクライアントを使って、サービスプログラム上のハンドルを取得し、そこからウィンドウを表示させる方法でも良いです。

  • 利用可能ユーザ一覧

    ubuntu10.04を利用しています. adduserコマンドでユーザを追加しているのですが,管理のため利用可能なユーザ一覧が必要となりました. 毎回,/homeディレクトリを見にいくのもアリかなと思ったのですが,ホームディレクトリだけのこしてユーザ情報を削除する方法もありますしミスマッチがありそうなのでボツとしました. コマンド一発でログイン可能なユーザ一覧を出すことはできますか? よろしくおねがいします.

  • WebクライアントでDBセッションを維持させたい

    C/S系システムをWebシステムに移行することを考えてます。 Webクライアントにおいて、アプリでログイン後にDBセッションをずっと保持させたままにしておきたいのです。(WebクライアントとDBセッションを1対1にしたい) APサーバ上でコネクションプーリングしてDBとのセッションを維持させておくことは知ってます。 実現方法や、実現された事例等がありましたら教えて頂けないでしょうか? DBはORACLEを利用してますが、 Webクライアントと dbms_session.unique_session_id を一意に定めたいのです。

  • Excel VBAでユーザーフォームを編集不可にする方法

    Excel VBAでユーザーフォームを編集不可にする方法がわからなくて困っています。起動時に編集不可の状態にしておき、コマンドボタンを押したときに編集可能にするような方法を考えています。 Accessの場合は Me.AllowEdits = False などできるのですが、Excelではどうすればいいのか、どうか教えてください。

  • UNIXのユーザに規制をかけたい

    OSはUNIXを使ってtelnetを使い、一般ユーザでサーバにログインして、あるプログラムを起動しているのですが、これを複数の人に使ってもらおうと思ったときに、プログラムを起動する前に、万が一rmやcpなどのコマンドをされると削除やコピーなどセキュリティ上よろしくないので、このようなコマンドを管理者権限でユーザに規制をかけたいのですが可能でしょうか? また、特定ユーザのログイン時にそのプログラムを強制的に起動させることは出来るのでしょうか? できるなら、前者のほうが良いのですが、よろしくお願いします。

  • DBの解析方法

    誤って新規作成してしまったQNo.1340574は後ほど削除します。^^; 1、システム構成 (1)クライアント(Windows XP Professional) (1)VB6で作成した業務プログラム (2)oo4o(Oracle Object For Windows) (2)サーバ(HP-UX9000/800) (1)Oracle(DBMS) (ハードウェアが5台あり、ハードウェア毎にインスタンスが1つ作成済み。) (各インスタンスには、複数のユーザを作成済み。) (便宜上、各インスタンスをA,B,C,D,Eと呼ぶ。) 2、発生している問題 クライアントの業務プログラムからoo4oを 利用してDBアクセスを行っておりますが ある処理で、サーバからの応答がなくなり クライアントプログラムが応答なしとなります。 この状態で、v$session,v$lockの内容を確認したところ ユーザテーブルに対しての参照SQLのセションがアクティブの残っており 更に、トランザクション・エンキュに対してのロックも残っている状態まで 確認することができました。 (また、30分程度待つことで、セションが消滅します。) また、サーバがこの状態になると 別クライアントから同様の処理を実行するたびに クライアントプログラムが応答なしとなり アクティブのセションが残ってしまいます。 また、サーバに接続するクライアントが少ない場合には発生していないようです。 (開発環境では再現しません) 3、質問 もう、正直いって自分の知識だけでは、もう解析方法が残っておりません。 なにかアドバイスはありませんでしょうか? もしくは具体的に「コレをみろ!」とか「コレを使え!」とか ありましたら、教えてください。

  • net use の「利用不可」について

    Windows2003 Server(ServerA)にて、管理者ユーザー(User1)でログインします。 コマンドプロンプトで、他のWindows2003 Server(ServerB)にnet useコマンドで、共有ドライブ(接続ユーザーは管理者権限のあるUser2)を設定します。 net use X: \\ServerB\data password /user:User2 この状態で、一度、ログオフをして、再度User1でログインして、このnet useの共有ドライブの状況を確認すると、ステータスが「利用不可」となっていて、共有ドライブが利用できません。 これは、Windowsの仕様でしょうか?回避するには、User1でnet useを行わないとダメなのでしょうか?