기본적으로 aws 계정 내에서 일어나는 모든 API를 통하여 계정 활동에 관련 작업을 기록하며 지속적으로 모니터링 하며 보관할수있습니다. Console , AWS SDK, 명령줄 기타 AWS서비스를 통해 수행된 작업을 비롯하여 이벤트 기록을 제공합니다. 또한, 이벤트 기록에서 여러가지 필터링을 이용하여 확인이 가능합니다.
Cloud Trail은 모든 AWS 계정에서 계정 생성시 활동을 기록 수동으로 설정할 필요 없이 지원되는 서비스의 생성, 수정 및 삭제 작업을 위해 90일동안의 활동 기록
이벤트 필터링 가능 계정 활동을 보고 검색 및 다운로드 가능 → 리소스 변경에 대한 가시성 확보
s3 서버측 암호화 SES를 사용하여 로그 암호화 가능 → KMS로도 가능하다.
이벤트 종류
관리 이벤트aws 계정 리소스에서 수행되는 관리 작업등 ex ) ec2 생성 , 삭제 , 수정등의 작업 기록 → aws 계정 ,iam역할,작업한 ip,시간,리소스등의 정보 확인 가능
데이터 이벤트리소스 자체 or 리소스 내에서 수행되는 서비스 → 대량 활동
Amazon S3 객체 수준 API 활동(예: GetObject, DeleteObject 및 PutObject API 작업)
AWS Lambda 함수 실행 활동(Invoke API)
!! 추적을 생성 할 때 데이터 이벤트는 기록되지 않음 → 설정 시 추가 요금
Cloud Trail Insights
리소스 프로비저닝 급증
IAM 작업의 급증 또는 주기적 유지 관리 활동 격차같은 aws계정의 비정상적 활동 식별
통합되는 서비스
Lambda
s3 버킷 알림 기능을 활용하여 s3객체 생성 이벤트를 lambda에 게시가능
trail 에서 s3 버킷에 로그를 쓸때 lambda를 호출하여 처리
cloudwatch logs
trail에서 기록 관리 및 데이터 이벤트를 cloudwatch logs로 보낼수있다.
지표 필터 생성하여 이벤트,검색 이벤트를 모니터링가능
lambda 및 elastisearch 같은 다른 aws로 스트리밍가능
cloudwatch 이벤트
리소스 변경 사항에 자동 대응가능
trail 에서 특정 이벤트를 기록할시 실행 작업 정의 가능
2. 실습
이벤트 로그 확인
콘솔을 통하여 trail 접속
이벤트 기록을 통하여 로그 확인
→ 기본적인 API활동에 의하여 활동 작업이 로그가 남는다.
이벤트 필터링
필터링은 시간 및 여러 이벤트 패턴에 따라서 사용자가 조회 가능
이벤트 이름으로 필터링 api test를 위해 미리 인스턴스를 생성해둠
→ 인스턴스 생성된것을 확인하고자 검색 결과 나타나지않음 → 다른 이벤트 이름으로 검색해보자!
→ 이전의 auto-scaling 으로 생성된 인스턴스부터 시간및 리소스 유형등을 확인 가능 해당 이벤트에 대하여 자세히 알고자 이벤트 정보 확인
이벤트 상세 정보 확인
→ 해당 이벤트에 대한 자세한 정보들을 확인 가능하다. 또한, 참조 리소스 까지 같이 확인 가능
제공되는 cloudtrail 열 리스트
시간 필터링
→ 특정 시간대를 지정하거나 start-end 시간을 지정도 가능하다.
S3 - Trail 추적기존 방식처럼 Trail로만 로그를 보는 데는 90일이라는 기간이 정해져 있기 때문에 이전의 데이터도 확인을 하고 싶을 시 S3버킷을 이용하는 방법이 있다.
추적 생성
→ 로그 파일을 보호하기 위해서 KMS를 사용가능.(실습이기에 모든것을 비활성화) → 또 앞서 개념 정리를 하면서 연동 가능한 서비스 중 watch logs를 이용할수도있다.
이벤트 선택
→ kms 이벤트는 제외 모든 api활동 (이벤트는 관리 이벤트만 나머지는 추가비용)
생성 진행
→ 이전의 추적을 생성해뒀으므로 따로 생성을 하진 않았다.
버킷 생성 확인
→ 다중 리전 추적 기능을 제공하므로 모든 리전의 정보가 나타난다. 따라서, 본인이 해당하는 리전에 대해서 로그 정보를 확인하면 된다.
로그 확인
→ 해당 로그들이 생성됨을 확인했다. (해당 날짜에 대해서 나타나며 시간별로 확인가능 하지만, 다소 UI가 떨어져서 식별하기가 어렵다... 확인해야 하는 번거로움 존재
→ 해당 객체의 URL을 통하여 접속한 결과 아찔하다....
athena를 이용한 s3 로그 분석이전의 trail 에서 생성한 추적은 식별하기에 있어 불편함이 존재하여 특정 쿼리들을 이용해서 편리하게 보고자 하는 열을 나열할수도 있으며 해당 로그들을 분석해보자!
Athena 테이블 생성
→ 해당 테이블생성시 trail 에 대한 정보를 나타내 준다. → 또한 이전의 추적으로 생성한 버킷을 지정한다 (해당 버킷에 존재하는 로그를 대상으로 쿼리를 진행하기때문이다.)
aws cloudtrail lookup-event help - > 이벤트에 대한 명령줄 도움받기 aws cloudtrail lookup-event --max-results 1 (default 10 1~50까지 가능) aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=RunInstances -> 인스턴스 구동된 이벤트 기록 (이벤트 이름으로 조회) aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventSource,AttributeValue=ec2.amazonaws.com -> EventSource 조회 aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::S3::Bucket -> 리소스 유형
최신 이벤트 기록 1개 조회
구동한 인스턴스 이력
CloudWatch logs 및 insight 이용
3.결론
Trail을 이용하여 AWS계정 내에서 일어나는 모든 이벤트에 대한 로그를 자동으로 남아 지기 때문에 90일간의 기록이 지난 데이터들도 S3 를 이용하여 장기간의 데이터를 보관 할 수 있어 상당히 유용하게 사용 할 수 있는 서비스인 것 같다. 또한, s3 버킷으로 지난 로그들을 분석하기에는 불편함이 존재하여 Athena를 이용한다면 특정 쿼리문을 이용하여 테이블에 나타난 colume 명을 이용하여 필터를 할수있다.
댓글