setAuditConfig
重要
バージョン7.1では非推奨 : 代わりに、 auditConfig
クラスター パラメータを使用してください。
定義
setAuditConfig
バージョン 5.0 で追加
setAuditConfig
は、実行時にmongod
} サーバー インスタンスとmongos
サーバー インスタンスの新しい監査構成を設定する管理コマンドです。db.adminCommand( { command } )
メソッドを使用して、admin
データベースに対してsetAuditConfig
を実行します。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
重要
このコマンドは、 MongoDB Atlasクラスターではサポートされていません。 すべてのコマンドの Atlas サポートの詳細については、「 サポートされていないコマンド 」を参照してください。
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { setAuditConfig: 1, filter: <Filter Document>, auditAuthorizationSuccess: <Boolean> } )
コマンドフィールド
コマンドには次のフィールドがあります:
フィールド | タイプ | 説明 |
---|---|---|
setAuditConfig | integer | 実行する setAuditConfig |
filter | ドキュメント | |
auditAuthorizationSuccess | ブール値 | アクセス認可のすべてまたは失敗のみをログに記録 |
動作
実行時に setAuditConfig
を使用するように 監査 を有効にします。
auditAuthorizationSuccess
は、 authCheckアクションの認可成功の監査を有効にします。 読み取り操作と書込み操作を監査するには、パラメータ値がtrue
である必要があります。 ただし、 auditAuthorizationSuccess
がfalse
の場合、 監査システムは認可の失敗のみをログに記録するため、監査によるパフォーマンスへの影響は少なくなります。
構成の更新はoplogメカニズムを介して分散されるため、 mongod
ノードの更新はセカンダリ ノードにすばやく分散されます。 mongos
ノードには別の分散メカニズムがあります。 mongos
ノードは、構成更新のために定期的にプライマリ サーバーをpoll
する必要があります。 setAuditConfig
シャードがプライマリgetAuditConfig
サーバーでアップデートされた構成の詳細をポーリングする前に、プライマリ サーバーで を実行し、 シャード で を実行すると、ポーリング遅延により古いデータが表示される可能性があります。
例
これらの例では、監査メッセージが再フォーマットされています。 これらはログファイルの 1 行に表示されます。
コレクションの作成と削除を監査する
コレクションが作成または削除されたときに監査を有効にします。
db.admin.runCommand( { setAuditConfig: 1, filter: { atype: { $in: [ "createCollection", "dropCollection" ] } }, auditAuthorizationSuccess: false } )
inventory
コレクションがsales
データベースに作成されると、監査システムは次のようなメッセージをログに記録します。
{ "atype" : "createCollection", "ts" : { "$date" : "2021-08-09T13:45:05.372+00:00" }, "uuid" : { "$binary" : "RKU/YLizS6K9se2GUU7ZVQ==", "$type" : "04" }, "local" : { "ip" : "127.0.0.1", "port" : 27502 }, "remote" : { "ip" : "127.0.0.1", "port" : 51918 }, "users" : [], "roles" : [], "param" : { "ns" : "sales.inventory" }, "result" : 0 }
inventory
コレクションがsales
データベースから削除されると、監査システムは次のようなメッセージをログに記録します。
{ "atype" : "dropCollection", "ts" : { "$date" : "2021-08-09T13:45:00.661+00:00" }, "uuid" : { "$binary" : "0gle4/pSQli+LUcz43ykag==", "$type" : "04" }, "local" : { "ip" : "127.0.0.1", "port" : 27502 }, "remote" : { "ip" : "127.0.0.1", "port" : 51928 }, "users" : [], "roles" : [], "param" : { "ns" : "sales.inventory" }, "result" : 0 }
ドキュメント インタラクションの監査
auditAuthorizationSuccess
をtrue
に設定し、読み取り操作と書込み操作を監査する重要なアクションを含むフィルターを作成します。
db.admin.runCommand( { setAuditConfig: 1, filter: { atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ] } }, auditAuthorizationSuccess: true } )
find
コマンドを使用して、 sales
データベースのinventory
コレクションを検索し、次のような監査ログ エントリを作成します。
{ "atype" : "authCheck", "ts" : { "$date" : "2021-08-09T15:28:10.788+00:00" }, "uuid" : { "$binary" : "ngwRt5CRTZqgE4TsfleoqQ==", "$type" : "04" }, "local" : { "ip" : "127.0.0.1", "port" : 27502 }, "remote" : { "ip" : "127.0.0.1", "port" : 51930 }, "users" : [], "roles" : [], "param" : { "command" : "find", "ns" : "sales.inventory", "args" : { "find" : "inventory", "filter" : { "widget" : 1 }, "lsid" : { "id" : { "$binary" : "FNWNxiitQ8GHKrHx8eJSbg==", "$type" : "04" } }, "$clusterTime" : { "clusterTime" : { "$timestamp" : { "t" : 1628521381, "i" : 1 } }, "signature" : { "hash" : { "$binary" : "AAAAAAAAAAAAAAAAAAAAAAAAAAA=", "$type" : "00" }, "keyId" : { "$numberLong" : "0" } } }, "$db" : "sales" } }, "result" : 0 }