审计日志记录
对于许多安全环境,都需要记录所有用户管理操作。为此,ActiveMQ Classic 实现了审计日志记录,这意味着通过 JMX 或 Web 控制台管理界面进行的每个管理操作都将被记录下来,以便日后检查。
审计日志记录在分发中预先配置,因此开启或关闭它非常容易。您只需设置 org.apache.activemq.audit
系统属性。从 5.16.0 版本开始,该值可以是 “true|entry|exit|all” 之一。当值为 all 或 exit 时,审计会捕获 JMX 操作完成的时间。您可以通过在启动脚本中取消注释以下行来实现这一点
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS -Dorg.apache.activemq.audit=true"
默认情况下,实际日志存储在 ${ACTIVEMQ_HOME}/data/audit.log
中,对于安全的代理,您可能希望看到类似以下内容的条目
2010-12-22 12:12:07,225 | INFO | admin requested /admin/createDestination.action [JMSDestination='test' JMSDestinationType='queue' secret='4eb0bc3e-9d7a-4256-844c-24f40fda98f1' ] from 127.0.0.1 | qtp12205619-39
2010-12-22 12:12:14,512 | INFO | admin requested /admin/purgeDestination.action [JMSDestination='test' JMSDestinationType='queue' secret='eff6a932-1b58-45da-a64a-1b30b246cfc9' ] from 127.0.0.1 | qtp12205619-36
2010-12-22 12:12:17,802 | INFO | admin requested /admin/sendMessage.action [JMSTimeToLive='' JMSXGroupSeq='' AMQ_SCHEDULED_DELAY='' JMSType='' JMSMessageCountHeader='JMSXMessageCounter' JMSXGroupID='' JMSReplyTo='' JMSDestination='test' AMQ_SCHEDULED_PERIOD='' JMSText='Enter some text
here for the message body...' JMSDestinationType='queue' AMQ_SCHEDULED_CRON='' JMSCorrelationID='' AMQ_SCHEDULED_REPEAT='' JMSMessageCount='1' secret='a0e1df62-14d6-4425-82a2-17aa01a16e7d' JMSPriority='' ] from 127.0.0.1 | qtp12205619-37
...
2010-12-22 12:12:57,553 | INFO | admin called org.apache.activemq.broker.jmx.QueueView.purge[] | RMI TCP Connection(8)-192.168.1.107
2010-12-22 12:13:21,976 | INFO | admin called org.apache.activemq.broker.jmx.QueueView.resetStatistics[] | RMI TCP Connection(8)-192.168.1.107
2010-12-22 12:13:32,457 | INFO | admin called org.apache.activemq.broker.jmx.QueueView.sendTextMessage[message] | RMI TCP Connection(6)-192.168.1.107
在此示例中,您可以看到通过 Web 控制台或 JMX 执行的操作的示例条目。日志条目包含以下信息:
- 用户名(如果可用),否则为 “anonymous”
- 执行的操作,在 JMX 的情况下是方法名称,如果操作是在 web 上执行的,则为请求 URL
- 用于该操作的参数和
- 执行该操作的 IP 地址
可以在 ${ACTIVEMQ_HOME}/conf/log4j.properties
中配置审计日志的默认位置