Oracle Инкрементная криптография контрольной суммы для безопасности - PullRequest
1 голос
/ 09 марта 2020

У меня есть уникальная проблема, которую нужно решить. У меня есть устаревшее java приложение, которое подключается к Oracle RDBMS. В приложении разбросаны всевозможные запросы и DML - вставки, обновление, удаление и, конечно, выбор. Он использует JB C (Preparedstatement), хотя один недавно добавленный модуль использует JPA.

У меня есть требование добавить защитный слой / logi c в приложение / базу данных, в результате чего любой пользователь ( может даже быть администратором БД или пользователем ОС root), пытающимся изменить данные (обновления, вставки или удаления), минуя приложение, мы можем идентифицировать операцию как часть аудита.

Журнал аудита казалось, что это go здесь, за исключением того, что мы даже не можем доверять пользователю ОС root, и, таким образом, парень с правами администратора и доступа root может легко изменить данные и удалить их следы в журналах аудита.

Я думал о реализации алгоритма шифрования циклического типа c для чувствительных таблиц, чтобы на каждом DML, выполняемом приложением, вводился крипто / ха sh, и он постепенно увеличивался, так что любой изменение легко поймать, выполнив аудит с использованием приложения.

Теоретически это представляется возможным, за исключением того, что оно может стать сложным, потому что после каждого DML мы будем сильными Я действительно должен пересчитать контрольную сумму ha sh / для ряда последующих записей, и это может привести к перегрузке приложения / базы данных.

Является ли это возможным решением?

Ответы [ 2 ]

2 голосов
/ 10 марта 2020

Вы правы в том, что вычисление га sh каждой обновленной строки данных приведет к нагрузке на систему. Собираетесь ли вы также проверить, что ha sh перед отправкой изменений в базу данных, чтобы убедиться, что ничего не изменилось за пределами приложения? Это еще больше накладных расходов и намного больше пользовательского кода для вашего приложения. Это также не поможет вам определить, кто или когда изменил данные, только если они были обновлены вне приложения. Использование триггера базы данных не сработает, так как они легко отключаются и не способны изменять ту же таблицу, которая их вызывает (вам понадобится отдельная таблица ha sh с записью для каждой строки данных в каждой таблице Вы хотели контролировать). Аудит по-прежнему является вашим лучшим способом ввода go, поскольку он не потребует никаких изменений в вашем приложении или ваших схемах данных.

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

Наконец, вы можете использовать такие инструменты, как Splunk, Elasti c Search, syslog или Oracle Database Audit Vault или другое решение для мониторинга файлов, чтобы централизовать ваши записи аудита в другой системе в том виде, как они есть. создается базой данных - делает их недоступными для администратора БД или локального системного администратора. Прежде всего, вам потребуется определенная работа вашего администратора БД и / или системного администратора для настройки, но это может go долгий путь к защите ваших данных аудита.

Все это сказало, рано или поздно вы собираетесь иметь , чтобы доверять двум людям: системному администратору и администратору базы данных. Если вы не можете доверять им, тогда у вас глубокие, глубокие проблемы.

0 голосов
/ 10 марта 2020

Oracle 20 c имеет таблиц блокчейнов . Версия 20 c в настоящее время доступна только в облаке Oracle, но, вероятно, она будет доступна локально через несколько месяцев.

...