추적에 대한 Insights 이벤트 로깅 - AWS CloudTrail

추적에 대한 Insights 이벤트 로깅

AWS CloudTrail Insights는 AWS 사용자가 CloudTrail 관리 이벤트를 지속적으로 분석하여 write API 호출과 연결된 비정상적인 활동을 식별하고 이에 대응할 수 있도록 지원합니다.

Insights 이벤트는 CloudTrail이 계정에서 비정상적인 write 관리 API 활동을 감지할 때 로그됩니다. CloudTrail Insights를 사용 설정했을 때 CloudTrail이 비정상적인 활동을 감지하면 Insights 이벤트가 추적의 대상 S3 버킷에 전달됩니다. 또한 CloudTrail 콘솔에서 Insights 이벤트를 살펴볼 때 인사이트 유형 및 인시던트 기간을 확인할 수도 있습니다. CloudTrail 추적에서 캡처된 다른 이벤트 유형과 달리, Insights 이벤트는 계정의 API 사용량 변화가 계정의 일반적인 사용 패턴과 크게 다르다는 것을 CloudTrail이 탐지한 경우에만 로그됩니다.

CloudTrail Insights는 CloudTrail write 관리 이벤트를 지속적으로 모니터링하고 수학적 모델을 사용하여 계정에 대한 API 이벤트 및 오류율 활동의 정상적인 수준을 결정합니다. CloudTrail Insights는 정상적인 패턴을 벗어나는 동작을 식별하고 Insights 이벤트를 생성하고 추적을 위해 선택한 대상 S3 버킷의 /CloudTrail-Insight 폴더로 해당 이벤트를 전송합니다. 또한 CloudTrail의 AWS Management Console에서 Insights 이벤트에 액세스하고 이벤트를 확인할 수도 있습니다. 콘솔에서 그리고 AWS CLI를 사용하여 Insights 이벤트에 액세스하고 이벤트를 확인하는 방법에 대한 자세한 내용은 이 설명서의 CloudTrail Insights 이벤트 보기 단원을 참조하세요.

기본적으로 추적은 모든 관리 이벤트를 로깅하지만 데이터 이벤트 또는 Insights 이벤트는 포함하지 않습니다. 데이터 및 Insights 이벤트에는 추가 요금이 적용됩니다. 자세한 내용은 AWS CloudTrail 요금을 참조하세요.

계정에서 이벤트가 발생하면 CloudTrail은 이벤트가 추적 설정과 일치하는지 평가합니다. 추적 설정과 일치하는 이벤트만 Amazon S3 버킷 및 Amazon CloudWatch Logs 로그 그룹에 전달됩니다.

CloudTrail Insights 이해

CloudTrail Insights를 사용하면 Insights 이벤트를 발생시킴으로써 AWS 계정에서 비정상적인 API 볼륨 또는 오류율 활동을 감지할 수 있습니다. CloudTrail Insights는 기준이라고도 하는 API 호출 볼륨과 API 오류율의 정상적인 패턴을 측정하고 호출 볼륨 또는 오류율이 정상 패턴을 벗어날 때 Insights 이벤트를 생성합니다. API 호출 볼륨에 대한 Insights 이벤트는 write 관리 API에 대해 생성되고 API 오류율에 대한 Insights 이벤트는 readwrite 관리 API 모두에 대해 생성됩니다.

추적에서 처음으로 CloudTrail Insights를 사용 설정한 후 비정상적인 활동이 감지된 경우 CloudTrail이 첫 번째 Insights 이벤트를 전달하는 데 최대 36시간이 걸릴 수 있습니다. CloudTrail Insights는 전역이 아닌 단일 리전에서 발생하는 관리 이벤트를 분석합니다. CloudTrail Insights 이벤트는 지원 관리 이벤트가 생성되는 것과 동일한 리전에서 생성됩니다.

다음 이미지는 Insights 이벤트의 예를 보여 줍니다. 대시보드 또는 Insights(인사이트) 페이지에서 인사이트 이벤트 이름을 선택하여 인사이트 이벤트에 대한 세부 정보 페이지를 엽니다.

추적에서 CloudTrail Insights를 사용 중지하거나 (CloudTrail Insights를 사용 중지한) 추적에서 로깅을 중지한 경우 Insights 이벤트가 대상 S3 버킷에 저장되거나 콘솔의 [인사이트(Insights)] 페이지에 표시될 수 있는데, 이는 이전에 Insights를 사용 설정했을 때부터 표시가 시작된 것입니다.

