我目前使用MongoDB来记录应用程序日志,虽然我对性能以及能够将任意结构化数据转储到日志记录中感到满意,但我很困扰日志记录一旦存储就可变。MongoDB中的只写集合
在传统的数据库中,我会为我的日志表构建授权,这样应用程序用户具有INSERT和SELECT权限,但不具有UPDATE或DELETE权限。同样,在CouchDB中,我可以编写一个更新验证器函数,拒绝所有修改现有文档的尝试。
但是,我一直无法找到一种方法来限制在MongoDB wiki上的security topic中记录的三个访问级别(无法访问,只读,“神模式”)之外的MongoDB数据库或集合上的操作。
是否有其他人将MongoDB作为文档存储部署在文档的不变性(或至少更改跟踪)需求的设置中?您使用了哪些技巧或技巧来确保写得不好或恶意的应用程序代码无法修改或销毁现有的日志记录?我是否需要将我的MongoDB日志记录包装在强制执行只写策略的服务层中,还是可以使用某些配置,查询黑客行为和复制的组合来确保维护一致的可审计记录?
由于似乎没有一个预置的方式,我实际上实现了一个位于MongoDB前面的简单TCP代理,并通过检查操作码来过滤发送到服务器的消息: http:// gist.github.com/328486 – rcoder 2010-03-11 01:23:38
感谢您发表主旨。您的代理设置非常酷,可以用于我可能正在处理的几乎相同的事务(审计跟踪)的企业类型项目。 – 2011-08-26 13:46:05
我一直在寻找这个完全相同的东西。恕我直言,这是MongoDB目前最大的失败。 – 2012-09-22 16:09:55