Предотвратить удаление / обновление таблиц даже с помощью superadmin / dba? - PullRequest
5 голосов
/ 27 ноября 2010

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

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

Идея состоит в том, что если кто-то хочет уничтожить данные, необходимые для уничтожения этой базы данных.Есть ли способ сделать это?

Ответы [ 3 ]

5 голосов
/ 27 ноября 2010

Нет, не возможно, суперпользователь всегда контролирует базу данных. Вы можете ОТЗЫВАТЬ обновить и удалить разрешения, но суперпользователь всегда может ПРЕДОСТАВИТЬ эти разрешения себе снова.

2 голосов
/ 27 ноября 2010

Невозможно запретить суперпользователю что-либо делать. Единственное, что вы можете сделать, это предотвратить ЛЮБОГО пользователя от СЛУЧАЙНО удаления или обновления записей. Это может быть достигнуто путем создания правила обновления и удаления.

CREATE [ OR REPLACE ] RULE name AS ON event  
    TO table [ WHERE condition ]  
    DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }  

См. ссылку для справки.

0 голосов
/ 27 ноября 2010

Для MySQL может быть использован следующий подход.

После того, как у вас есть учетные записи приложений, удалите учетную запись суперпользователя (на самом деле, любую учетную запись «С ДЕЙСТВИЕМ ГРАНТА»).Учетные записи системных администраторов должны иметь разрешение только на остановку и запуск системы, но не на чтение из вашей секретной таблицы.

Затем измените вашу таблицу так, чтобы она использовала механизм MEMORY.Это означает, что администратору приложения (не администратору базы данных) потребуется восстанавливать содержимое при каждом перезапуске базы данных.Это также означает, что администратор базы данных не может перезапустить базу данных с опцией «пропустить гранты», чтобы получить доступ к данным, потому что данные будут испаряться во время перезапуска.(Однако системный пользователь root всегда может выгрузить системную память и найти в ней ваши данные.)

Лучшим подходом является шифрование данных в приложении с помощью ключа, известного только администратору приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...