Як експортувати логи AWS CloudTrail

Як експортувати логи AWS CloudTrail

SOC Prime Team
SOC Prime Team linkedin icon Стежити

Для останніх 90 днів подій управління використовуйте консоль CloudTrail (Історія подій → Завантажити події → JSON) або aws cloudtrail lookup-events. Для старіших подій або подій даних, таких як S3 object reads, переглядайте файли журналу вашого треку в S3. Вони розміщуються під s3://<bucket>/AWSLogs/<account-id>/CloudTrail/<region>/YYYY/MM/DD/.

CloudTrail є аудиторським журналом вашої контрольної площини AWS: кожен вхід до консолі, кожен виклик API, кожне прийняття ролі. У разі інциденту в хмарі це перше, що всі запитують. Prime Core має 262 правила детекції для CloudTrail, відповідно до 177 технік MITRE ATT&CK. Серед них: зловживання хмарними обліковими записами (T1078.004), вимикання журналювання в хмарі (T1562.008) та крадіжка даних з хмарного сховища (T1530).

Перед тим, як почати

Історія подій і треки – це різні речі. Історія подій завжди включена і безкоштовна. Вона зберігає 90 днів подій управління, по кожному регіону. Трек – це те, що ви налаштовуєте: він пише в S3, зберігає журнали стільки, скільки ви хочете, і може включати події даних. Перевірте, що у вас є:

aws cloudtrail describe-trails

aws cloudtrail get-trail-status --name <trail-name>

IsLogging: false на треку, який повинен бути запущений, є само по собі виявленням.

Регіони мають значення. Історія подій є по регіонах, і події з глобальних сервісів, таких як IAM, зазвичай розміщуються в us-east-1. Якщо ви шукаєте виклик CreateUser в eu-west-1, ви його не знайдете.

Дозволи. cloudtrail:LookupEvents для історії подій. Для файлів треку – s3:ListBucket та s3:GetObject на бакеті, плюс kms:Decrypt, якщо трек зашифровано з допомогою ключа KMS.

Опція 1: Завантаження з консолі

Відкрийте CloudTrail, перейдіть до Історія подій, встановіть діапазон часу та будь-які фільтри (ім’я події, користувач, ресурс), потім оберіть Завантажити події → JSON. Завантаження поважає ваші фільтри, тому перевірте їх спочатку. Воно охоплює лише поточний регіон.

Опція 2: lookup-events з CLI

aws cloudtrail lookup-events --region us-east-1 

--start-time 2026-10-19T00:00:00Z --end-time 2026-10-20T00:00:00Z

--output json > ct_use1_1019.json

Дві речі, які потрібно знати. По-перше, кожен результат обгортає фактичну подію як JSON строку у CloudTrailEvent. Розгорніть її у одну чисту подію на рядок:

jq -c '.Events[].CloudTrailEvent | fromjson' ct_use1_1019.json > ct_use1_1019.jsonl

По-друге, lookup-events має обмеження швидкості на рахунок і регіон, і він приймає лише один –lookup-attributes фільтр на виклик. Широкі часові вікна займають деякий час, тому звузьте їх, де можна. Для охоплення кожного регіону пройдіть по aws ec2 describe-regions –query ‘Regions[].RegionName’ –output text.

Опція 3: Файли треку з S3

Це шлях для історії понад 90 днів і подій даних:

aws s3 cp s3://my-trail-bucket/AWSLogs/123456789012/CloudTrail/eu-west-1/2026/10/19/ ./ct/ --recursive

gunzip ./ct/*.json.gz

jq -c '.Records[]' ./ct/*.json > ct_euw1_1019.jsonl

Кожен файл містить масив Records, і рядок jq сплющує всі з них в одну подію на рядок. Організаційні треки додають ідентифікатор організації на шлях: AWSLogs/<org-id>/<account-id>/CloudTrail/…. Якщо ви використовуєте CloudTrail Lake, ви можете виконувати SQL над вашими подіями і зберегти результати замість цього.

Що шукати

ПодіяЧому це важливо
ConsoleLoginПеревірте additionalEventData.MFAUsed, невдачі та IP-адреси джерел, які ви не впізнаєте
CreateUser, CreateAccessKey, AttachUserPolicyНові ідентичності та ключі: класична стійкість і підвищення привілеїв
StopLogging, DeleteTrail, PutEventSelectorsХтось зменшує те, що видно в CloudTrail
AssumeRole з нечітких джерелБічний рух між ролями та обліковими записами
Сплески errorCode: AccessDeniedРозвідка з викраденими обліковими даними
GetSecretValue, GetObject сплескиДоступ до даних; GetObject з’являється лише якщо події даних S3 увімкнені

Завантажити, очистити та перевірити в LogTotal

  1. Завантаження. Відкрити logtotal.com та скиньте .jsonl (або .json файл).
  2. Очистити. [what gets masked: account IDs, ARNs, IPs, access key IDs, usernames]. Look it over before you continue.
  3. Перевірте. 

Коли щось йде не так

СимптомЙмовірна причинаFix
lookup-events повертає нічогоНеправильний регіон; події IAM зазвичай знаходяться в us-east-1Запит до us-east-1, або пройдіть по всіх регіонах
Немає нічого старше 90 днівЗбереження історії подійВикористовуйте файли треку в S3
Немає подій GetObjectПодії даних S3 не увімкнені на трекуОчікувано; увімкніть їх на майбутнє
AccessDenied при читанні файлів трекуВідсутній kms:Decrypt, або політика бакетуВиправте IAM або політику бакету
ThrottlingExceptionобмеження швидкості lookup-eventsМенші вікна; дайте CLI повторно спробувати

FAQ

Чи включає історія подій події даних?

Ні. Тільки події управління. Події даних існують лише якщо трек чи сховище подій було налаштоване для їх запису.

Як швидко з’являються події?

Зазвичай протягом кількох хвилин після виклику API. Файли треку в S3 приходять партіями, тому дуже недавня подія може ще не бути у файлі

Приєднуйтесь до платформи Detection as Code від SOC Prime щоб покращити видимість загроз, найбільш актуальних для вашого бізнесу. Щоб допомогти вам розпочати та отримати негайну цінність, забронюйте зустріч зараз з експертами SOC Prime.