Jak eksportować logi za pomocą Amazon Athena

Jak eksportować logi za pomocą Amazon Athena

SOC Prime Team
SOC Prime Team linkedin icon Śledź

Athena sama nie przechowuje logów. Zapytuje pliki logów w S3, takie jak CloudTrail, VPC Flow Logs, logi z load balancerów i WAF, poprzez definiowane przez Ciebie tabele. Normalne wyniki zapytań są zapisywane jako CSV w Twoim koszyku wyników. Aby uzyskać JSON, otocz zapytanie w UNLOAD … WITH (format = 'JSON’): Athena zapisuje wiersze JSON do prefiksu S3, a Ty pobierasz je.

Wiele zespołów AWS trzyma miesiące logów w S3 i zapytuje je za pomocą Athena zamiast wysyłać wszystko do SIEM. Prime Core ma ponad 24 000 unikalnych reguł wykrywania, przypisanych do 676 technik MITRE ATT&CK. Poniżej jest, jak uzyskać wycinek, zdezynfekować go i zbadać za darmo w LogTotal.

Zacznij za darmo

Zanim zaczniesz

Uprawnienia. Musisz uruchomić zapytania Athena (athena:StartQueryExecution i pokrewne), przeczytać definicje tabel w Glue, przeczytać źródłowy koszyk i zapisać do koszyka eksportu. Dodaj kms:Decrypt, jeśli logi są zaszyfrowane z użyciem KMS.

Znaj tabelę i jej partycje. Tabela CloudTrail jest zwykle dzielona partycjami według regionu i daty, albo z użyciem projekcji partycji, albo z partycjami, które dodałeś. Athena pobiera opłaty za dane zeskanowane, więc filtruj na partycjach za każdym razem. Zapytanie bez nich może zeskanować lata logów.

Grupa robocza. Athena uruchamia zapytania w grupie roboczej z lokalizacją wyników. UNLOAD zapisuje do własnego celu, ale grupa robocza nadal musi być skonfigurowana.

Eksportuj z UNLOAD

UNLOAD (
  SELECT *
  Z cloudtrail_logs
  GDZIE region = 'eu-west-1'
    I day = '2026/10/19'
    I useridentity.arn LIKE '%podejrzany_użytkownik%'
)
DO 's3://my-athena-exports/ct-1019/'
Z (format = 'JSON', kompresja = 'NONE')

Dostosuj kolumny partycji (region, day) do definicji tabeli. Prefiks celu musi być pusty.

Z linii komend:

QID=$(aws athena start-query-execution –work-group primary
  –query-string „$(cat unload.sql)”
  –query 'QueryExecutionId’ –output text)

# poczekaj na SUCCEEDED
do [ „$(aws athena get-query-execution –query-execution-id „$QID”
  –query 'QueryExecution.Status.State’ –output text)” = „SUCCEEDED” ]; do sleep 5; done

aws s3 cp s3://my-athena-exports/ct-1019/ ./ct-1019/ –recursive
zcat -f ./ct-1019/* > ct_1019.jsonl

zcat -f obsługuje zarówno skompresowane, jak i nieskompresowane wyniki, w przypadku gdy kompresja została pozostawiona na domyślną. Jeśli zapytanie zakończy się niepowodzeniem, pętla oczekiwania nigdy się nie kończy. Sprawdź również pod kątem FAILED, jeśli regularnie skryptujesz to.

Czemu nie get-query-results? Działa, ale zwraca wiersze jako listy ciągów, 1 000 na stronę, które następnie musisz złożyć z powrotem w obiekty. UNLOAD daje Ci czysty JSON w jednym kroku.

Prześlij, oczyść i zrecenzuj w LogTotal

  1. Prześlij. Otwórz logtotal.com i wrzuć plik .jsonl.
  2. Zdezynfekuj. 
  3. Zrecenzuj. 

Kiedy coś idzie nie tak

SymptomPrawdopodobna przyczynaFix
Zapytanie skanuje terabajtyBrak filtra partycjiFiltruj na kolumnach partycji
Błąd dotyczący lokalizacji wynikówPrefiks celu nie jest pustyUżyj nowego prefiksu
Odmowa dostępuBrakująca zgoda do S3, Glue lub KMSSprawdź każdy; KMS jest zazwyczaj podejrzany
Zero wierszyPartycje niezaładowane lub zły format partycjiSprawdź projekcję partycji lub uruchom MSCK REPAIR TABLE
Pliki wynikowe nie otwierają się jako tekstKompresja GZIPUżyj zcat, lub ustaw kompresja = 'NONE’

FAQ

Czy to to samo co Amazon Security Lake?

Security Lake również używa Athena, ale z własnymi tabelami OCSF i uprawnieniami Lake Formation.

Czy mogę zamiast tego eksportować surowe pliki CloudTrail?

Tak. Jeśli potrzebujesz tylko całych dni, kopiowanie plików z S3 jest prostsze. Athena przydaje się, gdy potrzebujesz filtrować.

Dołącz do platformy Detection as Code firmy SOC Prime aby zwiększyć widoczność zagrożeń najbardziej istotnych dla Twojego biznesu. Aby pomóc Ci rozpocząć i natychmiast uzyskać wartość, umów się teraz na spotkanie z ekspertami SOC Prime.