3

我将创建一个 Java 应用程序来收集一些企业信息。
我的问题是 DBMS 安全性。
编辑:我的应用程序未连接到网络以及整个数据库和应用程序。位于该应用程序的系统上。从那里访问;用户有 ACL,所以我不希望用户能够通过使用磁盘上的数据库文件来读取无法访问他们的数据。
我需要一个 DBMS 来加密磁盘上的数据,以保护数据免受使用文本/十六进制编辑器或其他 SQL 浏览工具(如没有安全机制的 SQLite 或......)的人的攻击!

我可以使用哪个 DBMS 来确保只能通过我的应用程序(当然还有 DBMS 本身)而不是直接从磁盘访问数据?

MySQL或PostgreSQL有这种直接磁盘访问保护机制吗?

谢谢

4

1 回答 1

3

如果个人可以访问磁盘本身,那么他很有可能可以访问您的应用程序的代码和其他数据。并且加密密钥(用于加密数据库文件)也将可用。如果计算机设备落入不法分子的手中,则此问题没有通用解决方案(请参见下面的一种方法)。

抛开上述内容,您有几个选择:

  1. SQLite 有全数据库加密插件
  2. 您可以使用 TrueCrypt 或其替代方法之一安装磁盘
  3. 我们有几个产品(即 SolFS 和 CallbackFilter),让您可以使用虚拟磁盘 (SolFS) 或通过过滤文件 I/O 请求 (CallbackFilter) 动态加密/解密文件来动态加密 DB 文件。

如果您能够让用户以某种方式提供密码/密钥,那么您可以使用会话密钥来加密数据库数据,然后使用每个用户的密码加密此会话密钥。然后,当用户想要访问数据时,您要求他输入密码,解密会话密钥并使用该密钥访问数据库。通过这种方式,用于加密数据的密钥不会以“明文”形式存储,并且对磁盘进行物理访问不会泄露数据。

于 2012-05-13T16:50:47.640 回答