質問

独自のアプリケーションを介してのみユーザーに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が言ったように、いくつかの状況では使用できますが、確かに強気な証拠ではないことに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top