【MongoDB】MongoDB 社区版开启审计日志

MongoDB 社区版是否支持开启审计日志功能?

MongoDB社区版(Community Edition)提供了审计日志功能。

从MongoDB 2.6版本开始,就引入了审计功能,但只有企业版才能享受全部的审计功能。
在社区版中,仅支持基本的审计日志记录,包括对数据库、集合和用户操作的跟踪。
要注意的是,具体的支持情况可能会因不同的MongoDB版本而有所变化,所以建议查阅官方文档或最新的发布说明来获取更准确的信息。

从MongoDB 4.0版本开始,审计日志功能成为了社区版的一部分。

通过启用审计日志,您可以记录MongoDB中发生的各种数据库操作和管理员活动,以便进行安全审计和追踪。

审计日志记录的内容包括用户登录、数据库命令、集合操作、索引操作、用户管理等。
您可以根据自己的需求选择记录的详细级别,并将日志输出到文件或发送到其他目标(如Syslog)。

请参考我之前提供的步骤,按照配置文件中的相关设置,启用和配置MongoDB的审计日志功能。

MongoDB 社区版,如果开启审计日志?

要在MongoDB社区版中启用审计日志,您可以按照以下步骤进行操作:

  1. 打开MongoDB配置文件:可以在MongoDB的安装目录下找到mongod.conf文件(Windows系统)或/etc/mongod.conf文件(Linux系统)。

  2. 在配置文件中找到systemLog部分,并确保启用了日志记录。如果尚未启用,请将systemLog部分的destination设置为日志文件的路径,例如:

    systemLog:
      destination: file
      path: /var/log/mongodb/mongod.log
      logAppend: true
    
  3. 在配置文件中找到auditLog部分,并确保启用了审计日志。如果尚未启用,请将auditLog部分的destination设置为日志文件的路径,例如:

    auditLog:
      destination: file
      path: /var/log/mongodb/audit.log
      format: JSON
    
  4. 保存并关闭配置文件。

  5. 重启MongoDB服务,以便使更改生效。

启用审计日志后,MongoDB将记录所有数据库操作和管理员活动,并将其写入指定的审计日志文件中。您可以使用文本编辑器或日志阅读器来查看和分析生成的审计日志。

请注意,启用审计日志可能会对系统性能产生一定的影响,因此在生产环境中,请谨慎考虑启用审计日志,并确保在设定日志文件路径时考虑到存储空间的需求。

如何不通过配置文件,如何通过命令行,在启动mongd进程时,开启启审计日志?

您可以通过命令行参数在启动mongod进程时启用审计日志。以下是在命令行中启用审计日志的步骤:

  1. 打开终端或命令提示符,然后使用以下命令启动mongod进程,并指定必要的参数:

    mongod --auditDestination=file --auditFormat=json --auditPath=/var/log/mongodb/audit.log
    
    • --auditDestination=file:将审计日志写入文件。
    • --auditFormat=json:指定审计日志的格式为JSON。
    • --auditPath=/var/log/mongodb/audit.log:指定审计日志文件的路径。

除了JSON格式,MongoDB还支持以下两种审计日志格式:

1. `BSON`格式:BSON格式是MongoDB的二进制JSON表示形式。您可以使用`--auditFormat=bson`参数将审计日志设置为BSON格式。

2. `Legacy`格式:`Legacy`格式是MongoDB旧版本中使用的审计日志格式。使用`--auditFormat=legacy`参数可以将审计日志设置为此格式。

请注意,从MongoDB 4.4版本开始,默认的审计日志格式已更改为JSON格式。如果您不指定`--auditFormat`参数,则默认使用JSON格式。

根据您的需求和环境,选择适合的审计日志格式。JSON格式通常更易于解析和处理,但如果您需要与旧版本的MongoDB兼容,可以选择使用BSON或Legacy格式。

请根据实际需求修改日志文件路径和其他参数。

  1. 执行命令后,mongod进程将以启用审计日志的方式启动,并将所有审计日志写入指定的文件中。

请注意,通过命令行参数启用审计日志仅对当前启动的mongod进程有效。
如果您希望持久地启用审计日志,建议将相应的参数配置在mongod的配置文件中(如mongod.conf),以便在每次启动时自动应用配置。

如何不重启MongoDB,实现开启MongoDB 审计日志?

当您需要在不重启 MongoDB 的情况下启用审计日志并设置审计日志文件的路径和格式时,可以按照以下步骤进行操作:

  1. 进入 MongoDB 的 shell,可以使用 mongo 命令进入 shell。

  2. 切换到 admin 数据库:

    use admin
    
  3. 运行以下命令启用审计日志并设置文件路径和格式:

    db.adminCommand({
      setParameter: 1,
      auditLogDestination: "file",
      auditLogPath: "/path/to/audit.log",
      auditLogFormat: "JSON"
    })
    

    /path/to/audit.log 替换为您希望保存审计日志的实际路径和文件名。

    上述命令将设置以下参数:

    • auditLogDestination:指定审计日志的输出方式为文件,设置为 "file"
    • auditLogPath:指定审计日志文件的路径和名称。
    • auditLogFormat:指定审计日志的格式为 JSON。
  4. 确认参数设置成功后,审计日志将开始记录到指定的文件中,并使用指定的格式。

