다중 계정에서의 CloudTrail 로그 중앙 집중화

안녕하세요, 오늘은 베스핀글로벌의 D&A실 김민규님이 작성해 주신 다중 계정에서의 CloudTrail 로그 중앙 집중화에 대해 알아보겠습니다.

궁금하신 부분이 있으시면 댓글을 달아주세요 🙂

0. 개요

다중 계정에서 CloudTrail 서비스를 통해 로그가 생성되는 경우 장기 저장 및 중앙 집중식 분석을 위해 중앙에 로그가 적재 및 집계 되어야 합니다.

이러한 로그 집중화는 모니터링 작업의 간소화와 로그 손실 가능성을 줄일 뿐만 아니라 지속적인 추적을 가능하게 합니다.

그리하여 이번에는 다중 AWS 계정에서 생성되는 CloudTrail 로그 중앙 집중화 방법에 대해 정리해보았습니다.

1. SEC 계정 작업

1-1. SEC 계정 CloudTrail 추적 생성

SEC 계정에 로그인하여 CloudTrail 서비스 페이지 접속 후, 추적 생성 버튼을 선택합니다.

추적 이름은 SEC-CLOUDTRAIL로 지정하고, 새 S3 버킷 생성을 선택하여 생성할 S3 버킷 이름을 지정합니다.

사용할 S3 버킷 이름은 sec-cloudtrail-log 입니다.

참고 : AWS CloudTrail 추적 구성 시, 사용자가 생성 또는 선택한 S3 버킷에 데이터 이벤트 로그를 저장합니다.

CloudWatch 등 이외 추가 설정은 상황에 따라 선택합니다. 만약, 추가로 선택할 사항이 없다면 그대로 추적 생성을 진행합니다.

1-2. SEC 계정 CloudTrail 추적 생성 확인

SEC 계정에 생성된 CloudTrail 추적을 확인합니다.

1-3. SEC 계정 S3 버킷 생성 확인

CloudTrail 추적 생성을 통해 생성된 S3 버킷을 확인합니다.

1-4. SEC 계정 S3 버킷 정책 수정

생성된 sec-cloudtrail-log S3 버킷을 선택하고, 권한 버튼을 눌러줍니다. 그리고 편집 버튼을 클릭하여 sec-cloudtrail-log 버킷의 정책을 수정합니다.

수정할 부분은 총 3가지로 아래와 같습니다.

빨간 표시 부분과 같이 아래의 값을 추가하여 DEV 계정의 DEV-CLOUDTRAIL 라는 추적 이름을 가진 AWS Cloudtrail 서비스가 SEC 계정에서 AWS Cloudtrail 추적 생성을 통해 생성된 S3 버킷(sec-cloudtrail-log)을 쿼리할 수 있는 작업(Action → GetBucketAcl)을 허용합니다.
"arn:aws:cloudtrail:ap-northeast-2:[DEV Account ID]:trail/DEV-CLOUDTRAIL"
초록 표시 부분과 같이 아래의 값을 추가하여 DEV 계정의 DEV-CLOUDTRAIL 라는 추적 이름을 가진 AWS Cloudtrail 서비스가 SEC 계정에서 AWS Cloudtrail 추적 생성을 통해 생성된 S3 버킷(sec-cloudtrail-log)에 정책을 적용되기 위한 조건(Condition → DEV-CLOUDTRAIL)을 추가합니다. "arn:aws:cloudtrail:ap-northeast-2:[DEV Account ID]:trail/DEV-CLOUDTRAIL" 
파란 표시 부분과 같이 아래의 값을 추가하여 DEV 계정의 DEV-CLOUDTRAIL 라는 추적 이름을 가진 AWS Cloudtrail 서비스가 SEC 계정에서 AWS Cloudtrail 추적 생성을 통해 생성된 S3 버킷(sec-cloudtrail-log)에 객체 업로드 작업(Action → PutObject)을 허용합니다.
"arn:aws:s3:::sec-cloudtrail-log/AWSLogs/[DEV Account ID]/*"

참고 : SEC 또는 DEV 계정의 Cloudtrail 추적명을 변경하고자 한다면 S3 버킷 정책도 이와 동일하게 변경해주어야 합니다.

2. DEV 계정 작업

2-1. DEV 계정 CloudTrail 추적 생성

DEV 계정에 로그인하여 CloudTrail 서비스 페이지 접속 후, 추적 생성 버튼을 선택합니다.

추적 이름은 DEV-CLOUDTRAIL로 지정하고, 기존 S3 버킷 사용 을 선택하여 SEC 계정에서 생성한 S3 버킷 이름을 지정합니다.

SEC 계정에서 Cloudtrail 추적 생성 시, 생성된 S3 버킷 이름은 sec-cloudtrail-log 입니다.

CloudWatch 등 이외 추가 설정은 상황에 따라 선택합니다. 만약, 추가로 선택할 사항이 없다면 그대로 추적 생성을 진행합니다.

2-2. DEV 계정 CloudTrail 추적 생성 확인

DEV 계정에 생성된 CloudTrail 추적을 확인합니다.

아래와 같이 추적 로그 위치를 확인하면 SEC 계정에서 Cloudtrail 추적 생성을 통해 생성된 S3 버킷 안에 DEV 계정 ID 이름으로 객체가 생성 되었음을 확인할 수 있습니다.

링크 접속을 시도하면 아래와 같이 객체 표시 권한이 부족하여 SEC 계정에 생성된 S3 버킷을 확인할 수 없음을 알 수 있습니다.

참고 : SEC 계정 작업 시, S3 버킷 정책에 GetBucketAcl 과 PutObject 작업만 허용했기 때문에 위와 같이 객체 표시가 되지 않습니다.

3. CloudTrail 로그 파일 적재

3-1. CloudTrail 로그 파일 적재 확인

SEC 계정의 S3 버킷(sec-cloudtrail-log)을 확인하면 SEC 와 DEV 계정 ID 이름으로 객체가 생성됨을 확인할 수 있습니다.

파란 표시 부분이 SEC 계정 ID, 초록 표시 부분이 DEV 계정 ID 이름으로 객체가 생성될 것입니다.

각 계정 ID 이름의 객체를 확인하면 CloudTrail 로그가 쌓이고 있음을 확인할 수 있습니다.

참고 : DEV 계정에서의 CloudTrail 추적 생성과 SEC 계정에서의 S3 버킷 정책 설정에 따라 CloudTrail 로그 적재를 확인하는데 대략 10분 정도 이내의 시간이 소요될 수 있습니다.

감사합니다 🙂

Written by 김 민규 / Mingyu Kim

Cloud Engineer

Leave a Comment