열 필터링

왼쪽 열에는 주제 API와 관련이 있으며 Insights 이벤트 유형이 동일한 Insights 이벤트가 나열되어 있습니다. 열에서 추가 정보를 원하는 Insights 이벤트를 선택할 수 있습니다. 이 열에서 이벤트를 선택하면 [Insights 그래프(Insights graph)] 탭의 그래프에서 이벤트가 강조 표시됩니다. 기본적으로 CloudTrail은 [CloudTrail 이벤트(CloudTrail events)] 탭에 표시되는 이벤트를, Insights 이벤트를 트리거한 비정상적인 활동 기간 동안 호출된 특정 API에 대한 이벤트로 제한하는 필터를 적용합니다. Insights 이벤트와 관련 없는 이벤트를 포함하여 비정상적인 활동 기간 동안 호출된 CloudTrail 이벤트를 모두 표시하려면 필터를 비활성화해야 합니다.

[Insights 그래프(Insights graph)] 탭

Insights 그래프(Insights graph) 탭에 있는 Insights 이벤트의 세부 정보 페이지에는 Insights 이벤트가 하나 이상 로그되기 전후의 일정 기간 동안 발생한 API 호출 볼륨 또는 오류율에 대한 그래프가 표시됩니다. 그래프에서 Insights 이벤트는 세로 막대로 강조 표시되고 막대의 너비는 Insights 이벤트의 시작 및 종료 시간을 보여 줍니다.

이 예에서 세로 강조 표시 밴드는 계정의 AWS Systems Manager SendCommand API 호출 수가 비정상적으로 표시됩니다. 강조 표시된 영역에서 SendCommand 호출 수가 계정의 기준 평균인 분당 호출 0.0442건 이상으로 증가했기 때문에 CloudTrail은 비정상적인 활동을 감지했을 때 Insights 이벤트를 로그했습니다. Insights 이벤트의 기록에 의하면 오전 5시 50분에서 5시 55분 사이 5분 동안 15 SendCommand 건의 전화가 걸려왔습니다. 이는 해당 계정에 대해 예상된 것보다 분당 약 두 번 더 많은 API 호출입니다. 이 예에서 그래프의 시간 범위는 3시간(오전 4시 30분)입니다. 2021년 7월 15일 오전 7시 30분(PDT)입니다. 2021년 7월 15일(PDT)입니다. 이 이벤트의 시작 시간은 2021년 7월 15일 오전 6시(PDT)이며 종료 시간은 2분 후입니다. 강조 표시되지 않은 종료 Insights 이벤트는 비정상적인 활동이 약 오전 6시 16분에 종료되었음을 보여줍니다.

기준은 Insights 이벤트가 시작되기 전 7일 동안 계산됩니다. 기준 기간(CloudTrail이 API에 대한 정상 활동을 측정하는 기간) 값은 약 7일이지만 CloudTrail이 기준 기간을 정수 일로 반올림하므로 정확한 기준 기간은 달라질 수 있습니다.


                    Insights 이벤트로 로그된 비정상적인 API 활동을 보여 주는 CloudTrail Insights 세부 정보 페이지입니다.

도구 모음에서 확대/축소(Zoom) 명령을 사용하여 시작 및 종료 시간을 표시하는 종료 Insights 이벤트를 확대할 수 있습니다. 이 예에서 확대/축소를 선택한 다음 확대/축소 커서를 강조 표시된 Insights 이벤트의 한 가장자리 위로 매우 짧은 거리로 드래그하면 Insights 이벤트가 확장되고 더 많은 타임라인 세부 정보가 표시됩니다.


                    타임라인 세부 정보를 표시하도록 확대된 CloudTrail Insights 이벤트입니다.

비정상적인 활동을 결정하기 위해 분석된 CloudTrail 이벤트를 보려면 CloudTrail 이벤트(CloudTrail events) 탭을 엽니다. 이 예에서 CloudTrail은 12개의 이벤트를 분석했으며 그 중 4개는 Insights 이벤트를 트리거했습니다.


                    타임라인 세부 정보를 표시하도록 확대된 CloudTrail Insights 이벤트입니다.

