私は、埋め込みJettyを使用しているLinux上で実行されている既存のJava Webアプリケーションを持っています。アプリケーションは、rootとして実行されるjsvcを使用してロードされ、ポート443でリッスンし、ポート8443のあまり特権のないユーザー "appname"の下で実行されるJavaアプリケーションにリクエストをリレーします。jsvcからJetty(または他のアプリケーションサーバー)へのメッセージのセキュリティ
現在、私たちは "secrets.properties"と呼ばれるファイルから暗号化キーを取得します。これは "root"によって書き込み可能であり、 "appname"によって読み取り可能です(技術的には、 "appname"グループのメンバーによって)。しかし、私の好みは、ファイルが "root"によってのみ読み込み可能であり、jsvcがファイルを読み込んで、そのファイルの内容(または単一のプロパティ)をアプリケーションに渡すということです。私の目標は、誰かがアプリを破壊し、アプリの「appname」アカウントでシステムアクセス権を取得できた場合、そのキーを取得できないということです。
"ps -ex"を実行している誰かに鍵が表示されていなくても可能ですか?
+1はよく考えられたアイデアです。私の懸念事項は、暗号化され、アプリケーションサーバーによってデータベースに格納されているデータを保護することです。ネットワークとサーバーのファイアウォール、HIDS、監視ログ、定期監査とペンテスト、厳密なアクセス制御、行ごとの派生キー、およびよく知られた信頼できる管理者など、複数の安全対策が用意されています。アプリケーションサーバーとデータベースのルートレベルの侵害さえも、既存のデータを解読するのには十分ではありませんが、私が必要としない根拠はあきらめたくありません。派生キーのその部分は私です興味の焦点。 – phatfingers
Ok、暗号化されていない状態でデータを扱っていたので、あなたの質問で私の答えを伝えることができなかったので、私の答えは一般的でした。あなたが何をしていても、アプリがデータを読み取ることが許可されている場合、攻撃者はアプリを制御するとデータを読み取ることができます。ただし、キーにアクセスする特権を持つ別のプロセスで実行された別のアプリケーション/プロキシにすべてを転送することで、アプリが復号化できるレコードの数を制限することができます。 – imichaelmiers
実際には、レート制限は望んでおらず、要求が特定のしきい値を超えた場合はすべてのアクセスを拒否します。あなたが本当に不快なら、あなたはハードウェアセキュリティモジュール(HSM)に投資し、おそらくこのレート制限を行うようにプログラムすることができます。 – imichaelmiers