Выбор защищенной СУБД от прямого доступа к диску

Я собираюсь создать Java-приложение для сбора некоторой корпоративной информации.
Моя проблема заключается в безопасности СУБД.
EDIT: Мое приложение не подключено к сети и ко всей БД и приложению. расположены в системе, что app. Доступ оттуда; У пользователей есть ACL, поэтому я не хочу, чтобы пользователь мог читать данные, не имеющие к ним доступа, с помощью файлов базы данных на диске.
Мне нужна СУБД, которая шифрует данные на диске для защиты данных против кого-то с текстовым / шестнадцатеричным редактором или другими инструментами просмотра SQL (например, SQLite, у которого нет механизма безопасности или ...)!

Какую СУБД я могу использовать, чтобы быть уверенным, что данные доступны только через мое приложение (и, конечно, сама СУБД), а не напрямую с диска?

Есть ли в MySQL или PostgreSQL такой механизм защиты от прямого доступа к диску?

Спасибо


person Ariyan    schedule 13.05.2012    source источник
comment
Почему диск доступен злоумышленнику? Это должен быть первый вопрос!   -  person Asherah    schedule 13.05.2012
comment
Пожалуйста, укажите защиту от чтения немного дальше, нужна ли вам защита от кражи (тогда вы можете использовать практически любую зашифрованную файловую систему, такую ​​как TrueCrypt или внутренний механизм Postgre и т. д.) или вам нужна защита от чтения во время выполнения (когда файловая система смонтирована). )?   -  person Christian Uhl    schedule 13.05.2012
comment
@Len: я отредактировал вопрос и описал причину.   -  person Ariyan    schedule 13.05.2012
comment
@ChristianUhl: когда файловая система смонтирована.   -  person Ariyan    schedule 13.05.2012
comment
Почему бы вам не использовать разделение пользователей ОС? Запустите базу данных, используя другую учетную запись и списки управления доступом, чтобы доступ был только у пользователя базы данных. Или вы считаете администраторов злоумышленниками?   -  person Robert    schedule 13.05.2012


Ответы (1)


Если у человека есть доступ к самому диску, есть большая вероятность, что он будет иметь доступ к коду и другим данным вашего приложения. Также будет доступен ключ шифрования (используемый для шифрования файла БД). Эта проблема не имеет универсального решения (см. один из подходов ниже), если компьютерное устройство попадет в руки злоумышленника.

Отложив вышеизложенное, у вас есть несколько вариантов:

  1. В SQLite есть плагин для шифрования всей БД.
  2. Вы можете смонтировать диск с помощью TrueCrypt или одной из его альтернатив.
  3. У нас есть несколько продуктов (а именно SolFS и CallbackFilter), которые позволяют вам шифровать файл БД на лету либо с помощью виртуального диска (SolFS), либо путем шифрования/дешифрования файлов на лету путем фильтрации файловых запросов ввода-вывода (CallbackFilter).

Если вы можете каким-либо образом предоставить пользователю пароль/ключ, вы можете использовать ключ сеанса для шифрования данных базы данных, а затем зашифровать этот ключ сеанса, используя пароль каждого пользователя. Затем, когда пользователь хочет получить доступ к данным, вы запрашиваете у него пароль, расшифровываете сеансовый ключ и используете этот ключ для доступа к БД. Таким образом, ключ, используемый для шифрования данных, не хранится в «открытом тексте», и физический доступ к диску не раскрывает данные.

person Eugene Mayevski 'Callback    schedule 13.05.2012