sql >> データベース >  >> NoSQL >> MongoDB

MongoDBの監査ログ

    データベース管理のセキュリティ面の1つは、データベースに誰が、いつ、何をしたかを理解することです。すでにMongoDBサービスを保護していますが、誰が何をしているのかを知り、何か奇妙なことがあるかどうかを検出したいと考えています。データ侵害の調査では、監査ログを使用して、履歴アクティビティを分析し、攻撃者がどのエンドポイントから来たのか、データベース内に侵入した後にどのような操作を行ったかを理解できます。

    このブログでは、MongoDBの監査ログと実装を確認します。

    MongoDBでの監査ログの有効化

    MongoDBで監査ログを有効にするには、mongod.conf構成ファイルのセクションauditLogに移動する必要があります:

    auditLog:
       destination: file
       format: BSON
       path: /var/lib/mongodb/audit_mongodb.bson

    ログの宛先には、ファイル、syslog、コンソールの3種類があります。理想的には、JSONまたはBSONでサポートされている形式で監査ログをファイルに送信できます。以下に示すように、MongoDBサービスの起動時に監査ログを有効にすることもできます。

    mongod --dbpath /var/lib/mongodb --auditDestination file --auditFormat BSON --auditPath /var/lib/mongodb/audit_mongodb.bson

    MongoDBの監査フィルター

    それでもauditLogセクションには、filterというパラメーターがあります。ログに記録するアクションパターンをフィルタリングできます。たとえば、認証を特定のデータベースに記録する場合は、次のコマンドを使用できます。

    auditLog:
       destination: file
       format: BSON
       path: /var/lib/mongodb/audit_mongodb.bson
       filter: '{ atype: "authenticate", "param.db": "user_profile" }'

    user_profileデータベースへのすべての認証を追跡します。別の例:アクションを追跡したい。インデックスを削除し、コレクションの名前を変更し、コレクションをuser_profileデータベースに削除します。コマンドは次のようになります:

    auditLog:
       destination: file
       format: BSON
       path: /var/lib/mongodb/audit_mongodb.bson
       filter: { atype: { $in: [ "dropIndex", "renameCollection", "dropCollection" ] }, "param.ns": /^user_profile\\./ } }

    特定の役割の監査プロセスを監視することもできます。フィルターで役割とデータベースを定義する必要があります:

    auditLog:
       destination: file
       format: BSON
       path: /var/lib/mongodb/audit_mongodb.bson
       filter: { roles: { role: "readWrite", db: "user_profile" } }

    user_profileデータベースにreadWriteロールを持つユーザーに関連するすべてのアクションをログに記録します。

    書き込みおよび読み取り操作の監査ログを作成するには、最初にMongoDBでauditAuthorizationSuccessを有効にする必要があります。以下のコマンドを実行できます:

    db.adminCommand( { setParameter: 1, auditAuthorizationSuccess: true } )

    または別のオプションは、mongod.confの以下を以下のように変更することです:

    auditLog:
       destination: file
       format: BSON
       path: /var/lib/mongodb/audit_mongodb.bson
       filter: { roles: { role: "readWrite", db: "user_profile" } }
    setParameter: { auditAuthorizationSuccess: true }
    
    

    Percona Server for MongoDBは監査ログ機能を無料で提供しますが、MongoDBではEnterpriseEditionでのみ使用できます。パラメータを有効にすると、特に本番環境で、MongoDBのデータベースパフォーマンスに影響を与えることに注意してください。

    次は何ですか?

    MongoDB監査ログをログ管理システムに送信できます。例:ELK(Elasticsearch、Logstash、Kibana)スタック、またはプロバイダーのログ管理システムを分析目的で使用できます。

    最も簡単な方法は、Linux環境でjqツールユーティリティを使用して、JSONまたはBSON形式でログを読み取ることです。


    1. oplog.rsのtsフィールドのインデックスは更新されません

    2. StackExchangeRedisChannelPrefixがキーをスコープしない

    3. 流星コレクションのクエリでグループ化

    4. ClusterControlを使用したエージェントレスデータベースモニタリング