プロが教える店舗&オフィスのセキュリティ対策術

現在oracle10gでDBを構築し、クライアントサーバでアプリケーションシステムを稼働しています
アプリケーションはログインするユーザによってDBへのアクセス範囲を限定できますが
SID,ユーザID、パスワードを入れてアクセスするオラクルツールではアクセス範囲を限定できません
これに制限をかけることは可能でしょうか(たとえばPC側のプロセスを限定するとか)
また、このような制限を可能にする良い案があれば御教示ください。

A 回答 (6件)

ログオントリガーは


ユーザーがデータベースに接続するとき
起動するトリガーです。

簡単な例を挙げます。

------------------------------------------------------------
SQL> conn / as sysdba
接続されました。
SQL> create or replace trigger logon_scotch_trigger
2 after logon
3 on scotch.schema
4 declare
5 v_program v$session.program%type;
6 begin
7 select program into v_program
8 from v$session
9 where audsid = sys_context('userenv','sessionid');
10 if v_program = 'sqlplus.exe' then
11 raise_application_error(-20000,'SQL*Plusで接続しちゃ駄目!');
12 end if;
13 end;
14 /

トリガーが作成されました。

SQL> conn scotch/whisky
ERROR:
ORA-00604: 再帰SQLレベル1でエラーが発生しました。
ORA-20000: SQL*Plusで接続しちゃ駄目!
ORA-06512: 行8


警告: Oracleにはもう接続されていません。
------------------------------------------------------------

↓OTN掲示板の関連スレッド

http://otn.oracle.co.jp/forum/message.jspa?threa …
http://otn.oracle.co.jp/forum/message.jspa?threa …
http://otn.oracle.co.jp/forum/message.jspa?threa …
http://otn.oracle.co.jp/forum/message.jspa?threa …

検索すれば他にもたくさん出てくると思います。
興味があれば研究してみてください。

# 私自身はなかなかこの手の要件がなくて
# 実戦では使ったことがないのですが……
    • good
    • 0

オンコードというのは?


もしかすると、今は、クライアントがわにOracleクライアントを入れてもらってそこで手で設定している内容をツール内に埋め込んでしまうという意味ですか?
まあ、そうすれば、いちいち、クライアント側にSID等を公開する必要はありませんが、結局セキュリティーリスクの度合いはたいして変わっていませんよ。
やった方がいいのは確かですが。

実際問題としては、不特定多数がアクセスできる状態ではない場合は、そういったコードを書き換えたり、新たな投資をするよりも、監視を行い、不正があった場合にきちんとそれを確認し、それに対して処罰ができるという方向に進んだ方がいいと思いますよ。

どちらにしろ監視やロギングは必要です。もしそれだけで対処が可能であればそれで済ましてしまえば?とおもいますよ。

一応、そのツールを使用している人たちには不正アクセスはしないようにいっておけば、いざ、何かあった場合には不正アクセス防止法で守られていますので。ある程度良識があれば、会社でそうそう怪しいことはしないと思いますよ。
    • good
    • 0
この回答へのお礼

wildcat-ypさん 回答をありがとうございます。
又、回答が遅くなり申し訳ありません

>結局セキュリティーリスクの度合いはたいして変わっていませんよ。
それは承知しております。今回の対応は素人の出来心を抑えるのが狙いです。

>不正があった場合にきちんとそれを確認し、それに対して処罰ができるという方向に
もちろんその対応はしなければと思っています。

>もしそれだけで対処が可能であればそれで済ましてしまえば?とおもいますよ。
それで済まない情報がDBにあるということで御理解ください
また、運用もすぐに停止出来ないということを御理解ください。

以前の回答でパケットキャプチャすればSIDとユーザID、パスワードがわかると書かれいて
いましたが、実際にやってみたのですがユーザID、パスワードは暗号化されているようです。

”tnsname.ora”をダミーにしてしまうと、さすがにオラクルツールは接続できませんでしたが
パケットキャプチャーではしっかり見えていました。

今後の展開として新しいシステムを構築したいのですが、リッチクライアントでセキュリティ重視の
システム形態はどんなものか模索中です

お礼日時:2010/01/13 07:28

ログオントリガーでアクセスするアプリケーションを限定する


というのはいかがでしょう。
素人がオラクルのツールを使って”ひねりもなしに”DBにアクセスできてしまう
のは防げるかもしれません。
    • good
    • 0
