現在、Webアプリケーションを設計しています。要件の1つは、ユーザーの資格情報とその役割を保護することです。
もちろん、通常のパスワードハッシュ+ソルト+に加えて、暗号化されたH2データベースにこれらの特定のテーブルを配置し、残りのデータをMySQLデータベースに配置することを考えていました。私の場合のH2の利点は次のとおりです。
追加のセキュリティレイヤーが要求される場合、これは一般的な方法ですか?つまり、ログイン情報(私の場合は機密データ)を他のデータから分離することをお勧めしますか?
データベースの暗号化により、低レベルのファイルベースのアクセスが防止されますデータベースへのアクセス許可システムを回避します。これは、攻撃者がコンピューターに物理的にアクセスする可能性がある場合(ノートブックが盗まれた場合など)に特に役立ちます。
サーバーでは、キー/パスワードの扱いに問題があります。暗号化の外に保存すると、攻撃者が簡単にアクセスできるようになります。ただし、保存しない場合は、サーバーの再起動時に手動で操作する必要があります。これは、可用性の理由から望ましくないことがよくあります。
データベースの暗号化Webアプリケーションを利用できる攻撃者には役立ちません SQLインジェクションを介してデータベースにアクセスする権限があります。
2番目のデータベース、特に2番目のデータベースソフトウェアを使用すると、攻撃対象が増えます。MySQLとH2の--バグのユニオンセットに対して脆弱です。安全に運用するには、両方のシステムを理解している人が必要です。
1つの利点があります。認証情報にアクセスするコードはごくわずかです。コードの大部分のSQLインジェクションの脆弱性は、分離された認証情報にアクセスできません。
私の職場では、代わりにWebアプリケーションに対してこれを行いました。要求を実行するユーザーの役割に応じて異なるデータベース接続を使用します。したがって、たとえば匿名ユーザーは、データベース権限がほとんどないデータベース接続を取得します。