특정 AWS 서비스 이벤트 유형이 트리거되는 경우 사용자 지정 SNS 알림을 보내도록 GuardDuty의 Eventbridge 규칙을 구성하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2022년 1월 10일

Amazon GuardDuty의 서비스 이벤트 유형에서 트리거되는 Amazon EventBridge 규칙을 생성했는데 응답이 JSON 형식입니다. 사용자 지정 알림이 포함된 이메일 응답을 받으려면 어떻게 해야 하나요?

간략한 설명

Eventbridge 규칙에 사용자 지정 이벤트 패턴을 사용하여 특정 결과 유형을 찾습니다. 그런 다음 응답을 Amazon Simple Notification Service(Amazon SNS) 주제로 라우팅합니다.

해결 방법

이 예에서는 Amazon GuardDuty 이벤트 유형 UnauthorizedAccess:EC2/MaliciousIPCaller.Custom을 사용합니다.

참고: 특정 AWS 서비스의 서비스 이름 및 이벤트 유형을 바꿀 수 있습니다.

1.    Amazon SNS 주제를 아직 생성하지 않은 경우 Amazon SNS 시작하기의 지침을 따릅니다.

참고: Amazon SNS 주제는 Amazon GuardDuty 서비스와 동일한 리전에 있어야 합니다.

2.    [EventBridge 콘솔]을 엽니다.

3.    규칙 생성(Create rule)을 선택합니다.

4.    규칙의 이름(Name)을 입력합니다. 설명(Description)을 입력할 수도 있습니다(선택 사항).

5.    패턴 정의(Define pattern)에서 이벤트 패턴(Event pattern)을 선택합니다.

6.    서비스에서 제공하는 사전 정의된 패턴(Pre-defined pattern by service)을 선택합니다.

7.    [서비스 공급자(Service provider)에서 [AWS]를 선택합니다.

8.    서비스 이름(Service name)에서 GuardDuty를 선택합니다.

9.    이벤트 유형(Event Type)에서 GuardDuty 결과(GuardDuty Finding)를 선택합니다.

10.    이벤트 패턴(Event pattern) 미리 보기 섹션에서 편집(Edit)을 선택합니다.

11.    다음 코드를 복사하여 이벤트 패턴(Event pattern) 미리 보기에 붙여넣은 후 저장(Save)을 선택합니다.

{
  "source": [
    "aws.guardduty"
  ],
  "detail": {
    "type": [
      "UnauthorizedAccess:EC2/MaliciousIPCaller.Custom"
     ]
  }
}

12.    이벤트 버스 선택(Select event bus)에서 AWS 기본 이벤트 버스(AWS default event bus)를 선택합니다.

13.    대상 선택(Select targets)에서 SNS 주제(SNS topic)를 선택한 다음, 이전에 생성한 SNS 주제를 선택합니다.

14.    입력 구성(Configure input)을 확장한 후 입력 변환기(Input Transformer)를 선택합니다.

15.    다음 코드를 복사합니다. 그런 다음 입력 경로(Input Path)에 붙여 넣습니다.

{
    "severity": "$.detail.severity",
    "Finding_ID": "$.detail.id",
    "instanceId": "$.detail.resource.instanceDetails.instanceId",
    "port": "$.detail.service.action.networkConnectionAction.localPortDetails.port",
    "eventFirstSeen": "$.detail.service.eventFirstSeen",
    "eventLastSeen": "$.detail.service.eventLastSeen",
    "count": "$.detail.service.count",
    "Finding_Type": "$.detail.type",
    "region": "$.region",
    "Finding_description": "$.detail.description"
}

16.    다음 코드를 복사합니다. 그런 다음 입력 템플릿(Input Template)에 붙여 넣습니다.

"You have a severity <severity> GuardDuty finding type <Finding_Type> for the EC2 instance <instanceId> in the region <region> as the <Finding_description> on the port <port>. The first attempt was on <eventFirstSeen> and the most recent attempt on <eventLastSeen> . The total occurrence is <count>. For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?region=<region>#/findings?search=id%3D<Finding_ID>"

17.    페이지 하단으로 스크롤하여 생성(Create)을 선택합니다.

18.    이벤트 유형이 트리거되면 다음과 같이 16단계에서 입력한 사용자 지정 필드가 포함된 SNS 이메일 알림이 수신됩니다.

"You have a severity 5 GuardDuty finding type UnauthorizedAccess:EC2/MaliciousIPCaller.Custom for the EC2 instance EXAMPLEID in the region EXAMPLEREGION as the EC2 instance EXAMPLE is communicating with a disallowed IP address EXAMPLEREMOTEIP on the EXAMPLELIST on the port EXAMPLEPORT. The first attempt was on EXAMPLEDATE1 and the most recent attempt on EXAMPLEDATE2. The total occurrence is COUNTEXAMPLE. For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?EXAMPLEREGION"