この回答へのお礼

dda167さん 回答をありがとうございます。
又、回答が遅くなり申し訳ありません

>ログオントリガーでアクセスするアプリケーションを限定する
出来れば詳しいことを教えて頂けないでしょうか

お礼日時:2010/01/13 07:27

>今のままでセキュリティホールを解消できないとは思っています。



接続元が無制限であることが問題なのであれば、データベースサーバのOS側の機能で、
接続元IPアドレスを制限すれば良いかと思いますけど?
(データベースのプラットフォームが書かれていないので、具体的な操作は書けませんが。)
    • good
    • 0
この回答へのお礼

k_o_r_o_c_h_a_nさん 回答をありがとうございます。
> 接続元が無制限であることが問題なのであれば
社外にもクライアントPCが有りますが、VPN接続になっていますので
一応は限定されていると認識しています。

お礼日時:2010/01/11 09:01

さすがにそこまでど素人がすぐにアクセスできるような状態ではないと思いますよ。

一応、SIDとユーザID、パスワードを公開しなければ良いので。
まあ、少し知っている人であればパケットキャプチャすれば簡単にわかることは知っているとは思いますが。

なので、不正アクセスの禁止と、監査機能によるアクセスログ等を取り、不正があった場合にすぐに検知できるようにしておくことが有効になります。

これって社内ツールですよね?それであれば、きちんとルール化しておけばそれほど重大なことにはならないと思いますよ。
これが社外ツールであれば、ただちに運用を停止する必要がありますが・・・
    • good
    • 0
この回答へのお礼

wildcat-ypさん 回答をありがとうございます。
> これが社外ツールであれば、ただちに運用を停止する必要がありますが・・・
運用上の都合により社外(取引先)にもクライアントPCがあります。
ですので、最悪SID,ユーザID、パスワードが漏れてしまっても、どこかでもう一段階の
ブロックができないのかともがいております。
先ほど見つけたのですが、ODP.NET限定ですが”tnsname.ora”の記述内容をオンコードに
出来るみたいなので”tnsname.ora”をダミーにしてしまうのが一つの手かなと思うのですが
どうでしょうか?

お礼日時:2010/01/11 09:03

そのクライアントツールが直接DBにアクセスするのですか?


それはそもそものアプリケーションの設計がおかしいのでは?

普通、DBサーバは許可するアプリサーバ以外からのアクセスは禁止するものです。
もしくは、Oracle自体の認証でそれぞれのアクセスできる範囲を限定する物です。

たとえば、PC側のプロセスを限定し、sqlplus.exeからのアクセスを拒否する設定が可能だったとしても、実行ファイル名を変えられてしまえば一緒です。ODBC経由でアクセスしていればそれすら必要ないかも。

なので、そのシステムは潜在的にセキュリティーホールを抱えた仕様ということです。少し知識があれば簡単にDBアクセスが可能ですので、必要があれば、不正アクセス禁止の注意書きと、アクセス履歴等の監査を使って、不正アクセスの検知を強化するしかありません。

もし、そのクライアントツールが直接DBアクセスするものではなく、きちんとしたアプリサーバ経由でのアクセスしかしないのであれば、単にDB側は、リスナーでアクセス制限すれば良いだけです。
    • good
    • 0
この回答へのお礼

wildcat-ypさん 回答をありがとうございます。
> なので、そのシステムは潜在的にセキュリティーホールを抱えた仕様ということです。
> 少し知識があれば簡単にDBアクセスが可能ですので
仰る通りだと思いましす。
私もこのシステムにかかわったのが3ケ月前で、その時には5年も前からこのシステム
(実は某社のパッケージソフト)が業者の言いなりに導入されていて運用されていました。
私もオラクルにというかDBの経験は浅いですが、パッケージのインストールの仕方とか、
オラクルクライアントの設定ファイルとかみてオラクルのツール(フリーソフト)でDBに
アクセス出来てしまったのでビックリしています。
パッケージソフトでの運用はすぐにはやめれませんので、今のままでセキュリティホールを
解消できないとは思っています。
ですが、素人がオラクルのツールを使って”ひねりもなしに”DBにアクセスできてしまう
現状を少しでもなんとかできないかと思い投稿したしだいです。
何かいい方法はないでしょうか。

お礼日時:2010/01/09 21:24

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