Есть ли более эффективный способ найти все события cloudtrail в AWS, выполняемые определенной ролью c? - PullRequest
0 голосов
/ 23 января 2020

Мне нужно проанализировать все события cloudtrail внутри учетной записи (на самом деле несколько учетных записей, но пока я ограничиваюсь одной) - однако у меня нет прямого доступа к корзине S3, где хранятся события.

Мне нужно найти все события, инициированные любой ролью, которая соответствует шаблону. Причина этого заключается в том, что мне нужно рассчитать расходы на охрану, связанные с приложением, которое выполняет вызовы API.

У меня есть скрипт, который работает (он просто скомпонован в данный момент), однако это ОЧЕНЬ медленнее, так как он анализирует миллионы событий Cloudtrail.

Есть ли лучший способ получить нужные мне данные?

import boto3
from datetime import datetime
import json

session = boto3.Session(profile_name='<profile_name_here>')
client = session.client('cloudtrail')

total_events = 0
target_events = 0
start_time = datetime(2020, 1, 22)
guard_duty_cost = 0.0000044

paginator = client.get_paginator('lookup_events')

response_iterator = paginator.paginate(
    StartTime = start_time,
    MaxResults = 1000
)

y = 1

for response in response_iterator:
    events = response['Events']
    print('Processing response {}'.format(y))
    y += 1
    for event in events:
        total_events += 1
        cloudtrail_event = event['CloudTrailEvent']
        cloudtrail_event_json = json.loads(cloudtrail_event)
        user_identity = cloudtrail_event_json['userIdentity']
        if 'sessionContext' in user_identity:
            user_name = user_identity['sessionContext']['sessionIssuer']['userName']
            if '<target_role_pattern>' in user_name:
                target_events += 1       

total_cost = guard_duty_cost * total_events
target_cost = guard_duty_cost * target_events

print('Total number of events since {} is {} - cost EUR {}'.format(start_time, total_events, total_cost))
print('Number of target events since {} is {} - cost EUR {}'.format(start_time, target_events, target_cost))


1 Ответ

0 голосов
/ 23 января 2020

Возможно, вам следует рассмотреть возможность использования AWS Athena для этого - но вам понадобится доступ к корзине S3 - не уверен, как какое-либо решение будет работать без этого доступа.

Использование Athena с Журналы CloudTrail - это мощный способ улучшить анализ активности сервиса AWS. Например, вы можете использовать запросы для определения тенденций и дальнейшей изоляции активности по атрибутам, таким как исходный IP-адрес или пользователь.

https://docs.aws.amazon.com/athena/latest/ug/cloudtrail-logs.html

...