3

エンタープライズ情報を収集するためのJavaアプリケーションを作成します。
私の問題はDBMSのセキュリティです。
編集:私のアプリケーションはネットワークとDBおよびアプリ全体に接続されていません。そのアプリのシステムにあります。そこからアクセスします。ユーザーはACLを持っているので、ディスク上のデータベースファイルを使用して、ユーザーがアクセスできないデータを読み取れるようにしたくありません。
テキスト/HEXエディタまたは他のSQLブラウジングツール(セキュリティメカニズムを持たないSQLiteなど)を使用してデータを保護するために、ディスク上のデータを暗号化するDBMSが必要です!

ディスクから直接ではなく、アプリケーション(およびもちろんDBMS自体)を介してのみデータにアクセスできるようにするために、どのDBMSを使用できますか?

MySQLまたはPostgreSQLには、そのような直接ディスクアクセス保護メカニズムがありますか?

ありがとう

4

1 に答える 1

3

個人がディスク自体にアクセスできる場合は、アプリケーションのコードやその他のデータにアクセスできる可能性が高くなります。また、暗号化キー(DBファイルの暗号化に使用)も使用できるようになります。コンピュータデバイスが不正行為者の手に渡った場合、この問題には普遍的な解決策がありません(以下の1つのアプローチを参照)。

上記を脇に置いて、いくつかのオプションがあります。

  1. SQLiteにはDB全体の暗号化プラグインがあります。
  2. TrueCryptまたはその代替手段の1つを使用してディスクをマウントできます
  3. いくつかの製品(つまり、SolFSとCallbackFilter)があり、仮想ディスク(SolFS)を使用して、またはファイルI / O要求をフィルタリングすることによってファイルをオンザフライで暗号化/復号化(CallbackFilter)することにより、DBファイルをオンザフライで暗号化できます。

ユーザーに何らかの方法でパスワード/キーを提供させることができる場合は、セッションキーを使用してデータベースデータを暗号化し、次に各ユーザーのパスワードを使用してこのセッションキーを暗号化できます。次に、ユーザーがデータにアクセスしたい場合は、パスワードを要求し、セッションキーを復号化し、そのキーを使用してDBにアクセスします。このように、データの暗号化に使用されるキーは「クリアテキスト」に保存されず、ディスクへの物理的なアクセスを取得してもデータは公開されません。

于 2012-05-13T16:50:47.640 に答える