自己管理型配置での監査フィルターの構成
注意
MongoDB Atlas での監査
MongoDB Atlas は、すべての M10
以上のクラスターの監査をサポートしています。 Atlas は、以下に記載されているように JSON 形式の監査フィルターの指定と、簡素化された監査構成のための Atlas 監査フィルタービルダの使用をサポートしています。 詳しくは、Atlas のドキュメント におけるドキュメントの「 データベース監査の設定 」および「 カスタム監査フィルターの構成 」を参照してください。
MongoDB Enterpriseは、さまざまな操作の監査をサポートしています。 監査機能を有効にすると、監査機能はデフォルトで、監査イベントのアクション、詳細、 結果 で詳しく説明されるように、すべての監査可能な操作を記録します。 イベント フィルターを指定して、記録されるイベントを制限できます。
監査フィルターは、スタートアップ時に構成することも、実行時にフィルター構成を許可するように MongoDB を構成することもできます。
監査フィルター構文
監査フィルターは、 find
コマンドに指定されたクエリ述語ドキュメントと同じ形式です。 監査フィルターの例については、「例 」を参照してください。
実行時にフィルター構成
MongoDB 5.0 以降、mongod
ノードとmongos
ノードの監査を実行時に構成することができます。これらのノードのグループを、分散監査構成に含めることができます。
分散監査構成にノードを含めるには、ノードの構成ファイルを次のように更新し、サーバーを再起動します。
Parameter | 値 |
---|---|
true | |
設定解除 | |
設定解除 |
次の場合、サーバーはエラーを記録し、起動に失敗します。
runtimeConfiguration
がtrue
であり、auditLog.filter
またはauditAuthorizationSuccess
のいずれかが設定されている。
実行時に監査フィルターと auditAuthorizationSuccess
パラメーターを変更するには、setAuditConfig
を参照してください。
システム起動時のフィルタ構成
監査フィルターは、コマンドラインで指定することも、 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" } }'
読み取り操作と書込み (write) 操作でのフィルタリング
監査で読み取り操作と書込み操作を取得するには、 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 }
コレクションの読み取り操作と書込み (write) 操作でフィルタリング
監査で読み取り操作と書込み操作を取得するには、 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 }
最上位クエリ演算子の指定($or)
複数の監査メッセージ フィールドでフィルタリングするには、 $or
のような最上位のクエリ演算子を指定できます。 たとえば、次のフィルターは、 atype
がauthenticate
であるか、 または 操作が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] | ( 1 、 2 ) --auth を有効にせずにauditAuthorizationSuccess パラメータを有効にできます。ただし、すべての操作は認可チェックに成功を返します。 |