В настоящее время я использую MongoDB для записи журналов приложений, и хотя я вполне доволен как производительностью, так и возможностью удалять произвольные структурированные данные в записи журналов, меня беспокоит изменчивость записей журнала после их сохранения.Коллекции только для записи в MongoDB
В традиционной базе данных я бы структурировал гранты для моих журнальных таблиц, чтобы пользователь приложения имел привилегии INSERT и SELECT, но не UPDATE или DELETE. Аналогично, в CouchDB я мог бы написать функцию проверки валидатора, которая отвергала все попытки изменить существующий документ.
Однако я не смог найти способ ограничить операции над базой данных или коллекцией MongoDB за пределами трех уровней доступа (без доступа, только для чтения, «режим богов»), задокументированных в security topic на вики MongoDB ,
Кто-нибудь еще развернул MongoDB в качестве хранилища документов в настройке, где требовалось неизменность (или, по крайней мере, отслеживание изменений) для документов? Какие трюки или методы вы использовали для обеспечения того, чтобы плохо написанный или вредоносный код приложения не мог изменять или уничтожать существующие записи журнала? Нужно ли завершать мой журнал MongoDB на уровне службы, который применяет политику только для записи, или я могу использовать некоторую комбинацию конфигурации, взлома запросов и репликации, чтобы обеспечить постоянную запись, пригодную для аудита?
Поскольку, похоже, не было запеченного способа, я фактически реализовал простой прокси TCP, который находится перед MongoDB и фильтрует сообщения, отправленные на сервер, путем проверки кода операции: http: // gist.github.com/328486 – rcoder
Спасибо, что разместили текст. Ваша настройка прокси-сервера довольно крутая и может пригодиться для проекта корпоративного типа, над которым я могу работать практически в одном и том же (контрольный журнал). –
Я искал это одно и то же. ИМХО, это самый большой провал в MongoDB на данный момент. –