请注意,以上步骤中的 /path/to/audit.log 应替换为您希望保存审计日志的实际路径和文件名。执行上述命令后,MongoDB 将开始将审计日志记录到指定的文件中,并使用指定的格式,而无需重启 MongoDB。

如果需要禁用审计日志,您可以执行以下命令:

db.adminCommand({setParameter: 1, auditLogDestination: "", auditLogPath: "", auditLogFormat: ""})

这将清除审计日志相关的参数设置,停止记录审计日志。

MongoDB 开启审计日志的操作,primary节点和secondary节点上都要操作吗?

对于 MongoDB 的复制集(replica set),开启审计日志的操作只需要在 primary 节点上进行,然后该设置会自动同步到其他 secondary 节点。

在 MongoDB 的复制集中,primary 节点是处理写操作并负责复制数据到其他 secondary 节点的节点。一旦在 primary 节点上开启了审计日志,副本集的其他节点将自动同步该设置,并开始记录审计日志。

因此,您只需要在 primary 节点上执行开启审计日志的操作,无需在每个 secondary 节点上单独进行设置。主节点会负责将设置同步到其他节点,以确保整个复制集都具有相同的审计日志配置。

请注意,如果您的 MongoDB 部署不是复制集,而是分片集群(sharded cluster),则需要在每个分片的 primary 节点上进行审计日志的设置。每个分片都是独立的 MongoDB 环境,需要单独进行配置。

MongoDB 审计日志大概记录的内容是什么?

MongoDB 审计日志记录了对数据库的各种操作,包括用户的登录、查询、更新、删除等操作。下面是一些审计日志记录的示例内容:

  1. 用户登录活动:

    {
      "atype" : "authenticate",
      "ts" : ISODate("2021-10-01T10:00:00.000Z"),
      "local" : {
        "ip" : "127.0.0.1",
        "port" : 27017
      },
      "remote" : {
        "ip" : "192.168.0.100",
        "port" : 54321
      },
      "users" : [
        {
          "user" : "admin",
          "db" : "admin"
        }
      ],
      "extra_info" : {
        "authentication_mechanism" : "SCRAM-SHA-256"
      }
    }
    

    上述日志记录了在时间戳为 2021-10-01T10:00:00.000Z 时,来自 IP 地址 192.168.0.100 端口 54321 的用户使用 SCRAM-SHA-256 机制进行身份验证,登录到 "admin" 数据库的活动。

  2. 查询操作活动:

    {
      "atype" : "query",
      "ts" : ISODate("2021-10-02T15:30:00.000Z"),
      "local" : {
        "ip" : "127.0.0.1",
        "port" : 27017
      },
      "users" : [
        {
          "user" : "user1",
          "db" : "mydb"
        }
      ],
      "dbname" : "mydb",
      "command" : {
        "find" : "collection1",
        "filter" : {
          "field1" : "value1"
        }
      }
    }
    

    上述日志记录了在时间戳为 2021-10-02T15:30:00.000Z 时,来自 IP 地址 127.0.0.1 端口 27017 的用户 "user1" 在 "mydb" 数据库中执行了一个查询操作,查找 "collection1" 集合中 "field1" 等于 "value1" 的文档。

  3. 更新操作活动:

    {
      "atype" : "update",
      "ts" : ISODate("2021-10-03T08:45:00.000Z"),
      "local" : {
        "ip" : "127.0.0.1",
        "port" : 27017
      },
      "users" : [
        {
          "user" : "user2",
          "db" : "mydb"
        }
      ],
      "dbname" : "mydb",
      "command" : {
        "update" : "collection2",
        "updates" : [
          {
            "q" : {
              "field2" : "value2"
            },
            "u" : {
              "$set" : {
                "field3" : "updated value"
              }
            },
            "multi" : false
          }
        ]
      }
    }
    

    上述日志记录了在时间戳为 2021-10-03T08:45:00.000Z 时,来自 IP 地址 127.0.0.1 端口 27017 的用户 "user2" 在 "mydb" 数据库中执行了一个更新操作,将 "collection2" 集合中 "field2" 等于 "value2" 的文档的 "field3" 字段更新为 "updated value"。

这些示例说明了MongoDB审计日志记录的内容,其中包括操作类型、时间戳、相关用户和数据库、操作的具体命令等信息,以便管理员进行审计和跟踪数据库活动。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容