Amazon Athena에서 AWS CloudTrail 로그 검색을 위한 테이블을 자동으로 생성하려면 어떻게 해야 합니까?

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

대량의 AWS CloudTrail 로그 컬렉션을 검색하려고 하는데 오류를 방지하기 위해 Amazon Athena 테이블을 수동으로 생성하지 않으려고 합니다.

해결 방법

CloudTrail 콘솔을 사용하여 Athena 테이블을 자동으로 생성할 수 있습니다. 자세한 내용은 Amazon Athena를 사용한 AWS CloudTrail 로그 검색을 참조하십시오.

Athena 테이블 생성

  1. CloudTrail 콘솔을 열고 탐색 창에서 [Trails]를 선택합니다. S3 버킷 이름을 기록해 둡니다.
  2. 탐색 창에서 [Event history]를 선택한 다음 [Run advanced queries in Amazon Athena]를 선택합니다.
  3. [Create a table in Amazon Athena] 창에서 [Storage location] 메뉴를 열고 CloudTrail 로그 파일이 포함된 Amazon Simple Storage Service(Amazon S3) 버킷을 선택합니다.
  4. [Create table]을 선택합니다.
  5. [Go to Athena]를 선택합니다.

참고: "Your account does not have sufficient permissions to create tables in Amazon Athena"라는 오류가 표시될 수 있습니다. 이 오류가 표시되는 경우 IAM 정책 연결(콘솔)의 지침에 따라 AmazonAthenaFullAccess 관리형 정책을 연결합니다.

다음과 같은 샘플 쿼리 중 하나 이상을 로그에 사용할 수 있습니다. your_athena_tablename을 Athena 테이블 이름으로 바꾸고 access_key_id를 20자 액세스 키로 바꿉니다. 액세스 키는 일반적으로 AKIA 또는 ASIA 문자로 시작됩니다.

Athena 쿼리 실행

Athena 콘솔을 열고 [New query]를 선택한 다음 샘플 쿼리를 지우는 대화 상자를 선택합니다.

쿼리를 입력한 다음 [Run Query]를 선택합니다.

특정 액세스 키에 대해 기록된 모든 AWS API 활동 표시

SELECT eventTime, eventName, userIdentity.principalId
FROM your_athena_tablename 
WHERE userIdentity.accessKeyId like 'access_key_id'

EC2 인스턴스에 대한 보안 그룹 변경 식별

SELECT eventname, useridentity.username, sourceIPAddress, eventtime, requestparameters
FROM your_athena_tablename
WHERE (requestparameters like '%sg-5887f224%' or requestparameters like '%sg-e214609e%' or requestparameters like '%eni-6c5ca5a8%')
and eventtime > '2017-02-15T00:00:00Z'
order by eventtime asc;

지난 24시간 동안의 모든 콘솔 로그인 표시

SELECT useridentity.username, sourceipaddress, eventtime, additionaleventdata
FROM your_athena_tablename 
WHERE eventname = 'ConsoleLogin'
and eventtime >= '2017-02-17T00:00:00Z'
and eventtime < '2017-02-18T00:00:00Z';

지난 24시간 동안 실패한 모든 콘솔 로그인 시도 표시

SELECT useridentity.username, sourceipaddress, eventtime, additionaleventdata
FROM your_athena_tablename
WHERE eventname = 'ConsoleLogin'
and useridentity.username = 'HIDDEN_DUE_TO_SECURITY_REASONS'
and eventtime >= '2017-02-17T00:00:00Z'
and eventtime < '2017-02-18T00:00:00Z';

CloudTrail 월별 비용 증가 식별

SELECT eventName,count(eventName) AS NumberOfChanges,eventSource
FROM your_athena_tablename 
WHERE eventtime >= '2019-01-01T00:00:00Z'and eventtime < '2019-01-31T00:00:00Z'
GROUP BY eventName, eventSource
ORDER BY NumberOfChanges DESC

참고: eventtime에 정의되는 값은 1개월로 제한됩니다. 여러 개월에 대한 결과를 가져오려면 추가 쿼리를 실행합니다.

누락된 AWS Identity and Access Management(IAM) 권한 식별

SELECT count (*) as TotalEvents, useridentity.arn, eventsource, eventname, errorCode, errorMessage
FROM your_athena_tablename
WHERE (errorcode like '%Denied%' or errorcode like '%Unauthorized%')
AND eventtime >= '2019-10-28T00:00:00Z'
AND eventtime < '2019-10-29T00:00:00Z'
GROUP by eventsource, eventname, errorCode, errorMessage, useridentity.arn
ORDER by eventsource, eventname

결과에 실패한 API 호출이 표시되지 않으면 다음과 같이 쿼리 범위를 넓힙니다.  

SELECT count (*) as TotalEvents, useridentity.arn, eventsource, eventname, errorCode, errorMessage
FROM your_athena_tablename
WHERE errorcode <> ''
AND eventtime >= '2019-10-28T00:00:00Z'
AND eventtime < '2019-10-29T00:00:00Z'
GROUP by eventsource, eventname, errorCode, errorMessage, useridentity.arn
ORDER by eventsource, eventname

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

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


도움이 필요하십니까?