본문 바로가기

⭐ AWS/Athena

Athena에서 CloudTrail Log 데이터 분석하기

# Athena에서 CloudTrail 데이터 분석하기

1. CloudTrail의 추적을 생성하면 자동으로 S3에 해당 로그가 저장 되도록 구성한다.

2. 아래와 같이 Create trail 버튼을 클릭한다. 

3. 추적 속성 선택정보 입력

4. S3에 쌓인 로그 파일을 Athena로 분석하기

클라우드 트레일에서 S3로 쌓운 데이터를 Athena에서 분석하자

일단 데이터가 어떤식으로 쌓이고 있는지 확인하면 아래와 같다.

클라우드 트레일에서 아래와 같이 전체 리전에 데이터를 쌓고 있다. 당연한 이야기지만 서울 리전에 데이터가 가장 많이 쌓일 것이다.

5. AWS 공식 문서에 나와 있는것처럼 아래의 내용을 AWS Athena에 입력하여 테이블을 생성하자 변경 되는 내용은 아래의 LOCATION일 것이다.

CREATE EXTERNAL TABLE cloudtrail_logs (
eventversion STRING,
useridentity STRUCT<
               type:STRING,
               principalid:STRING,
               arn:STRING,
               accountid:STRING,
               invokedby:STRING,
               accesskeyid:STRING,
               userName:STRING,
sessioncontext:STRUCT<
attributes:STRUCT<
               mfaauthenticated:STRING,
               creationdate:STRING>,
sessionissuer:STRUCT<  
               type:STRING,
               principalId:STRING,
               arn:STRING, 
               accountId:STRING,
               userName:STRING>>>,
eventtime STRING,
eventsource STRING,
eventname STRING,
awsregion STRING,
sourceipaddress STRING,
useragent STRING,
errorcode STRING,
errormessage STRING,
requestparameters STRING,
responseelements STRING,
additionaleventdata STRING,
requestid STRING,
eventid STRING,
resources ARRAY<STRUCT<
               ARN:STRING,
               accountId:STRING,
               type:STRING>>,
eventtype STRING,
apiversion STRING,
readonly STRING,
recipientaccountid STRING,
serviceeventdetails STRING,
sharedeventid STRING
)
ROW FORMAT SERDE 'com.amazon.emr.hive.serde.CloudTrailSerde'
STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://auto-tagging-for-resources/AWSLogs/CloudTrail/ap-northeast-2/';

위의 코드를 유심히 보면 해당 버킷의 객체를 테이블의 원본 데이터로 지정 할 수 있다. 이는 매우 다양하게 데이터를 분석 가능하다는 의미이다. 결국 S3와 궁합이 잘 맞는다고 볼 수 있다.

- 공식문서는 아래의 링크를 통해 확인이 가능하다.

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

 

AWS CloudTrail 로그 쿼리 - Amazon Athena

여러 계정, 리전 및 날짜에 걸쳐 CloudTrail 이벤트 정보에 대한 SQL 쿼리를 수행하려면 CloudTrail Lake 사용을 고려해 보세요. CloudTrail Lake는 기업의 정보를 검색 가능한 단일 이벤트 데이터 스토어로

docs.aws.amazon.com

6. AWS Athena에서 쿼리를 실행하자.

일단 쿼리가 저장될 S3 버킷을 지정한다.

일단 DataBase를 생성한다.

- 그 다음으로 위에서 작성한 쿼리를 실행한다.

CREATE DATABASE zzangguDB;

- 아래와 같이 테이블이 생성된 것을 확인 할 수 있다.

- 쿼리 결과는 아래와 같다.

- 쿼리문은 아래와 같다.

select * from "zzanggudb"."cloudtrail_logs"

7. 마지막으로, 조회 까지 되는건 알겠는데 저 useridentity 컬럼의 잔뜩 들어가있는 데이터를 어떻게 끄집어 내는가가 관건인거 같다.

 

- 끝 -