Docs Menu

自己管理型配置での監査フィルターの構成

注意

MongoDB Atlas での監査

MongoDB Atlas は、すべてのM10以上のクラスターの監査をサポートしています。 Atlas は、以下に記載されているように JSON 形式の監査フィルターの指定と、簡素化された監査構成のための Atlas 監査フィルタービルダの使用をサポートしています。 To learn more, see the Atlas documentation for Set Up Database Auditing and Configure a Custom Auditing Filter.

MongoDB Enterpriseは、さまざまな操作の監査をサポートしています。 監査機能を有効にすると、監査機能はデフォルトで、監査イベントのアクション、詳細、 結果 で詳しく説明されるように、すべての監査可能な操作を記録します。 イベント フィルターを指定して、記録されるイベントを制限できます。

監査フィルターは、スタートアップ時に構成することも、実行時にフィルター構成を許可するように MongoDB を構成することもできます。

監査フィルターは、 findコマンドに指定されたクエリ述語ドキュメントと同じ形式です。 監査フィルターの例については、「例 」を参照してください。

MongoDB 5.0 以降、mongod ノードとmongos ノードの監査を実行時に構成することができます。これらのノードのグループを、分散監査構成に含めることができます。

分散監査構成にノードを含めるには、ノードの構成ファイルを次のように更新し、サーバーを再起動します。

次の場合、サーバーはエラーを記録し、起動に失敗します。

実行時に監査フィルターと auditAuthorizationSuccess パラメーターを変更するには、auditConfig を参照してください。

監査フィルターは、コマンドラインで指定することも、 mongodまたはmongosインスタンスの起動に使用される構成ファイルで指定することもできます。

フィルターは、構成ファイルauditLogセッションの下で YAML で指定できます。 サンプル構成については、以下の例を参照してください。

注意

runtimeConfigurationが有効になっている場合、構成ファイルを使用して監査フィルターを指定することはできません。

監査可能なイベントをすべて記録するには、監査フィルターを指定しないでください。 デフォルトでは、監査機能はすべての監査可能な操作を記録します。

次の例では、 フィルターを使用してcreateCollection } アクションとdropCollectionアクションのみを監査します。

{ atype: { $in: [ "createCollection", "dropCollection" ] } }

監査フィルターを指定するには、フィルター ドキュメントを一重引用符で囲み、ドキュメントを文字列として渡します。

mongod --dbpath data/db --auditDestination file --auditFilter '{ atype: { $in: [ "createCollection", "dropCollection" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson

構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。

構成ファイルで監査フィルターを指定するには、構成ファイルの YAML 形式を使用する必要があります。

storage:
dbPath: data/db
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: { $in: [ "createCollection", "dropCollection" ] } }'

<field>には、 監査メッセージ 内の任意のフィールドを含めることができます。 認証操作(つまり atype: "authenticate" )、監査メッセージにはparamドキュメントのdbフィールドが含まれています。

次の例では、 フィルターを使用して、 testデータベースに対して発生するauthenticate操作のみを監査します。

{ atype: "authenticate", "param.db": "test" }

監査フィルターを指定するには、フィルター ドキュメントを一重引用符で囲み、ドキュメントを文字列として渡します。

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ atype: "authenticate", "param.db": "test" }' --auditFormat BSON --auditPath data/db/auditLog.bson

構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。

構成ファイルで監査フィルターを指定するには、構成ファイルの YAML 形式を使用する必要があります。

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: "authenticate", "param.db": "test" }'

データベース全体ですべてのauthenticate操作でフィルタリングするには、 "param.db": "test"を省略し、フィルター{ atype: "authenticate" }を使用します。

<field>には、 監査メッセージ 内の任意のフィールドを含めることができます。 コレクションの作成と削除操作(つまり atype: "createCollection"atype: "dropCollection" )、監査メッセージにはparamドキュメントに 名前空間nsフィールドが含まれています。

次の例では、フィルターを使用して、 testデータベースに対して発生するcreateCollection操作とdropCollection操作のみを監査します。

注意

正規表現では、ドット( . )をエスケープするために 2 つのバックスラッシュ( \\ )が必要です。

{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ }

監査フィルターを指定するには、フィルター ドキュメントを一重引用符で囲み、ドキュメントを文字列として渡します。

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ }' --auditFormat BSON --auditPath data/db/auditLog.bson

構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。

構成ファイルで監査フィルターを指定するには、構成ファイルの YAML 形式を使用する必要があります。

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ }'

