私は現在、MongoDB を使用してアプリケーション ログを記録しています。パフォーマンスと、任意の構造化データをログ レコードにダンプできることの両方に非常に満足していますが、一度保存されたログ レコードの可変性に悩まされています。
従来のデータベースでは、アプリケーション ユーザーが INSERT および SELECT 権限を持ち、UPDATE または DELETE 権限を持たないように、ログ テーブルの付与を構成していました。同様に、CouchDB では、既存のドキュメントを変更しようとする試みをすべて拒否する更新バリデーター関数を作成できます。
ただし、 MongoDB wikiのセキュリティ トピックに記載されている 3 つのアクセス レベル (アクセスなし、読み取り専用、「god モード」) を超えて、MongoDB データベースまたはコレクションの操作を制限する方法を見つけることができませんでした。
ドキュメントの不変性 (または少なくとも変更の追跡) が必要な環境で、MongoDB をドキュメント ストアとしてデプロイした人はいますか? 不適切に記述されたアプリケーション コードや悪意のあるアプリケーション コードが既存のログ レコードを変更または破壊できないようにするために、どのようなトリックまたはテクニックを使用しましたか? 書き込み専用ポリシーを適用するサービス レイヤーで MongoDB ロギングをラップする必要がありますか? それとも、構成、クエリ ハッキング、およびレプリケーションを組み合わせて使用して、一貫性のある監査可能なレコードを維持することができますか?