Athena에서 Cloud Trail 로그 보는 법과 S3 액세스 로그 보는 법

  • Aws
  • April 27, 2022

특정 IAM의 액세스키가 S3를 계속해서 이용하고 있는 것이 확인 한적이 있습니다. 이것 자체는 문제가 아닌데 문제는 왜 사용하는지를 아무도 모른다는 것이었습니다.
그래서 어디서 사용하는지 확인 해보려고 CloudTrail에서 조회를 해보니까 이상하게도 검색이 잘 안되는 경우가 많습니다.
이럴 경우에는 Athena로 검색을 할 수 가 있습니다.
하는 방법은 아래의 가이드 링크를 보고 참고했습니다.

AWS CloudTrail 로그 쿼리
Analyze Security, Compliance, and Operational Activity Using AWS CloudTrail and Amazon Athena
Athena 테이블을 사용하여 CloudTrail 로그 검색

찾으려고 하는 활동은 s3에서 한 활동이니 s3한에서만 찾도록 쿼리를 작성해보았습니다.

SELECT *
FROM cloudtrail_logs
WHERE
    eventsource = 's3.amazonaws.com' AND
    userIdentity.accessKeyId like 'ACCESSKEYID_HERE'

다만 여태껏 저장된 모든 Cloudtrail 기록을 다 검색하면 비용이 많이 듭니다 그렇기에 파티셔닝해서 Athena 테이블을 만들어야 합니다.
파티셔닝 하는 방법은 아래 링크를 참고하시면 됩니다.

AWS CloudTrail 로그 쿼리

4월 23일부터 4월 25일 3일간의 기록만 필요하므로 기간에 맞춰서 파티셔닝하고 테이블을 생성 후 실행해보았습니다.
하지만 원하는 로그는 나오지 않았습니다…..

Untitled

IAM 콘솔에서는 사용했다라고 나와있고 Cloudtrail에는 조회가 안되는 난감한 상황입니다.

결국 찾아보니 Cloudtrail은 버킷단에서 발생한 이벤트 예를 들어 버킷 생성, 버킷 삭제 등은 조회가 되지만 더 세세한 영역인 object 영역에서의 활동은 Cloudtrail에는 저장되지 않는다고 합니다.
대신 Object 활동은 S3 액세스 로깅을 활성화 하면 볼 수 있다고 하니 해당 방법을 적용하여 보기로 하겠습니다.

Athena를 사용하여 Amazon S3 서버 액세스 로그 분석하기
Amazon S3 서버 액세스 로깅 사용 설정

어떤 S3에서 액세스키를 이용하는지 확인이 어려우니 의심되는 S3부터 액세스 로깅을 활성화 하고 Athena에 테이블을 만들었습니다.

여기서 SELECT 쿼리를 만드는 과정 중 한 가지 어려운 점이 있습니다.
컬럼중에 액세스키를 가지고있는 컬럼이 없습니다.
대신 Remote IP 주소나 요청자에 대해서는 있기에 할 수 있는 방법은 IAM에 표시된 시간 기준으로 범위를 정해 모든 활동을 보는 방법으로 살펴보았습니다.
쿼리문 작성시 parse_datetime문을 이용해서 기간을 설정한뒤 쿼리를 실행했다.

Untitled

결과는 성공적으로 나왔습니다.

원인은 특정 인스턴스가 aws cli로 S3에 업로드 하는 과정에서 문제의 액세스 키를 사용한다는 것이었습니다.
S3 액세스 서버 로깅으로 다행히 사용 이유를 알 수 있었고 대안으로 업로드를 시도하는 인스턴스의 인스턴스 프로파일에 S3 권한을 부여하므로 문제를 해결 할 수 있었습니다.

Tags :

Related Posts

ECS 접속 방법

여기서는 서버리스 컨테이서 서비스인 ECS Fargate에서 Container에 직접 접속하는 방법에 대해 다뤄 보겠습니다.

Read More

Azure에서 VPN 로그 보는 법

Azure에서 온프레미스간의 VPN 연결이 안정적이지 않은 문제가 있었습니다. 그래서 Azure VPN 로그를 봐야 했습니다.

Read More

Network Firewall Terraform 모듈로 구축시 이슈

테라폼으로 Network Firewall 구축시 상당히 애를 많이 힘들었습니다. 겪었던 문제는 2가지로

Read More