2012-05-13 22 views
3

我将创建一个Java应用程序来收集一些企业信息。
我的问题是DBMS的安全性。
编辑:我的应用程序没有连接到网络和整个数据库和应用程序。位于系统上的应用程序。从那里访问;用户拥有ACL,因此我不希望用户能够通过使用磁盘上的数据库文件来读取无法访问它们的数据。
我需要一个DBMS来加密磁盘上的数据,以保护数据免受某人使用Text/HEX编辑器或其他SQL Browsing Tools(像没有安全机制的SQLite或...)!选择针对直接磁盘访问的安全DBMS

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

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

感谢

+0

为什么磁盘可供攻击者使用?这应该是第一个问题! – Ashe

+0

请详细说明读取保护,您是否需要防范盗窃(然后您可以使用几乎任何加密文件系统,如TrueCrypt或Postgre的内部机制等),或者您需要在运行时期间进行读取保护(当文件系统安装)? –

+0

@恩:我编辑了问题并描述了原因。 – RYN

回答

3

如果个人有权访问磁盘本身,有一个很好的机会,他将有机会获得的代码和应用程​​序的其他数据。加密密钥(用于加密数据库文件)也将可用。如果计算机设备进入不法分子手中,这个问题没有一个通用的解决方案(请参阅下面的一种方法)。

把上面预留有以下几个选项:

  1. SQLite的有whole-DB encryption plugin
  2. 可以使用TrueCrypt的或它的替代品之一挂接磁盘
  3. 我们有几个产品(即SolFS和CallbackFilter),它让你使用虚拟磁盘(SolFS)加密数据库文件在运行中任一或通过加密/通过过滤文件I/O请求(CallbackFilter)即时解密文件。

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