다음 스크린샷은 API 오류율 Insights 이벤트에 대한 Insights 그래프 탭을 보여줍니다. 강조 표시된 영역은 GetRolePolicy IAM API 호출의 NoSuchEntityException 오류 발생이 이 API 호출의 기준 평균인 분당 0.0017 NoSuchEntityException 오류를 초과하여 인사이트 기간 동안 분당 평균 18개의 오류가 발생했기 때문에 Insights 이벤트가 로그되었음을 보여줍니다. Insights 이벤트를 트리거한 CloudTrail 이벤트 수는 이 예에서 Insights 평균 1분 동안 18개의 NoSuchEntityException 오류와 일치합니다. API 호출률 그래프와 달리 API 오류율은 두 개의 줄을 대조적인 색상으로 표시합니다. 하나는 IAM API에 대한 호출을 측정하여 비정상적인 수의 오류를 발생시킨 GetRolePolicy이고 다른 하나는 비정상적인 활동이 기록된 오류를 측정한 NoSuchEntityException입니다.


                    Insights 이벤트로 로그된 비정상적인 오류율 활동을 보여 주는 CloudTrail Insights 세부 정보 페이지입니다.

속성(Attributions)

[속성(Attributions)] 탭에는 Insights 이벤트에 대한 다음 정보가 표시됩니다. 속성(Attributions) 탭의 정보는 Insights 활동의 원인과 소스를 식별하는 데 도움이 될 수 있습니다. 정상 기간 동안의 사용자 ID, 사용자 에이전트 및 오류 코드 활동을 Insights 활동 중에 발생한 활동과 비교하려면 상단 기준 영역을 확장하십시오. 상위 기준 사용자 ID ARN(Top baseline user identity ARNs), 상위 기준 사용자 에이전트(Top baseline user agents)상위 기준 오류 코드(Top baseline error codes)에는 기준 평균(Insights 이벤트 시작 시간 약 7일 전의 사용자 ID, 사용자 에이전트에 의해 기록되거나 오류 코드가 발생한 API에 대한 과거 평균 이벤트)만 표시됩니다.


                    속성을 보여 주는 CloudTrail Insights 이벤트 세부 정보 페이지입니다.

속성(Attributions) 탭에는 다음 그림과 같이 오류율 Insights 이벤트에 대한 상위 사용자 자격 증명 ARN 및 상위 사용자 에이전트만 표시됩니다. 오류율 Insights 이벤트에는 상위 오류 코드가 필요하지 않습니다.


                    오류율 Insights 이벤트에 대한 속성을 보여주는 CloudTrail Insights 이벤트 세부 정보 페이지입니다.
  • [상위 사용자 자격 증명 ARN(Top user identity ARNs)] - 이 테이블은 비정상적인 활동 및 기준 기간 동안 API 호출을 수행한 AWS 사용자 또는 IAM 역할(사용자 자격 증명)을 상위 5개까지(수행된 평균 API 호출 수를 기준으로 내림차순으로) 표시합니다. 비정상적인 활동을 수행한 활동 합계인 평균 백분율이 괄호 안에 표시됩니다. 비정상적인 활동을 수행한 사용자 자격 증명 ARN이 5개를 넘는 경우 해당 활동은 [기타(Other)] 행에 요약됩니다.

  • [상위 사용자 에이전트(Top user agents)] - 이 테이블은 비정상적인 활동 및 기준 기간 동안 사용자 자격 증명이 API 호출을 수행한 AWS 도구를 상위 5개까지(수행된 평균 API 호출 수를 기준으로 내림차순으로) 표시합니다. 이러한 도구에는 AWS Management Console, AWS CLI 또는 AWS SDK가 포함됩니다. 예를 들어 ec2.amazonaws.com이라는 사용자 에이전트는 Amazon EC2 콘솔이 API를 호출하는 데 사용된 도구 중 하나임을 나타냅니다. 비정상적인 활동을 수행한 활동 합계인 평균 백분율이 괄호 안에 표시됩니다. 비정상적인 활동을 수행한 사용자 에이전트가 5개를 넘는 경우 해당 활동은 [기타(Other)] 행에 요약됩니다.

  • 상위 오류 코드 - API 호출률 Insights 이벤트에 대해서만 표시됩니다. 이 테이블은 비정상적인 활동 및 기준 기간 동안 API 호출에서 발생한 오류 코드를 상위 5개까지(API 호출 수가 가장 많은 것에서 가장 작은 것까지 내림차순으로) 표시합니다. 비정상적인 활동을 수행한 활동 합계인 평균 백분율이 괄호 안에 표시됩니다. 비정상적인 활동 또는 기준 활동 중에 발생한 오류 코드가 5개를 넘는 경우 해당 활동은 [기타(Other)] 행에 요약됩니다.

    오류 코드 값 상위 5개 중 하나에 None 값이 표시되는 경우 이는 Insights 이벤트를 발생시킨 호출의 상당한 비율이 오류를 일으키지 않았음을 의미합니다. 오류 코드 값이 None이고 테이블에 다른 오류 코드가 없는 경우 [인사이트 평균(Insight average)] 및 [기준 평균(Baseline average)] 열의 값은 전체 Insights 이벤트의 값과 동일합니다. 또한 [Insights 그래프(Insights graph)] 탭의 [분당 API 호출(API calls per minute)] 아래에 있는 [인사이트 평균(Insight average)] 및 [기준 평균(Baseline average)] 범례에 표시된 해당 값도 볼 수도 있습니다.

