AWS CLI로 AWS CloudTrail의 Trail을 생성해 보고 관리해 봤습니다.
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 AWS CLI로 AWS CloudTrail의 Trail을 생성해 보고 관리해 봤습니다.
AWS CloudTrail?
AWS CloudTrail은 계정 내에서 발생하는 모든 API 호출을 기록해주는 감사 서비스입니다. 이번 블로그에서는 create-trail
, start-logging
, stop-logging
, delete-trail
명령어를 중심으로 CloudTrail Trail의 기본적인 라이프사이클을 확인해 보겠습니다.
사전 준비
이번 블로그에서는 AWS CLI 명령어를 사용하기 때문에 AWS CLI를 사용하기 위한 환경 구성이 필요합니다. 로컬 환경을 이용한다면 아래 블로그를 통해 CLI 환경을 구성해 주세요.
AWS 콘솔 환경에서 AWS CLI를 활용할 수 있는 CloudShell도 있으니, CloudShell을 이용하는 방법에 대해서는 아래 블로그를 참고해 주세요.
이번에는 S3 버킷을 테스트 용도로 사용할 생각이기 때문에 S3 버킷을 생성하고 권한을 할당해야 합니다.
[버킷 명]과 [AWS ID]는 적절하게 변경해 주고 권한을 설정합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSCloudTrailAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::버킷 명"
},
{
"Sid": "AWSCloudTrailWrite",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::버킷 명/AWSLogs/AWS ID/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
AWS CLI 명령어 실습
먼저 create-trail 명령어로 trail을 생성합니다. 위에서 S3 버킷에 권한을 주지 않았다면, 에러가 발생하므로 반드시 권한을 설정하도록 합시다.
aws cloudtrail create-trail --name TestTrail --s3-bucket-name your-test-bucket
{
"Name": "TestTrail",
"S3BucketName": "your-test-bucket",
"IncludeGlobalServiceEvents": true,
"IsMultiRegionTrail": false,
"TrailARN": "arn:aws:cloudtrail:ap-northeast-2:xxxxxxxx:trail/TestTrail",
"LogFileValidationEnabled": false,
"IsOrganizationTrail": false
}
생성한 Trail을 활성화합니다.
aws cloudtrail start-logging --name TestTrail
활성화한 Trail은 콘솔 화면에서도 확인할 수 있습니다.
혹은 AWS CLI 명령어를 사용해 확인할 수도 있습니다.
aws cloudtrail list-trails
{
"Trails": [
{
"TrailARN": "arn:aws:cloudtrail:ap-northeast-2:xxxxxxxx:trail/TestTrail",
"Name": "TestTrail",
"HomeRegion": "ap-northeast-2"
}
]
}
생성한 Trail을 비활성화합니다.
aws cloudtrail stop-logging --name TestTrail
생성한 Trail을 삭제합니다.
Trail을 삭제해도 CloudTrail이 저장했던 로그 자체는 S3 버킷에 그대로 남아 있을 수 있습니다.
※ [s3://<S3 버킷 이름>/AWSLogs/<계정 ID>/CloudTrail/<리전>/<연도>/<월>/<일>/...]
aws cloudtrail delete-trail --name TestTrail
Trail에 대한 불순한 의도 감지
AWS Lambda와 EventBridge를 이용하여 Trail에 stop-logging이나 delete-trail을 시도했을 때 이메일로 통지를 받아볼 수 있습니다.
이와 관련된 설정은 아래 블로그를 통해 확인할 수 있습니다.
마무리
이번 블로그를 전체적으로 요약하면 다음과 같습니다.
- CloudTrail은 단순 로깅을 넘어 보안 감사의 핵심
- Trail 생성 시 S3 권한 문제 주의
- 운영환경에서는 stop-logging, delete-trail을 제한하는 IAM 정책 설정 권장
문의 사항은 클래스메소드 코리아로!
클래스메소드 코리아에서는 다양한 세미나 및 이벤트를 진행하고 있습니다.
진행중인 이벤트에 대해 아래 페이지를 참고해주세요.
AWS에 대한 상담 및 클래스 메소드 멤버스에 관한 문의사항은 아래 메일로 연락주시면 감사드립니다!
Info@classmethod.kr