特定のアプリケーションにのみOracle DBログインを許可しますか?
-
06-07-2019 - |
質問
独自のアプリケーションを介してのみユーザーにDBアクセス(Oracle)を許可したい-ユーザーのコンピューターにローカルにインストールされた「ourTool.exe」と呼びましょう。現在、ユーザーは" ourTool"を起動するたびにユーザー名/パスワードを提供する必要があります。指定されたパスワードpasswordは復号化され、ユーザー名/復号化パスワードを使用して最終的にOracle DBにログインします。このアプローチにより、ユーザーはサードパーティのツール(SQLplus、Excel、Accessなど)を使用して直接DBにアクセスできなくなり、DB内のすべてが" ourTool"を使用して入力/編集されていることが保証されます。
今、クライアントの1人がユーザーに「シングルサインオン」を許可したいと考えています。 (SmartCards / Oracle PKIを使用)。これにより、ユーザーは「ourTool」を起動するたびにパスワードを入力せずにデータベースに接続できるようになります。ただし、SQLplus、Excel、Accessなどの潜在的に危険なツールについても同じことが言えます。
これを防ぐ方法はありますか? DBのすべてのレコードが" ourTool"を使用してのみ作成/編集/削除されるようにする方法このシナリオでは?
解決
アプリケーションであり、ソースを制御しているため、パスワードで保護されたデータベースロールまたはourTool.exeから有効になっているセキュアアプリケーションロールを使用できます。 ( http://www.oracle.com/technology/を参照してください。 obe / obe10gdb / security / approles / approles.htm )。
たとえば、パスワードで保護されたデータベースロールでは、最初の接続はCREATE SESSION特権のみで行われ、ourTool.exeは自分だけが知っているパスワードでSET ROLEを発行します。他のアプリケーションには、役割を設定するための情報がありません。明らかに、特権はロールにのみ付与され、この構成のユーザーには直接付与されません。
他のヒント
デフォルトでは、 OCI
は呼び出し元アプリケーションの EXE
名を送信し、 v $ session
を照会することでアクセスできます:
SELECT program
FROM V$SESSION
、 AFTER LOGON
トリガーで実行できます。
ただし、これは簡単に上書きできるため、信頼しないでください。
sqlplus.exeの名前をmyTool.exeに変更し、myTool.exeと接続した後
SELECT program
FROM V$SESSION
where username = 'SYSTEM';
戻り値: myTool.exe
ですから、Quassnoiが言ったように、いくつかの状況では使用できますが、確かに強気な証拠ではないことに注意してください。