기준 평균 및 Insights 평균

기준 평균(Baseline average)Insights 평균(Insights average)은 상위 사용자 자격 증명, 최상위 사용자 에이전트 및 상위 오류 코드에 대해 표시됩니다.

  • 기준 평균(Baseline average) - 계정의 특정 리전에서 약 지난 7일 이내에 측정된 Insights 이벤트가 로그된 API의 일반적인 분당 발생 비율입니다.

  • 인사이트 평균(Insights average) - Insights 이벤트를 트리거한 이 API에 대한 호출 또는 오류의 비율입니다. 시작 이벤트의 CloudTrail Insights 평균은 Insights 이벤트를 트리거한 API의 분당 호출 또는 오류의 비율입니다. 일반적으로 이것은 비정상적인 활동의 첫 번째 분입니다. 종료 이벤트의 Insights 평균은 시작 인사이트 이벤트와 종료 인사이트 이벤트 사이의 비정상적인 활동 기간 동안 분당 API 호출 또는 오류의 비율입니다.

[CloudTrail 이벤트(CloudTrail events)] 탭

[CloudTrail 이벤트(CloudTrail events)] 탭에서는 CloudTrail이 분석한 관련 이벤트를 확인하여 비정상적인 활동이 발생했는지 파악할 수 있습니다. 기본적으로 관련 API의 이름이기도 한 Insights 이벤트 이름에 대해 필터가 이미 적용되어 있습니다. 비정상적인 활동 기간 동안 로그된 모든 CloudTrail 이벤트를 표시하려면 [선택한 Insights 이벤트에 대한 이벤트만 표시(Only show events for selected Insights event)]를 비활성화합니다. [CloudTrail 이벤트(CloudTrail events)] 탭에는 Insights 이벤트의 시작 시간과 종료 시간 사이에 발생한 주제 API와 관련된 CloudTrail 관리 이벤트가 표시됩니다. 이러한 이벤트는 인사이트 이벤트의 발생 가능한 원인과 비정상적인 API 및 오류 비율 활동의 원인을 파악하기 위해 심층 분석을 수행하는 데 도움이 됩니다.

[Insights 이벤트 레코드(Insights event record)] 탭

CloudTrail 이벤트와 마찬가지로 CloudTrail Insights 이벤트는 JSON 형식의 레코드입니다. [Insights 이벤트 레코드(Insights event record)] 탭에는 이벤트 ‘페이로드’라고도 하는 Insights 시작 및 종료 이벤트의 JSON 구조와 내용이 표시됩니다. Insights 이벤트 레코드의 필드 및 내용에 대한 자세한 내용은 이 설명서의 Insights 이벤트의 레코드 필드CloudTrail Insights insightDetails 요소 단원을 참조하세요.

AWS Management Console을 사용하여 Insights 이벤트 로깅

기존 추적에서 CloudTrail Insights 이벤트를 사용 설정합니다. 기본적으로 Insights 이벤트는 사용 설정되어 있지 않습니다.

  1. CloudTrail 콘솔의 왼쪽 탐색 창에서 [추적(Trails)] 페이지를 열고 추적 이름을 선택합니다.

  2. [Insights 이벤트(Insights events)]에서 [편집(Edit)]을 선택합니다.

    참고

    인사이트 이벤트 로깅에는 추가 요금이 부과됩니다. CloudTrail 요금은 AWS CloudTrail 요금을 참조하세요.

  3. 이벤트 유형(Event type)에서 Insights 이벤트(Insights events)]를 선택합니다. Insights 이벤트를 로그하려면 [쓰기(Write)] 관리 이벤트를 로그 중이어야 합니다.

  4. Insights 이벤트(Insights events)Insights 유형 선택(Choose Insights types)에서 API 호출율(API call rate), API 오류율(API error rate) 또는 둘 다를 선택합니다.

  5. 변경 사항을 저장하려면 변경 사항 저장을 선택합니다.

