Какие события безопасности выполняет один аудит для бизнес-приложения?

Я уже проверяю успешность авторизации, неудачу и выход из системы.

Я рассмотрел аудит (ведение журнала) каждого вызова метода и сохранение версии каждой строки и столбца, которые когда-либо были изменены, но оба эти варианта значительно увеличат сложность аудита. Аудит случайного подмножества видит слишком случайным.

Юридические спецификации (FISMA, C&A) просто говорят, что нужно что-то проверять.

Есть ли какие-то другие не связанные с предметом стратегии аудита, которые я забыл?

2 ответа

Решение

Учитывая, что аудит часто связан с подотчетностью, вы можете записать те действия, которые могут повлиять на любое событие, когда кто-то / что-то должен быть подотчетным.

  1. Изменение записей клиента
  2. Изменение конфигурации
  3. Удаление данных

Рекомендуется сохранять версии некоторых из них такими, чтобы можно было откатить изменения в важных данных. Добавление "кто изменил" в первую очередь довольно просто.

Если кто-то не имеет прямого доступа к базе данных, часто может быть достаточно регистрации приложения любого события, которое влияет на базу данных... например, транзакция, изменяющая много таблиц... Пока вы можете связать проверяемое логическое действие с логической единицей подотчетности, независимо от того, на какую подсистему оно влияет, вы сможете отслеживать подотчетность.

Вы не должны напрямую регистрировать вызовы методов и изменения базы данных, но бизнес-логику, которая привела к этим вызовам и изменениям, и кто использовал эту логику. Небольшое количество внутреннего кода, связывающего причинно-следственную связь между вызовами / изменениями таблиц и некоторыми сообщениями аудита, также будет полезно (если у вас есть ресурсы).

Думайте об элементах аудита вашего приложения как о дереве событий. Корень - это то, что вы регистрируете, например "Дейв удалил запись клиента 2938". Любые дочерние элементы корня могут быть зарегистрированы, и вы можете привязать его к корню, если важно зарегистрировать его как часть события аудита. Например, вы можете утверждать, что какое-то событие аудита "Дейв удален..." было привязано к некоторой информации для выставления счетов, также являющейся ходьбой, как часть ограничения или чего-то еще

Но я не эксперт.

Я согласен со многим из того, что сказал Эйден, но я твердо верю, что аудит должен быть на уровне базы данных. Слишком много баз данных доступны с помощью динамического sql, поэтому разрешения находятся на уровне таблицы (по крайней мере, в SQL Server). Таким образом, лицо, совершившее мошенничество, может ввести или удалить данные в базе данных, минуя все правила. В хорошо спроектированной системе только пара человек (dba и резервная копия) будут иметь права изменять триггеры аудита в prod, и, таким образом, большинство людей могут быть пойманы, если они изменяют данные, которые они не имеют права изменять. Аудит через приложение никогда не поймает этих людей. Конечно, нет почти никакого способа предотвратить мошенничество со стороны dbas, если они захотят это сделать, но кто-то должен иметь права администратора для базы данных, поэтому вы должны быть особенно осторожны при выборе таких людей.

Мы проверяем все изменения данных, все вставки и все удаления в большинстве таблиц в нашей базе данных. Это позволяет легко отказаться от изменений, а также предоставить контрольный журнал. В зависимости от того, что хранит ваша база данных, вам может не понадобиться это делать. Но я бы проверял каждую финансовую транзакцию, каждую кадровую транзакцию и каждую транзакцию, связанную с заказами, складированием или чем-либо еще, что может быть предметом криминальной деятельности.

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

Другие вопросы по тегам