1- import copy
21import logging
32from spaceone .core .manager import BaseManager
43from spaceone .monitoring .conf .monitoring_conf import *
@@ -41,25 +40,10 @@ def lookup_events(self, params):
4140 events .extend (_events )
4241
4342 if resource_type == 'AWS::IAM::User' :
44- region_names = self .list_regions (params )
43+ events . extend ( self .get_events_iam_user (params ) )
4544
46- console_login_target_user_name = ''
47- iam_user_params = copy .deepcopy (params )
48- iam_user_params ['query' ]['LookupAttributes' ] = \
49- [{'AttributeKey' : 'EventSource' , 'AttributeValue' : 'signin.amazonaws.com' }]
50-
51- _lookup_attr = params .get ('query' , {}).get ('LookupAttributes' , [])
52- if _lookup_attr :
53- console_login_target_user_name = _lookup_attr [0 ].get ('AttributeValue' , '' )
54-
55- for region_name in region_names :
56- cloudtrail_connector .set_client (region_name )
57- for iam_user_events in cloudtrail_connector .lookup_events (iam_user_params ):
58- for _user_event in iam_user_events :
59- if _user_event .get ('Username' ) == console_login_target_user_name :
60- events .append (_user_event )
61-
62- events = sorted (events , key = lambda event : event .get ('EventTime' ), reverse = True )
45+ if resource_type == 'AWS::IAM::AccessKey' :
46+ events .extend (self .get_events_iam_access_key (params ))
6347
6448 return [events ]
6549
@@ -78,6 +62,36 @@ def set_events(self, events, keyword, resource_type):
7862
7963 return event_vos
8064
65+ def get_events_iam_user (self , params ):
66+ events = []
67+
68+ cloudtrail_connector : CloudTrailConnector = self .locator .get_connector ('CloudTrailConnector' , ** params )
69+ region_names = self .list_regions (params )
70+
71+ console_login_target_user_name = ''
72+
73+ for region_name in region_names :
74+ cloudtrail_connector .set_client (region_name )
75+ for iam_user_events in cloudtrail_connector .lookup_events (params ):
76+ for _user_event in iam_user_events :
77+ if _user_event .get ('Username' ) == console_login_target_user_name :
78+ events .append (_user_event )
79+
80+ return sorted (events , key = lambda event : event .get ('EventTime' ), reverse = True )
81+
82+ def get_events_iam_access_key (self , params ):
83+ events = []
84+
85+ cloudtrail_connector : CloudTrailConnector = self .locator .get_connector ('CloudTrailConnector' , ** params )
86+ region_names = self .list_regions (params )
87+
88+ for region_name in region_names :
89+ cloudtrail_connector .set_client (region_name )
90+ for access_key_events in cloudtrail_connector .lookup_events (params ):
91+ events .extend (access_key_events )
92+
93+ return sorted (events , key = lambda event : event .get ('EventTime' ), reverse = True )
94+
8195 @staticmethod
8296 def filter_resource_type (event , resource_type ):
8397 if event ['EventName' ] in EXCLUDE_EVENT_NAME :
0 commit comments