Я работаю над системой, которая получает новые данные от Amazon GuardDuty . Большая часть доступа в нашей организации делегируется ролям IAM, а не напрямую пользователям, поэтому результаты обычно являются результатом действий предполагаемых ролей, а идентификатор субъекта при обнаружении GuardDuty выглядит примерно так:
"resource": {
"accessKeyDetails": {
"accessKeyId": "ASIALXUWSRBXSAQZECAY",
"principalId": "AROACDRML13PHK3X7J1UL:129545928468",
"userName": "my-permitted-role",
"userType": "AssumedRole"
},
"resourceType": "AccessKey"
},
Я знаю, что accessKeyId
создается, когда участник безопасности выполняет действие iam:AssumeRole
. Но я не могу сказать , кто взял на себя эту роль в первую очередь! Если это был пользователь IAM, я хочу знать имя пользователя. Есть ли способ программно сопоставить временные AWS ключи STS (начинающиеся с ASIA
...) с исходным пользователем?
В идеале я ищу метод, который выполняется менее чем за 30 секунд поэтому я могу использовать его как часть моего конвейера событий безопасности, чтобы обогатить результаты GuardDuty недостающей информацией.
Я уже просмотрел aws -cli и нашел aws cloudtrail lookup-events
, но у него нет возможности сузить запрос к указанному c accessKeyId, поэтому для его выполнения требуется loooong времени. Я исследовал консоль CloudTrail, но здесь она примерно такая же, как aws -cli. Я попытался сохранить журналы CloudTrail на S3 и запустить запрос Athena, но это тоже было довольно медленно.
Похоже, это обычное требование. Есть ли что-то очевидное, что мне не хватает?