CloudTrail 로그에서 EC2 인스턴스를 실행, 중지, 시작 및 종료하기 위한 API 호출을 검색하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 9월 3일

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 실행, 중지, 시작 및 종료하는 API 호출을 추적하려고 합니다.

간략한 설명

AWS CloudTrail을 사용하면 계정에 대해 수행된 API 호출을 보고 추적할 수 있습니다. 보안 및 규정 준수를 위해 다음과 같은 API 호출을 추적할 수 있습니다.

​해결 방법

CloudTrail 이벤트 기록, Amazon Athena 쿼리를 사용하거나 Amazon Simple Storage Service S3 버킷에서 CloudTrail 로그를 다운로드합니다.

CloudTrail 이벤트 기록

1.    CloudTrail 콘솔을 열고, [Event history]를 선택하십시오.

2.    [Filter]에서 드롭다운 메뉴를 선택한 다음 [Event name]을 선택합니다.

3.    [Enter event name] 텍스트 상자에 검색할 이벤트 이름(RunInstances, StopInstances, StartInstances 또는 TerminateInstances)을 입력한 다음 이벤트 이름을 선택합니다.

4.    [Time range]에 원하는 시간 범위를 입력한 다음 [Apply]를 선택합니다.

참고: 지난 90일간의 이벤트 기록을 볼 수 있습니다.

자세한 내용은 CloudTrail 이벤트 기록에서 이벤트 보기를 참조하십시오.

Athena 쿼리

1.    AWS CloudTrail 로그 쿼리 지침을 따릅니다.

2.    Athena 콘솔을 열고 [Query Editor]를 선택합니다.

3.   다음 예제 쿼리를 입력하여 RunInstances API 호출에 사용 가능한 모든 이벤트 정보를 반환한 다음 [Run Query]를 선택합니다.

참고: "cloudtrail-logs"를 1단계에서 생성한 Athena 테이블 이름으로 바꿉니다.

SELECT *
FROM cloudtrail-logs
WHERE eventName = 'RunInstances'

4.    다음 예제 쿼리를 입력하여 RunInstances API 호출에 대해 필터링된 이벤트 정보를 반환한 다음 [Run Query]를 선택합니다.

SELECT userIdentity.username, eventTime, eventName
FROM cloudtrail-logs
WHERE eventName = 'RunInstances'

5.    다음 예제 쿼리를 입력하여 2019년 4월 1일부터 현재 날짜까지 인스턴스 문자열로 끝나는 API에 대한 이벤트 정보를 반환한 다음 [Run Query]를 선택합니다.

SELECT userIdentity.username, eventTime, eventName
FROM cloudtrail-logs
WHERE (eventName LIKE '%Instances') AND eventTime > '2019-04-01T00:00:01Z'

Amazon S3에서 CloudTrail 로그 다운로드

jq 또는 자주 사용하는 JSON 명령줄 프로세서를 사용하여 로그를 구문 분석합니다.

참고: S3 버킷에 로깅하려면 트레일을 활성화해야 합니다.

1.    CloudTrail 로그 파일 찾기 지침을 따릅니다.

2.    CloudTrail 로그 파일 다운로드 지침을 따릅니다.

3.    Bash 터미널을 열고 다음 디렉터리를 생성하여 로그 파일을 저장합니다.

$ mkdir cloudtrail-logs

4.    새 디렉터리로 이동한 다음 CloudTrail 로그를 다운로드합니다.

$ cd cloudtrail-logs

$ aws s3 cp s3://my_cloudtrail_bucket/AWSLogs/012345678901/CloudTrail/eu-west-1/2019/08/07 ./ --recursive

5.    로그 파일의 압축을 해제하십시오.

$ gzip -d *

다음 예제 쿼리는 API RunInstances에 대해 각 이벤트를 전체적으로 반환합니다.

cat * | jq '.Records[] | select(.eventName=="RunInstances")'

다음 예제 쿼리는 API StopInstances 및 TerminateInstances에 대해 각 이벤트를 전체적으로 반환합니다.

cat * | jq '.Records[] | select(.eventName=="StopInstances" or .eventName=="TerminateInstances" )'

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?