Oracle 11.2 を使用し、サーバー プロセスは C++ で記述され、Solaris 10 で実行されます。サポート担当者は独自の Oracle ユーザー名を持ち、サーバー プロセス専用の Oracle ユーザー (servuser と呼びましょう) を持っています。
監査の目的で、サーバー プロセスのみが servuser アカウントを使用して変更を行うようにする必要がありますが、サポート担当者が servuser を使用してデータベースにアクセスすることは、ホストしている Solaris ボックスから行う限り許容されます。サーバープロセス。
これに対する明らかな解決策は、OS 認証を使用することです。つまり、プロセス用の Solaris ユーザーを作成し、それを Oracle servuser にマップします。これに関する唯一の問題: これらのサーバー プロセスは、Oracle インスタンスとは別のホストで実行されます。リモート認証を有効にすることは、よく知られた巨大なセキュリティ ホールです (OS で独自のユーザーを作成するだけです - プレスト)。
私が考えることができる他のすべての戦略は良くありません:
パスワードを Solaris アカウントのファイルに保存するのはよくありません。サポート担当者がそれらを見て、sqlplus 経由で接続するために使用できるからです。
ファイルを暗号化するのは良くありません.サーバープロセスは秘密鍵にアクセスする必要があり、サポートスタッフが利用できるようになり、サポートスタッフが復号化してステップ1に戻ります.
servuser として接続しているかどうかを確認するログオン トリガーを作成し、v$session のモジュール/プログラムの値が有効なクライアントとして識別したものと一致しない場合に例外を発生させることを考えました。誰かがこれらの値を偽装する独自のアプリを作成する可能性があるため、これは弱い保護です。
このシナリオを処理する「公式」の方法は何ですか? OS 認証は、インスタンスをホストしている同じボックスでクライアントを実行している場合にのみ安全に機能しますが、これはかなり役に立たないようです, IMO. それでも、私たちのシナリオは非常に一般的だと思います。アプリ サーバーは別のインスタンスで実行されていますが、特権アカウントのみを使用できるようにしたいと考えています。
提案?