我目前正在使用MongoDB来记录应用程序日志,虽然我对性能以及能够将任意结构化数据转储到日志记录中非常满意,但是我对一旦存储的日志记录的可变性感到困扰.
在传统的数据库中,我将为我的日志表构建授权,以便应用程序用户具有INSERT和SELECT权限,但不具有UPDATE或DELETE.同样,在CouchDB中,我可以编写一个更新验证器函数,拒绝所有修改现有文档的尝试.
但是,我一直无法在MongoDB wiki 的安全主题中记录的三个访问级别(无访问权限,只读,"上帝模式")之外找到限制MongoDB数据库或集合操作的方法.
是否有其他人将MongoDB作为文档存储部署在一个需要对文档进行不变性(或至少是更改跟踪)的环境中?您使用了哪些技巧或技巧来确保编写不良或恶意的应用程序代码无法修改或破坏现有日志记录?我是否需要将MongoDB日志记录包含在强制执行只写策略的服务层中,还是可以使用配置,查询黑客和复制的某种组合来确保维护一致的可审计记录?
我想说最好的办法就是在一个强制执行特定合同的服务层中结束对MongoDB的访问.我们在细粒度访问控制方面做得不多,因为有很多不同的情况,正确解决所有这些问题都很难实现.因此,在大多数情况下,由应用程序层来实现这些控件.