비정상적인 활동이 감지된 경우 CloudTrail이 첫 번째 Insights 이벤트를 전달하는 데 최대 36시간이 걸릴 수 있습니다.

AWS Command Line Interface를 사용하여 Insights 이벤트 로깅

AWS CLI를 사용하여 Insights 이벤트를 로그하도록 추적을 구성할 수 있습니다.

추적이 Insights 이벤트를 로그하는지 여부를 확인하려면 get-insight-selectors 명령을 실행합니다.

aws cloudtrail get-insight-selectors --trail-name TrailName

다음 결과는 트레일의 기본 설정을 보여줍니다. 기본적으로 추적은 인사이트 이벤트를 로그하지 않습니다. 인사이트 이벤트 모음이 활성화되지 않았기 때문에 InsightType 속성 값이 비어 있고 인사이트 이벤트 선택기가 지정되지 않습니다.

Insights 선택기를 추가하지 않으면 get-insight-selectors 명령은 "GetInsightSelectors 작업을 호출할 때 오류가 발생했습니다(InsightNotEnabledException): 추적 이름에 Insights가 활성화되어 있지 않습니다. 추적 설정을 편집하여 Insights를 활성화한 다음 작업을 다시 시도하십시오.”라는 오류 메시지를 반환합니다.

{ "InsightSelectors": [ ], "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/TrailName" }

Insights 이벤트를 로그하도록 추적을 구성하려면 put-insight-selectors 명령을 실행합니다. 다음 예는 Insights 이벤트를 포함하도록 추적을 구성하는 방법을 보여 줍니다. Insights 선택기 값은 ApiCallRateInsight, ApiErrorRateInsight 또는 모두가 될 수 있습니다.

aws cloudtrail put-insight-selectors --trail-name TrailName --insight-selectors '[{"InsightType": "ApiCallRateInsight"},{"InsightType": "ApiErrorRateInsight"}]'

다음 결과는 트레일에 대해 구성된 인사이트 이벤트 선택기를 보여줍니다.

{ "InsightSelectors": [ { "InsightType": "ApiErrorRateInsight" }, { "InsightType": "ApiCallRateInsight" } ], "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/TrailName" }

AWS SDK를 사용하여 이벤트 로깅

GetInsightSelectors 작업을 실행하여 추적이 추적에 대한 Insights 이벤트를 로그하는지 여부를 확인합니다. PutInsightSelectors 작업을 사용하여 Insights 이벤트를 로그하도록 추적을 구성할 수 있습니다. 자세한 내용은 AWS CloudTrail API 참조를 참조하세요.

Amazon CloudWatch Logs에 이벤트 전송

CloudTrail은 CloudWatch Logs로의 Insights 이벤트 전송을 지원합니다. CloudWatch Logs 로그 그룹에 Insights 이벤트를 전송하도록 추적을 구성하면 CloudTrail Insights는 추적에 지정된 이벤트만 전송합니다. 예를 들어 관리 및 Insights 이벤트를 로그하도록 추적을 구성하는 경우 추적은 CloudWatch Logs 로그 그룹에 관리 및 Insights 이벤트를 전달합니다. CloudWatch 콘솔 또는 API를 사용하여 CloudWatch Events를 구성하려면 CloudWatch 콘솔의 [규칙 생성(Create rule)] 페이지에서 AWS Insight via CloudTrail 이벤트 유형을 선택합니다. 자세한 내용은 Amazon CloudWatch Logs로 CloudTrail 로그 파일 모니터링 단원을 참조하세요.

다음 이미지는 CloudWatch Events에서 생성된 예시 규칙 Insights-test-rule을 보여줍니다. CloudTrail이 Insights 이벤트를 로그할 때 규칙은 Amazon SNS 주제를 대상으로 하여 SNS 주제에 지정된 수신자에게 알림을 보냅니다.


                CloudTrail Insights에 대한 새 CloudWatch Events 규칙 구성.

이벤트 소스와 대상을 선택한 후 규칙의 이름을 지정하고 설명을 제공합니다. 작업을 마쳤으면 규칙 생성을 선택합니다.


                CloudTrail Insights에 대한 새 CloudWatch Events 규칙의 이름을 지정합니다.

CloudTrail이 Insights 이벤트를 로그할 때 SNS 주제의 수신자는 SNS 알림을 받게 됩니다.