MongoDB安全实战之审计

邓开表同学实战MongoDB系列文章,非常不错,赞!大力推荐!

本文主要讲诉MongoDB的审计能力。在数据库安全的生命周期中,包括:保护、检测、响应及补救。检测的核心就是审计(Audit)。有些情况下,审计不仅仅用于检测不好的行为,也作为对整个数据库的行为进行监控而存在。审计能够告诉我们谁访问了什么、在什么地方、什么时间、采用了何种方式。

1

1、前言

在数据库安全的生命周期中,包括:保护、检测、响应及补救。检测的核心就是审计(Audit)。有些情况下,审计不仅仅用于检测不好的行为,也作为对整个数据库的行为进行监控而存在。审计能够告诉我们谁访问了什么、在什么地方、什么时间、采用了何种方式。

有效的审计不仅仅意味着安全,也有助于数据库整体的完善。

MongoDB企业版包括审计mongod服务和mongos路由器能力。允许管理员和用户跟踪系统活动,支持各种操作审计。一个完整的审计解决方案必须包括所有的mongod服务和mongos路由器进程。

MongoDB的审计机构能够将审计事件日志以输出在控制台(console),syslog,JSON文件或一个BSON文件四种方式显示。具体如何配置审计,步骤如下:

2

2、启用和配置审计的输出格式

使用--auditDestination配置项来启用MongoDB审计和指定输出的审计事件。

2.1

2.1 审计日志输出到syslog,如:

mongod --dbpath /var/lib/mongo --auditDestination syslog

或者,在MongoDB配置文件设置,如下:

auditLog:

destination: syslog

2.2

2.2 审计日志输出到console控制台

mongod --dbpath /var/lib/mongo --auditDestination console

或者,在MongoDB配置文件添加以下配置:

auditLog:

destination: console

2.3

2.3与console、syslog不同,为了使审计以一个JSON格式文件输出审计事件,需要指定auditDestination设置文件,并设置--auditFormat JSON,输出文件名--auditpath路径。

mongod --dbpath /var/lib/mongo --auditDestination file --auditFormat JSON --auditPath /var/lib/mongo/auditLog.json

或者,在MongoDB配置文件添加以下配置:

auditLog:

destination: file

format: JSON

path: /var/lib/auditLog.json

2.4

2.4与JSON文件相似,以BSON格式输出审计事件,需要设置--auditDestination为文件file,以及设置--auditFormat、--auditPath这两个配置项。

mongod --dbpath /var/lib/mongo --auditDestination file --auditFormat BSON --auditPath /var/lib/mongo/auditLog.bson

或者,在MongoDB配置文件添加以下配置:

auditLog:

destination: file

format: BSON

path: /var/lib/auditLog.bson

使用bosndump命令将bosn文件转换成可读的信息输出在终端:

bsondump /var/lib/mongo/auditLog.bson

注意:JSON和BSON输出格式相比,以JSON格式输出对服务器性能影响比较大。

4.14.1

3

3、配置审计过滤器

MongoDB Enterprise版本支持各种操作的审计。当开启MongoDB审计时,默认情况下,记录所有审计操作,在审计事件的动作,详细信息和结果。如果需要指定要记录的事件,审计的特征,则在--auditFilter配置项。

--auditFilter配置项以一个查询文档的字符串格式表示。语法如下:

{:,...}

: 可以在审计信息的任何内容领域,包括在文档返回字段。

: 指查询条件的表达式。

3.1

3.1 审计内容领域主要包括以下:

表1

3.2

3.2审计事件行为,细节信息和结果

以下表2列出了每一个atype的相关参数细节和结果值:

表2

例子1:

使用审计过滤器记录createCollection和dropCollection行为的审计。

mongod --dbpath /var/lib/mongo \

--auditDestination file \

--auditFilter ‘{ atype : {$in: [“createCollection”,”dropCollection”] } }’ \

--auditFormat BSON \

--auditPath /var/lib/mongo/auditLog.bson

或者,在MongoDB配置文件添加以下配置:

auditLog:

destination: file

format: BSON

path: /var/lib/mongo/auditLog.bson

filter: ‘{ atype : {$in: [“createCollection”,”dropCollection” ] } }’

模拟在创建一个集合之后,再删除掉集合:

查看BSON审计输出文件信息:

bsondump /var/lib/mongo/auditLog.bson

上面审计输出文件信息分别显示了,创建集合的时间,创建服务ip和端口及远程连接终端ip和端口及返回结果代码;删除集合的时间,创建服务ip和端口及远程终端ip和端口及返回结果代码。

加入技术讨论群

《大数据和云计算技术》社区群人数已经2500+,欢迎大家加下面助手微信,拉大家进群,自由交流。

喜欢钉钉扫码下面的群:

喜欢QQ群的,可以扫描下面二维码:

欢迎大家通过二维码打赏支持技术社区(英雄请留名,社区感谢您,打赏次数超过50+):

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180203B04XVP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券