Amazon Athena를 사용한 CloudTrail 로그 관리 자동화
AWS CloudTrail은 AWS 인프라 전반에서 계정 활동의 포괄적인 모니터링 및 로깅을 제공하여 감사, 컴플라이언스 및 보안 조사를 위한 API 호출 및 이벤트를 캡처합니다. 그러나 AWS 환경이 확장되면, 특히 다중 계정 조직에서 CloudTrail 로그의 볼륨이 크게 증가하여 Amazon Athena에서 로그를 분석할 때 쿼리 시간과 비용이 증가할 수 있습니다. 이를 해결하기 위해 파티션된 Athena 테이블의 생성 및 관리를 자동화하여 쿼리 성능을 최적화하고 비용을 줄이는 것을 권장합니다. 이 모범 사례 가이드는 AWS Lambda와 Amazon Athena를 사용하여 CloudTrail 로그를 계정, 리전 및 날짜별로 파티션하는 자동화 솔루션을 구현하여 보안, 컴플라이언스 및 운영 사용 사례에 대한 효율적인 로그 분석을 가능하게 하는 방법을 설명합니다.
CloudTrail 로그를 위한 파티션된 Athena 테이블 구성
쿼리 성능을 최적화하고 비용을 줄이려면 자동화 솔루션을 사용하여 CloudTrail 로그에 대한 파티션된 Athena 테이블을 구성합니다. 이 접근 방식은 두 개의 AWS Lambda 함수를 배포하여 계정 ID, 리전 및 날짜별로 파티션된 계정별 및 조직 전체 Athena 테이블을 생성하고 유지하는 것을 포함합니다. 파티셔닝을 통해 Athena는 쿼리 중에 관련 데이터만 스캔하여 파티션되지 않은 데이터셋을 스캔하는 것에 비해 쿼리 속도를 크게 향상시키고 비용을 줄입니다. 예를 들어, 정의된 시간 프레임 내에서 특정 AWS 계정에 대한 의심스러운 활동을 조사할 때, Athena는 전체 로그 데이터셋 대신 관련 파티션만 스캔합니다.
- 자동화를 위한 CloudFormation 템플릿 배포: 이 CloudFormation 템플릿을 사용하여 두 개의 Lambda 함수, IAM 역할, AWS Glue 데이터베이스 및 사전 정의된 Athena 쿼리를 포함하는 솔루션을 배포합니다. 이 템플릿은 파티션된 테이블 설정을 자동화하여 수동 구성을 제거하고 환경 전반에서 일관성을 보장합니다. GitHub 솔루션은 여기에서 찾을 수 있습니다.
- 파티션 프로젝션을 사용한 Athena의 CloudTrail 로그: 이 솔루션은 Athena 프로젝션 파티셔닝을 사용합니다. CloudTrail 로그는 사전 정의된 파티션 체계가 있는 알려진 구조를 가지고 있으므로 Athena 파티션 프로젝션 기능을 사용하여 쿼리 런타임을 줄이고 파티션 관리를 자동화할 수 있습니다. 파티션 프로젝션은 새 데이터가 추가될 때 자동으로 새 파티션을 추가합니다. 이를 통해
ALTER TABLE ADD PARTITION을 사용하여 수동으로 파티션을 추가할 필요가 없습니다. - CloudTrail S3 버킷 및 접두사 지정: CloudFormation 템플릿에 대한 입력으로 CloudTrail S3 버킷 이름과 적절한 접두사를 제공합니다. 조직 trail의 경우 접두사는
ORG_ID/AWSLogs/ORG_ID형식을 따릅니다. 여기서ORG_ID는 AWS 조직 ID입니다. 단일 계정 trail의 경우 기본 접두사AWSLogs/를 사용합니다. AWS CLI 명령을 사용하여 접두사를 확인합니다:aws cloudtrail describe-trails --trail-name-list TRAIL_NAME. 사용자 지정 접두사를 사용하는 경우 기본 접두사에 추가합니다(예:PREFIX/ORG_ID/AWSLogs/ORG_ID). - Athena 쿼리 결과 위치 설정: Athena에서 쿼리 결과를 위한 S3 버킷이 구성되어 있는지 확인합니다. 쿼리 출력을 저장하기 위해 CloudFormation 템플릿에 이 버킷(
s3://접두사 없이)을 지정합니다.
파티션된 Athena 테이블로 CloudTrail 로그 분석을 간소화하기 위해 GitHub의 **CloudTrail Athena 자동화 스크립트**에 접근하여 CloudFormation 템플릿을 배포하세요.