SQLクエリを保護するための効果的で安全な方法は何ですか?
要するに、プログラマーがクエリを実行するためにアプリケーションによって使用されるパスワードを見ないことを保証したいと思います。RSAやPGPのようなものが思い浮かびますが、アプリケーションのどこかにエンコードせずにパスワードの変更を実装する方法がわかりません。
私たちの環境は典型的なLinux/MySQLです。
SQLクエリを保護するための効果的で安全な方法は何ですか?
要するに、プログラマーがクエリを実行するためにアプリケーションによって使用されるパスワードを見ないことを保証したいと思います。RSAやPGPのようなものが思い浮かびますが、アプリケーションのどこかにエンコードせずにパスワードの変更を実装する方法がわかりません。
私たちの環境は典型的なLinux/MySQLです。
これはプロセスの問題であり、コーディングの問題ではない可能性があります。
ソフトウェア開発では、実装プロセスとロールアウト プロセスを厳密に分離する必要があります。パスワードを含む構成ファイルには、ロールアウト前ではなく、ロールアウト中に実際のパスワードを入力する必要があります。プログラマーは開発環境のパスワードを使用して作業でき、ロールアウト チームはアプリケーションの完成後にそれらのパスワードを変更します。そうすれば、アプリケーションをコーディングしている人々に実際のパスワードが公開されることはありません。
プログラマーがライブ システムにアクセスできないようにすることができない場合は、構成ファイルを暗号化する必要があります。これを行う最善の方法は、プログラミング言語によって異なります。私は現在、ESAPI プロジェクトの適切な関数を使用して .properties ファイルを暗号化する Java アプリケーションに取り組んでおり、それをお勧めします。他の言語を使用している場合は、同等のメカニズムを見つける必要があります。
パスワードを変更する必要がある場合はいつでも、管理者が新しいファイルを生成して暗号化してから、ファイルをサーバーにコピーします。
最大限のセキュリティが必要で、システムの構成を復号化するためのキーを保存したくない場合は、システムの再起動時に管理者がキーを提供できます。ただし、ニーズによっては、これでは時間がかかりすぎる場合があります。
プログラマーがログイン資格情報を含む構成ファイルにアクセスできず、デバッグまたは JMX インターフェースを介してそれらにアクセスできない場合、それは機能するはずです。もちろん、それは他の問題を引き起こしますが、それはあなたの要件を満たす可能性があります. (私は資格のあるセキュリティ評価者ではありませんので、PCI コンプライアンスについて確認してください。)