대량의 AWS CloudTrail 로그 컬렉션을 검색하고 싶습니다. 오류를 방지하기 위해 Amazon Athena 테이블을 수동으로 생성하고 싶지 않습니다.
해결 방법
CloudTrail 콘솔을 사용하여 Athena 테이블을 자동으로 생성합니다. 자세한 내용을 보려면 Amazon Athena를 사용한 AWS CloudTrail 로그 검색을 참조하십시오.
Athena 테이블 생성
1. CloudTrail 콘솔을 연 다음 탐색 창에서 추적을 선택합니다. S3 버킷 이름을 기록해 둡니다.
2. 탐색 창에서 이벤트 기록을 선택한 다음 Athena 테이블 생성을 선택합니다.
3. Amazon Athena에서 테이블 생성 창에서 스토리지 위치 메뉴를 연 다음 CloudTrail 로그 파일이 포함된 Amazon Simple Storage Service(S3) 버킷을 선택합니다.
참고: Athena로 CloudTrail 로그에 대한 파티션 프로젝션을 사용하여 단일 AWS 리전의 특정 기간에 대한 검색 성능을 개선할 수 있습니다.
4. 테이블 생성을 선택합니다.
5. Athena로 이동을 선택합니다.
참고: “Your account does not have sufficient permissions to create tables in Amazon Athena.”라는 오류가 표시될 수 있습니다. 그럴 경우 AWS Identity and Access Management(IAM) 정책 추가(콘솔)의 지침에 따라 AmazonAthenaFullAccess 관리형 정책을 연결하세요.
다음 샘플 쿼리 중 하나 이상을 로그에 사용할 수 있습니다. your_athena_tablename을 Athena 테이블 이름으로 바꾸고 access_key_id를 20자 액세스 키로 바꿉니다. 액세스 키는 일반적으로 AKIA 또는 ASIA 문자로 시작합니다.
Athena 쿼리 실행
1. Athena 콘솔을 열고 새 쿼리를 선택한 다음 대화 상자를 선택하여 샘플 쿼리를 지웁니다.
2. 쿼리를 입력한 다음 쿼리 실행을 선택합니다.
특정 액세스 키에 대해 기록된 모든 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 정의 값은 한 달로 제한됩니다. 여러 달에 대한 결과를 얻으려면 추가 쿼리를 실행하세요.
누락된 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 CloudTrail 로그 쿼리
IAM 자격 증명 권한 추가 및 제거
IAM 권한 액세스 거부 또는 권한 없음 오류 문제를 해결하려면 어떻게 해야 하나요?