Трассы CloudTrail и история событий
Создавайте трассы событий управления и данных, передавайте журналы в S3 и CloudWatch Logs и ищите события за последние 90 дней в консоли.
«Трассы CloudTrail и история событий» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.
Что такое AWS CloudTrail?
AWS CloudTrail записывает каждый вызов API, выполненный в Вашем аккаунте AWS, независимо от того, был ли он сделан через Console, CLI, SDK или другой сервис AWS. Каждая такая запись называется событием CloudTrail и содержит действие API, сведения о личности отправителя запроса, исходный IP-адрес, параметры запроса и ответ. CloudTrail является основой аудита безопасности AWS, обеспечения соответствия требованиям и расследования операционных проблем. На экзамене SAA-C03 это правильный ответ, когда в вопросе спрашивается: «Кто внёс это изменение?»
История событий: бесплатный просмотр за 90 дней
По умолчанию каждый аккаунт AWS имеет доступ к истории событий CloudTrail — скользящей записи событий управления за 90 дней, которую можно просматривать в Console или запрашивать через CLI. Вы можете фильтровать события по имени ресурса, типу ресурса, имени события или имени пользователя. История событий бесплатна, не требует настройки и доступна сразу. Это самый быстрый способ расследовать недавние изменения, но для более длительного хранения или более мощных запросов необходимо создать Trail.
# Search event history for who deleted an S3 bucket in the last 7 days
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=EventName,AttributeValue=DeleteBucket \
--start-time $(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ) \
--query 'Events[].{Time:EventTime,User:Username,Detail:CloudTrailEvent}' \
--output tableСоздание Trail CloudTrail
Trail — это конфигурация CloudTrail, которая непрерывно доставляет события в корзину S3 (и, при необходимости, в CloudWatch Logs). Вы платите за хранение в S3 и передачу данных. Trail можно ограничить одним регионом или настроить как мультирегиональный Trail, который собирает события из всех текущих и будущих регионов Вашего аккаунта. На экзамене SAA-C03 всегда рекомендуется мультирегиональный Trail: Trail одного региона не фиксирует активность в других регионах и считается пробелом в безопасности.
# Create a multi-region trail delivering to S3
aws cloudtrail create-trail \
--name OrgAuditTrail \
--s3-bucket-name my-cloudtrail-logs-111122223333 \
--is-multi-region-trail \
--include-global-service-events \
--enable-log-file-validation
# Start logging (trails are created in 'paused' state)
aws cloudtrail start-logging --name OrgAuditTrailСобытия управления и события данных
CloudTrail записывает две категории событий: события управления (также называемые событиями плоскости управления) фиксируют операции с ресурсами — создание экземпляра EC2, изменение группы безопасности, присоединение политики IAM. Они включены по умолчанию в каждом Trail без дополнительной платы за отдельное событие. События данных фиксируют операции на уровне объектов — S3 GetObject, PutObject, DeleteObject или Invoke Lambda. Объём событий данных может быть очень большим, и за них взимается дополнительная плата, поэтому их необходимо явно включать для каждого ресурса или типа ресурсов.
# Add data event logging for all S3 objects in a specific bucket
aws cloudtrail put-event-selectors \
--trail-name OrgAuditTrail \
--event-selectors '[
{
"ReadWriteType": "All",
"IncludeManagementEvents": true,
"DataResources": [
{
"Type": "AWS::S3::Object",
"Values": ["arn:aws:s3:::my-sensitive-bucket/"]
}
]
}
]'Интеграция CloudTrail с CloudWatch Logs
Доставка событий CloudTrail в CloudWatch Logs позволяет в реальном времени оповещать об активности API. Вы можете создать фильтры метрик для группы журналов CloudTrail, чтобы подсчитывать определённые события — например, вызовы DeleteBucket или CreateUser, — а затем настроить оповещения CloudWatch, которые уведомят команду безопасности в течение нескольких минут после подозрительного действия. Это основной шаблон в CIS AWS Foundations Benchmark, на который часто ссылается экзамен SAA-C03.
# Update a trail to also deliver to CloudWatch Logs
aws cloudtrail update-trail \
--name OrgAuditTrail \
--cloud-watch-logs-log-group-arn arn:aws:logs:us-east-1:111122223333:log-group:CloudTrail/Logs:* \
--cloud-watch-logs-role-arn arn:aws:iam::111122223333:role/CloudTrailCWLogsRole
# Create a metric filter for root account login
aws logs put-metric-filter \
--log-group-name CloudTrail/Logs \
--filter-name RootLogin \
--filter-pattern '{$.userIdentity.type = "Root" && $.eventName = "ConsoleLogin"}' \
--metric-transformations metricName=RootLogins,metricNamespace=CISBenchmark,metricValue=1События глобальных сервисов
Некоторые сервисы AWS, в частности IAM, STS, Route 53 и CloudFront, являются глобальными и записывают вызовы API как события глобальных сервисов. Эти события всегда записываются в регионе us-east-1, независимо от того, где была инициирована операция. При создании Trail включите параметр --include-global-service-events, чтобы фиксировать создание пользователей IAM, изменения политик и принятие ролей STS. Если у Вас несколько Trail для отдельных регионов, включите события глобальных сервисов только в одном из них, чтобы избежать дублирования записей журналов.
# Verify that global service events are enabled on a trail
aws cloudtrail get-trail \
--name OrgAuditTrail \
--query 'Trail.{MultiRegion:IsMultiRegionTrail,GlobalServiceEvents:IncludeGlobalServiceEvents}'Политика корзины S3 для журналов CloudTrail
CloudTrail требует специальную политику корзины S3, которая предоставляет субъекту сервиса CloudTrail (cloudtrail.amazonaws.com) разрешения на вызовы GetBucketAcl и PutObject для корзины. AWS запрещает публичный доступ к корзине и требует, чтобы для владения объектами был установлен режим Bucket Owner Enforced. Никогда не храните журналы CloudTrail в той же корзине, которую использует приложение: это создаёт циклическую зависимость, при которой доступ к журналам аудита будет нарушен, если доступ к корзине приложения ограничат.
# Minimum S3 bucket policy for CloudTrail (abbreviated)
# {
# "Version": "2012-10-17",
# "Statement": [
# {
# "Sid": "AWSCloudTrailAclCheck",
# "Effect": "Allow",
# "Principal": {"Service": "cloudtrail.amazonaws.com"},
# "Action": "s3:GetBucketAcl",
# "Resource": "arn:aws:s3:::my-cloudtrail-logs-111122223333"
# },
# {
# "Sid": "AWSCloudTrailWrite",
# "Effect": "Allow",
# "Principal": {"Service": "cloudtrail.amazonaws.com"},
# "Action": "s3:PutObject",
# "Resource": "arn:aws:s3:::my-cloudtrail-logs-111122223333/AWSLogs/111122223333/*",
# "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}}
# }
# ]
# }Trails организации
В AWS Organisation Вы можете создать Trail организации из управляющего аккаунта, и он автоматически будет применяться ко всем аккаунтам-участникам — текущим и будущим. Аккаунты-участники не могут изменять или удалять Trail организации, поэтому избежать аудита невозможно. Trails организации доставляют журналы в централизованную корзину S3 с префиксами для отдельных аккаунтов, что позволяет команде безопасности запрашивать журналы аудита всех аккаунтов в одном месте с помощью Athena или инструмента SIEM.
# Create an organisation trail from the management account
aws cloudtrail create-trail \
--name OrgCentralTrail \
--s3-bucket-name central-org-cloudtrail-logs \
--is-multi-region-trail \
--is-organization-trail \
--include-global-service-events \
--enable-log-file-validation
aws cloudtrail start-logging --name OrgCentralTrailИнтеграция с Athena для анализа журналов
Журналы CloudTrail, доставленные в S3, имеют формат JSON. Вы можете использовать интеграцию Amazon Athena в Console CloudTrail, чтобы автоматически создать таблицу Glue с разбиением по аккаунту, региону и дате. Это позволяет выполнять запросы к истории API за несколько месяцев с помощью стандартного SQL, не загружая данные в базу данных. В запросах выполняйте разбиение по дате (WHERE year='2024' AND month='01'), чтобы избежать полного сканирования таблицы и контролировать расходы Athena.
-- Query CloudTrail logs in Athena for IAM policy changes in January 2024
SELECT
eventtime,
useridentity.arn AS principal,
eventname,
requestparameters
FROM cloudtrail_logs_111122223333
WHERE year = '2024'
AND month = '01'
AND eventsource = 'iam.amazonaws.com'
AND eventname IN ('PutUserPolicy','AttachRolePolicy','CreateUser')
ORDER BY eventtime DESC
LIMIT 100;Запросы к истории событий и журналам трейла
Есть два способа искать записи CloudTrail: История событий в консоли (последние 90 дней, только управленческие события, ограниченный набор фильтров) и журналы трейла в S3/Athena (неограниченное хранение, включая события данных, и полноценные возможности SQL). В заданиях экзамена: если требуется расследовать событие старше 90 дней или выполнить запрос к событиям плоскости данных (S3 GetObject, Lambda Invoke), всегда рекомендуйте запрашивать журналы трейла через Athena. Если требуется самый простой способ расследовать недавнее управленческое событие, достаточно использовать «Историю событий».
Основные сведения о CloudTrail для экзамена
Запомните это для экзамена SAA-C03: CloudTrail не работает в реальном времени — доставка событий в S3 может занимать до 15 минут (для оповещений почти в реальном времени используйте CloudWatch Logs). История событий хранится 90 дней и содержит только управленческие события. События данных необходимо включать явно, и за них взимается дополнительная плата. Проверка файлов журналов использует хеши SHA-256 для обнаружения подделки. События глобальных сервисов (IAM, STS, Route 53) отображаются только в us-east-1. Организационные трейлы нельзя отключить из учетных записей участников.
Быстрая проверка
Проверьте, насколько хорошо Вы понимаете концепции AWS Solutions Architect (SAA-C03) из этого урока.
Итоги урока
В этом уроке Вы узнали, что «История событий» бесплатно предоставляет доступ к управленческим событиям за последние 90 дней, трейлы обеспечивают непрерывную доставку в S3 с настраиваемым сроком хранения и дополнительными событиями данных, а организационные трейлы применяются ко всем учетным записям участников и не могут быть отключены ими. Далее мы рассмотрим CloudTrail Insights и проверку целостности файлов журналов.
Часто задаваемые вопросы
Урок «Трассы CloudTrail и история событий» бесплатный?
Да — полный текст урока «Трассы CloudTrail и история событий» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.
Чему я научусь в уроке «Трассы CloudTrail и история событий»?
Создавайте трассы событий управления и данных, передавайте журналы в S3 и CloudWatch Logs и ищите события за последние 90 дней в консоли. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AWS Solutions Architect?
Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Трассы CloudTrail и история событий»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AWS Solutions Architect?
Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Трассы CloudTrail и история событий
- CloudTrail Insights и целостность файлов журналов
- Правила AWS Config и устранение нарушений
- Пакеты соответствия и трассы организации