次の例では、readWrite testフィルターを使用して、 から継承するロールを持つユーザーを含む、readWrite データベースで ロールを持つユーザーによる操作を監査します。

{ roles: { role: "readWrite", db: "test" } }

監査フィルターを指定するには、フィルター ドキュメントを一重引用符で囲み、ドキュメントを文字列として渡します。

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ roles: { role: "readWrite", db: "test" } }' --auditFormat BSON --auditPath data/db/auditLog.bson

構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。

構成ファイルで監査フィルターを指定するには、構成ファイルの YAML 形式を使用する必要があります。

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ roles: { role: "readWrite", db: "test" } }'

監査で読み取り操作と書込み操作を取得するには、 auditAuthorizationSuccessパラメータを使用して監査システムが認可の成功をログに記録するようにする必要もあります。 [1]

注意

auditAuthorizationSuccessを有効にすると、認可の失敗のみをログに記録する場合よりもパフォーマンスが低下します。

このフィルターは、複数の読み取りおよび書込み操作を監査します。

{
atype: "authCheck",
"param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] }
}

監査された操作には、次のものが含まれます。

監査フィルターを指定するには、フィルター ドキュメントを一重引用符で囲み、ドキュメントを文字列として渡します。

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson

構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。

構成ファイルで監査フィルターを指定するには、構成ファイルの YAML 形式を使用する必要があります。

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }'
setParameter: { auditAuthorizationSuccess: true }

監査で読み取り操作と書込み操作を取得するには、 auditAuthorizationSuccessパラメータを使用して監査システムが認可の成功をログに記録するようにする必要もあります。 [1]

注意

auditAuthorizationSuccessを有効にすると、認可の失敗のみをログに記録する場合よりもパフォーマンスが低下します。

このフィルタは、 testデータベース内のordersコレクションに対する複数の読み取りおよび書込み操作を監査します。

{
atype: "authCheck",
"param.ns": "test.orders",
"param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] }
}

監査された操作には、次のものが含まれます。

監査フィルターを指定するには、フィルター ドキュメントを一重引用符で囲み、ドキュメントを文字列として渡します。

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ atype: "authCheck", "param.ns": "test.orders", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson

構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。

構成ファイルで監査フィルターを指定するには、構成ファイルの YAML 形式を使用する必要があります。

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: "authCheck", "param.ns": "test.orders", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }'
setParameter: { auditAuthorizationSuccess: true }

MongoDB 8.0 以降、MongoDB はログメッセージを OCSF 形式で書き込むことができます。OCSF スキーマには、デフォルトの mongo スキーマとは異なるフィールドが含まれています。

次の監査フィルターは、OCSF スキーマに記録されているネットワークアクティビティのアクションをキャプチャします。

{ category_uid: 4 }

監査フィルターを指定するには、フィルター ドキュメントを一重引用符で囲み、ドキュメントを文字列として渡します。

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ category_uid: 4 }' --auditFormat JSON --auditSchema OCSF --auditPath data/db/auditLog.json

構成ファイルで監査フィルターを指定するには、構成ファイルの YAML 形式を使用する必要があります。

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: JSON
path: data/db/auditLog.json
filter: '{ category_uid: 4 }'
schema: OCSF
setParameter: { auditAuthorizationSuccess: true }

OCSF ログメッセージの詳細については、「OCSF スキーマ監査メッセージ」を参照してください。

複数の監査メッセージ フィールドでフィルタリングするには、 $orのような最上位のクエリ演算子を指定できます。 たとえば、次のフィルターは、 atypeauthenticateであるか、 または 操作がreadWriteロールを持つユーザーによって実行された操作をキャプチャします。

{
$or: [
{ atype: "authenticate" },
{ "roles.role": "readWrite" }
]
}

監査フィルターを指定するには、フィルター ドキュメントを一重引用符で囲み、ドキュメントを文字列として渡します。

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ $or: [ { atype: "authenticate" }, { "roles.role": "readWrite" } ] }' --auditFormat BSON --auditPath data/db/auditLog.bson

構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。

構成ファイルで監査フィルターを指定するには、構成ファイルの YAML 形式を使用する必要があります。

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ $or: [ { atype: "authenticate" }, { "roles.role": "readWrite" } ] }'
[1]12 --authを有効にせずにauditAuthorizationSuccessパラメータを有効にできます。ただし、すべての操作は認可チェックに成功を返します。