@@ -222,25 +222,38 @@ def run(self):
222222 time .sleep (.1 )
223223
224224 def on_message (self , message ):
225- message ['category' ] = 'cloudtrail'
226- message ['utctimestamp' ] = toUTC (message ['eventTime' ]).isoformat ()
227- message ['receivedtimestamp' ] = toUTC (datetime .now ()).isoformat ()
228- message ['mozdefhostname' ] = socket .gethostname ()
229- message ['hostname' ] = message ['eventSource' ]
230- message ['processid' ] = os .getpid ()
231- message ['processname' ] = sys .argv [0 ]
232- message ['severity' ] = 'INFO'
233- summary_str = "{0} performed {1} in {2}" .format (
234- message ['sourceIPAddress' ],
235- message ['eventName' ],
236- message ['eventSource' ]
237- )
238- message ['summary' ] = summary_str
239- message ['eventVerb' ] = CLOUDTRAIL_VERB_REGEX .findall (
240- message ['eventName' ])[0 ]
241- message ['eventReadOnly' ] = (
242- message ['eventVerb' ] in ['Describe' , 'Get' , 'List' ])
243- es .save_event (body = message , doc_type = 'cloudtrail' , bulk = True )
225+ returndict = dict ()
226+
227+ returndict ['category' ] = 'cloudtrail'
228+ returndict ['source' ] = 'cloudtrail'
229+ returndict ['details' ] = {}
230+ returndict ['utctimestamp' ] = toUTC (message ['eventTime' ]).isoformat ()
231+ returndict ['receivedtimestamp' ] = toUTC (datetime .now ()).isoformat ()
232+ returndict ['mozdefhostname' ] = socket .gethostname ()
233+ returndict ['hostname' ] = message ['eventSource' ]
234+ returndict ['processid' ] = str (os .getpid ())
235+ returndict ['processname' ] = sys .argv [0 ]
236+ returndict ['severity' ] = 'INFO'
237+ returndict ['tags' ] = ['cloudtrail' ]
238+
239+ if 'sourceIPAddress' in message and 'eventName' in message and 'eventSource' in message :
240+ summary_str = "{0} performed {1} in {2}" .format (
241+ message ['sourceIPAddress' ],
242+ message ['eventName' ],
243+ message ['eventSource' ]
244+ )
245+ returndict ['summary' ] = summary_str
246+
247+ if 'eventName' in message :
248+ # Uppercase first character
249+ verb_name = message ['eventName' ][0 ].upper () + message ['eventName' ][1 :]
250+ returndict ['eventVerb' ] = CLOUDTRAIL_VERB_REGEX .findall (verb_name )[0 ]
251+ returndict ['eventReadOnly' ] = (returndict ['eventVerb' ] in ['Describe' , 'Get' , 'List' ])
252+
253+ # Save original message for now since we're dropping other fields
254+ returndict ['raw_msg' ] = json .dumps (message )
255+
256+ es .save_event (body = returndict , doc_type = 'cloudtrail' , bulk = True )
244257
245258
246259def registerPlugins ():
0 commit comments