Oracle 11.2を使用しています。サーバー・プロセスはSolaris 10で動作するC++で記述されています。サポート担当者は独自のOracleユーザー名を持ち、私たちのサーバプロセスのために(それをservuserと呼ぶ)。Oracleに接続する必要のあるサーバー・プロセスを認証する安全な方法
監査の目的で、サーバープロセスのみが変更を行うためにservuserアカウントを使用するようにする必要がありますが、サポート担当者はservuserを使用してdbにアクセスすることもできますサーバープロセスをホストするSolarisボックス。
明白な解決策は、OS認証を使用することです。プロセスのSolarisユーザーを作成し、それをOracleサービス・ユーザーにマップします。これらのサーバー・プロセスは、Oracleインスタンスとは別のホスト上で実行されます。遠隔認可を有効にすることは、巨大でよく知られたセキュリティホールです(あなた自身のOSをあなたのOS上に作成する - プレスト)。私は考えることができる
すべての他の戦略には良いではない:サポート担当者がそれらを参照してsqlplusを経由して接続するために使用できるよう、Solarisのアカウントのファイルでパスワードを保存する
は、無意味です。サーバプロセスはその後、サポートスタッフに利用できるようになる秘密鍵へのアクセス権を持っていなければならないだろうし、我々は戻って、ステップ1
でいる&を解読することができ -は、ファイルを暗号化しても良いことないだろう
私は、servuserとして接続しているかどうかを確認するログオントリガーを作成し、v $ sessionのModule/Programの値が有効であると識別した場合に例外を発生させることを考えましたクライアント。これは弱い保護です。誰かがこれらの値を偽る独自のアプリを書く可能性があるからです。
このシナリオを処理する「公式」な方法は何ですか? OS認証は、あなたのインスタンスをホストしているのと同じボックスでクライアントを実行している場合にのみ安全に動作しますが、むしろ役に立たないIMOと思われます。しかし私は、シナリオが非常に一般的だと思うでしょう - アプリのサーバーは別々のインスタンスで実行していますが、権限のあるアカウントしか使用できないようにしたいと考えています。
提案?
ウォレットは、マシン上の特定のosユーザーにのみ適用されますか? –
@SteveBroberg - Unixのファイルアクセス権を使用して、1人のSolarisユーザーしかウォレットにアクセスできないようにする必要があります。 –
ありがとうございましたが、誰かがそのウォレットファイルを使用して、別のOSユーザーでログインできるようにすることを意味していましたか?つまり、servuserとしてdbに入るための一種の「合格」として機能しますか?もしそうなら、それはどのようにユーザー名/パスワードファイルより優れていますか? –