2015-10-23 3 views
0

В целях безопасности мы создадим журнал базы данных, который будет содержать все изменения, сделанные в разных таблицах базы данных, для этого мы будем используйте триггеры, как указано here, но я обеспокоен тем, что если администратор системы или любой, кто имеет корневую привилегию, изменяет данные в журналах в свою пользу, он будет делать бессмысленные журналы. таким образом, я хотел бы знать, есть ли способ предотвратить кого-либо, и я имею в виду, что никто не может делать какие-либо изменения в таблице журналов, то есть отбрасывать таблицу, обновлять и удалять строку. если это возможно? также в отношении моей таблицы журналов, можно ли отслеживать предыдущие данные, которые были изменены с помощью запроса на обновление? Я хотел бы иметь предыдущие и новые данные в моей таблице журналов, чтобы мы могли знать, какие изменения были сделаны.Как предотвратить удаление и удаление содержимого таблицы журналов в mysql

+1

дамп новое содержание ежедневно CSV и отправить его кому-то, но вопрос в том, если вы не доверяете своим системным администратором, чем у вас есть большие проблемы – Mihai

+2

звучит как много веселья, где вы работаете – Drew

+0

если деньги что вы действительно не можете доверять никому, @Mihai, это на самом деле не очень плохая идея, может быть, я должен просто ограничить их привилегию не удалять любую строку, невозможно ограничить права на каждую таблицу правильно, только для каждой базы данных ? – magicianiam

ответ

2

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

Что вы можете сделать, это записать свои журналы в систему, в которой только вы (или по крайней мере: другой админитротор, а затем первый) имеют доступ.

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

Второй метод заключается в использовании определенного метода для записи журналов, который добавляет подписанное сообщение. Таким образом, вы можете быть уверены, что журналы были добавлены этой системой. Если вы также сохраните (подписанное) сообщение о состоянии всей системы, вы, вероятно, сможете распознать любые вмешательства. «Система», используемая для подписания, должна жить на другой машине, очевидно, что делает ее несколько эквивалентной первой опции.

+0

подписанным сообщением, что вы имеете в виду код? что только я могу понять, что это не будет плохой идеей вообще, но учитывая, что это будет сделано с использованием триггеров, добавление кода было бы хлопотным или нет? Я не уверен, что это будет первый раз с использованием триггеров, и я просто обновляюсь на своей Java. Я мог бы также быть супер администратором для системы и просто ограничить доступ системного администратора, но это не так, как будто им нужно вручную изменять данные в любом случае. – magicianiam

+0

Если вы хотите быть в безопасности с системным администратором, вы не можете просто использовать триггеры. они могут быть прочитаны, изменены и т. д. Для подписания вам необходимо иметь подписание, сделанное внешней системой, и таким образом, чтобы вы не могли заставить кого-то позвонить в эту систему, чтобы сделать свою неприятную работу, конечно. Вы действительно можете сделать себя администратором и просто не дать другим право изменять таблицу, что бы это сделать, но вряд ли это структурное решение, которое я бы сказал. – Nanne

+0

Какие другие альтернативы вы можете предложить помимо триггеров для меня, чтобы регистрировать любые изменения в таблицах в базе данных? до сих пор я только читал о триггерах в своих исследованиях, это действительно так, что для меня было бы последним решением для администратора. это действительно тяжелая дилемма, спасибо за ваше время – magicianiam

-1

Открыть PhpMyAdmin открыть таблицу и назначать привилегии уровня таблицы на столе

+0

можно. Ограничить доступ администратора к этой таблице с определенного IP-адреса и остальной доступ только для чтения. –

+0

можете ли вы предоставить ссылку, чтобы я мог больше узнать об этом – magicianiam

1

Невозможно остановить доступ root от наличия прав на внесение изменений. Комбинированный подход может помочь вам обнаружить фальсификацию. Вы можете создать другой сервер с более ограниченным доступом и клонировать таблицу базы данных. Зарегистрируйте всю активность входа на обоих серверах и перекрестно создайте резервные копии журналов между серверами. также делают очень регулярные резервные копии серверов. Вы также можете создать таблицу хеширования, которая соответствует каждой строке таблицы журналов. Им нужно было бы не только найти код, создающий хэш, но и перепроектировать его и изменить отметку времени для соответствия. Тем не менее, я считаю, что лучше всего сделать клонированный сервер, у которого нет имени входа в систему. Только физический вход. Если вы считаете, что какие-то подделывания, вы должны будете сделать некоторые судебные экспертизы. Вы даже можете добавить USB-ключ к серверу физического клонирования и сохранить его с генеральным директором или чем-то еще. Конечно, если вы не можете доверять системному администратору, независимо от того, какая ваша работа очень сложна. Хитрость заключается не в создании сплошной стены, а в тонкой сети и тщательном анализе всего, что происходит через сеть.

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

https://dev.mysql.com/doc/refman/5.1/en/replication.html

+0

шифрование журналов также неплохая идея, они не только знают, что там написано, но и не будут их взломать. но может ли пользователь root получить доступ к коду запуска в mysql? – magicianiam

+0

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

+0

true можно просто создать журналы в другой базе данных, где я единственный пользователь, который не позволяет кому-либо манипулировать данными, это, по-видимому, самый безопасный подход, но как бы подойти к этому решению с помощью триггеров базы данных? Я подключаюсь к 2 базам данных в своем Java-коде и запускаю запрос вставки в другой базе данных? простите меня, поскольку я еще не использовал 2 базы данных одновременно – magicianiam

Смежные вопросы