Amazon EventBridge를 사용하여 GuardDuty 조사 결과 처리 - Amazon GuardDuty

Amazon EventBridge를 사용하여 GuardDuty 조사 결과 처리

GuardDuty는 서버리스 이벤트 버스 서비스인 Amazon EventBridge(이전 Amazon CloudWatch Events)에 자동으로 조사 결과를 이벤트로 게시(전송)합니다. EventBridge는 애플리케이션 및 서비스에서 Amazon Simple Notification Service(Amazon SNS) 토픽, AWS Lambda 함수, Amazon Kinesis 스트림과 같은 대상으로 실시간에 가깝게 데이터 스트림을 전달합니다. 자세한 내용은 Amazon EventBridge 사용 설명서를 참조하세요.

EventBridge를 사용하면 이벤트를 수신하여 GuardDuty 조사 결과를 자동으로 모니터링하고 처리할 수 있습니다. EventBridge는 새로 생성된 조사 결과와 집계된 조사 결과 모두에 대한 이벤트를 수신하며, 기존 조사 결과의 후속 발생은 원본과 결합됩니다. 모든 GuardDuty 조사 결과에는 조사 결과 ID가 할당됩니다. GuardDuty는 각 조사 결과마다 고유한 조사 결과 ID를 포함한 EventBridge 이벤트를 생성합니다. GuardDuty에서 집계가 작동하는 방식에 대한 자세한 내용은 GuardDuty 결과 집계 섹션을 참조하세요.

자동 모니터링 및 처리 외에도 EventBridge를 사용하면 조사 결과 데이터를 장기간 보존할 수 있습니다. GuardDuty는 90일 동안 조사 결과를 저장합니다. EventBridge를 사용하면 조사 결과 데이터를 선호하는 스토리지 플랫폼으로 보내고 원하는 기간 동안 데이터를 저장할 수 있습니다. 더 긴 기간 동안 조사 결과를 유지하기 위해 GuardDuty는 생성된 조사 결과를 Amazon S3로 내보내기를 지원합니다.

GuardDuty의 EventBridge 알림 빈도 이해

이 섹션에서는 EventBridge를 통해 조사 결과 알림을 수신하는 빈도와 후속 조사 결과 발생 빈도를 업데이트하는 방법을 설명합니다.

고유한 조사 결과 ID가 있는 새로 생성된 조사 결과 알림

GuardDuty는 고유한 조사 결과 ID로 조사 결과를 생성할 때 거의 실시간으로 이러한 알림을 보냅니다. 알림에는 알림 생성 프로세스 중에이 조사 결과 ID의 모든 후속 발생이 포함됩니다.

새로 생성된 조사 결과의 알림 빈도는 거의 실시간으로 표시됩니다. 기본적으로이 빈도는 수정할 수 없습니다.

후속 결과 발생에 대한 알림

GuardDuty는 6시간 간격 내에 발생하는 특정 조사 결과 유형의 모든 후속 발생 사례를 한 이벤트로 통합합니다. 관리자 계정만 후속 조사 결과 발생에 대한 EventBridge 알림 빈도를 업데이트할 수 있습니다. 멤버 계정은 자신의 계정에 대해이 빈도를 업데이트할 수 없습니다. 예를 들어 위임된 GuardDuty 관리자 계정이 빈도를 1시간으로 업데이트하는 경우 모든 멤버 계정은 EventBridge로 전송된 후속 조사 결과 발생에 대해서도 1시간의 알림 빈도를 갖습니다. 자세한 내용은 Amazon GuardDuty에서 다중 계정 섹션을 참조하세요.

관리자 계정에서는 후속 검색어 발생에 대한 알림의 기본 빈도를 사용자 지정할 수 있습니다. 가능한 값은 15분, 1시간 또는 기본값 6시간입니다. 이러한 알림의 빈도 설정에 대한 자세한 내용은 5단계 - 업데이트된 활성 조사 결과 내보내기 빈도 설정하기 섹션을 참조하세요.

멤버 계정에 대한 EventBridge 알림을 수신하는 관리자 계정에 대한 자세한 내용은 다중 계정 환경용 EventBridge 규칙 섹션을 참조하세요.

Amazon SNS 주제 및 엔드포인트 설정(이메일, Slack 및 Amazon Chime)

Amazon Simple Notification Service(Amazon SNS)는 게시자에서 구독자에게 메시지를 전송하는 관리형 서비스입니다. 게시자는 주제에 메시지를 전송하여 구독자와 비동기적으로 통신합니다. 주제는 AWS Lambda, Amazon Simple Queue Service(Amazon SQS), HTTP/S, 이메일 주소와 같은 여러 엔드포인트를 그룹화할 수 있는 논리적 액세스 포인트와 통신 채널입니다.

참고

EventBridge 이벤트 규칙 생성 중 또는 생성 후 선호하는 이벤트 규칙에 Amazon SNS 주제를 추가할 수 있습니다.

Amazon SNS 주제 생성

시작하려면 먼저 Amazon SNS에서 주제를 설정하고 엔드포인트를 추가해야 합니다. 주제를 생성하려면 Amazon Simple Notification Service 개발자 안내서Step 1: Creating a topic의 단계를 수행하세요. 주제가 생성되면 주제 ARN을 클립보드에 복사합니다. 이 주제 ARN을 사용하여 기본 설정 중 하나를 계속 진행합니다.

원하는 방법을 선택하여 GuardDuty 조사 결과 데이터를 전송할 위치를 설정합니다.

Email setup

이메일 엔드포인트를 설정하려면

Create an Amazon SNS topic 이후 다음 단계는이 주제에 대한 구독을 생성하는 것입니다. Amazon Simple Notification Service 개발자 안내서Step 2: Creating a subscription to an Amazon SNS topic 아래의 단계를 수행하세요.

  1. 주제 ARN의 경우 Create an Amazon SNS topic 단계에서 생성된 주제 ARN을 사용합니다. ARN 주제는 다음과 유사합니다.

    arn:aws:sns:us-east-2:123456789012:your_topic
  2. 프로토콜에서 이메일을 선택합니다.

  3. 엔드포인트는 Amazon SNS 알림을 받을 이메일 주소를 입력합니다.

    구독이 생성된 후에는 이메일 클라이언트를 통해 이를 확인해야 합니다.

Slack setup

채팅 애플리케이션 - Slack에서 Amazon Q Developer 구성하기

Create an Amazon SNS topic 이후 다음 단계는 Slack용 클라이언트를 구성하는 것입니다.

채팅 애플리케이션의 Amazon Q Developer 관리자 안내서Tutorial: Get started with Slack에서 단계를 수행합니다.

Chime setup

채팅 애플리케이션 - Chime에서 Amazon Q Developer 구성하기

Create an Amazon SNS topic 이후 다음 단계는 Chime용 Amazon Q Developer를 구성하는 것입니다.

채팅 애플리케이션의 Amazon Q Developer 관리자 안내서Tutorial: Get started with Amazon Chime에서 단계를 수행합니다.

GuardDuty 조사 결과에 Amazon EventBridge 사용

EventBridge를 사용하면 모니터링하려는 이벤트를 지정하는 규칙을 생성합니다. 또한 이러한 규칙은 이러한 이벤트가 발생할 경우 자동화된 작업을 수행할 수 있는 대상 서비스 및 애플리케이션을 지정합니다. 대상은 이벤트가 규칙에 정의된 이벤트 패턴과 일치할 때 EventBridge가 이벤트를 전송하는 대상(리소스 또는 엔드포인트)입니다. 각 이벤트는 AWS 이벤트에 대한 EventBridge 스키마를 준수하는 JSON 객체이며, 조사 결과의 JSON 표현을 포함합니다. 특정 기준을 충족하는 이벤트만 전송하도록 규칙을 조정할 수 있습니다. 자세한 내용은 [JSON 스키마 주제]를 참조하세요. 조사 결과 데이터는 EventBridge 이벤트로 구조화되므로 다른 애플리케이션, 서비스 및 도구를 사용하여 조사 결과를 모니터링, 처리하고 이에 따라 조치를 취할 수 있습니다.

이벤트에 기반한 GuardDuty 조사 결과에 대해 알림을 받으려면 GuardDuty에 대한 EventBridge 규칙 및 목표를 생성해야 합니다. 이 규칙은 규칙에 지정된 목표에 대해 GuardDuty에서 발생하는 조사 결과에 대한 알림을 보내도록 EventBridge를 활성화합니다.

참고

EventBridge와 CloudWatch Event는 기본 서비스 및 API가 동일합니다. 그러나 EventBridge에는 서비스형 소프트웨어(SaaS)애플리케이션 및 자체 애플리케이션에서 이벤트를 수신할 수 있는 추가 기능이 포함되어 있습니다. 기본 서비스와 API가 동일하기 때문에 GuardDuty 조사 결과의 이벤트 스키마도 동일합니다.

GuardDuty에서 보관 및 보관되지 않은 조사 결과가 EventBridge와 작동하는 방법

수동으로 보관하는 조사 결과의 경우, 그 조사 결과의 초기 발생과 후속 발생(보관 완료 후 생성된 것)은 특정 알림 빈도에 따라 EventBridge로 전송됩니다. 자세한 내용은 GuardDuty의 EventBridge 알림 빈도 이해 섹션을 참조하세요.

억제 규칙로 자동 보관빙되는 조사 결과의 경우, 그 조사 결과의 초기 발생과 이후 모든 발생(보관 완료 후 생성된 것)은 EventBridge로 전송되지 않습니다. 자동으로 보관된 이 조사 결과는 GuardDuty 콘솔에서 확인할 수 있습니다.

이벤트 스키마

이벤트 패턴이 이벤트를 대상으로 전송할지 여부를 결정하는 데 EventBridge가 사용하는 데이터를 정의합니다. GuardDuty용 EventBridge 이벤트의 형식은 다음과 같습니다.

{ "version": "0", "id": "cd2d702e-ab31-411b-9344-793ce56b1bc7", "detail-type": "GuardDuty Finding", "source": "aws.guardduty", "account": "111122223333", "time": "1970-01-01T00:00:00Z", "region": "us-east-1", "resources": [], "detail": {GUARDDUTY_FINDING_JSON_OBJECT} }

detail 값은 한 조사 결과의 JSON 세부 정보를 객체 형태로 반환합니다. 이는 배열 내에 여러 조사 결과를 지원하는 전체 조사 결과 응답 구문을 반환하는 것과 대비됩니다.

GUARDDUTY_FINDING_JSON_OBJECT에 포함된 모든 파라미터의 전체 목록은 GetFindings를 참조하세요. id에 보이는GUARDDUTY_FINDING_JSON_OBJECT 파라미터가 이전에 설명한 결과 ID입니다.

GuardDuty 조사 결과를 위한 EventBridge 규칙 생성

다음 절차에서는 Amazon EventBridge 콘솔 및 AWS Command Line Interface(AWS CLI)를 사용하여 GuardDuty 조사 결과에 대한 EventBridge 규칙을 생성하는 방법에 대해 설명합니다. 규칙은 GuardDuty 조사 결과에 대한 이벤트 스키마 및 패턴을 사용하는 EventBridge 이벤트를 감지한 다음, 처리를 위해 해당 이벤트를 AWS Lambda 함수로 전송합니다.

AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고 코드를 실행하는 데 사용할 수 있는 컴퓨팅 서비스입니다. 코드를 패키징하여 AWS Lambda에 로Lambda 함수로 업로드합니다. 그러면 AWS Lambda에서는 해당 함수가 호출될 때 실행합니다. 함수는 이벤트에 대한 응답으로 또는 애플리케이션 또는 서비스의 요청에 대한 응답으로 사용자가 수동으로 또는 자동으로 호출할 수 있습니다. Lambda 함수에 대한 자세한 내용은 AWS Lambda개발자 가이드를 참조하세요.

원하는 방법을 선택하여 GuardDuty 조사 결과를 대상으로 보내는 EventBridge 규칙을 생성합니다.

Console

이 단계에 따라 Amazon EventBridge 콘솔을 사용하여 모든 GuardDuty 조사 결과 이벤트를 Lambda 함수로 자동 전송하여 처리하는 규칙을 생성합니다. 규칙은 특정 이벤트가 수신될 때 실행되는 규칙의 기본 설정을 사용합니다. 규칙 설정에 대한 자세한 내용이나 사용자 지정 설정을 사용하는 규칙을 생성하는 방법을 알아보려면 Amazon EventBridge 사용 설명서Creating rules that react to events 섹션을 참조하세요.

규칙을 생성하려면 규칙에서 대상으로 사용하도록 하려는 Lambda 함수를 생성합니다. 규칙을 생성할 때 이 함수를 규칙의 대상으로 지정해야 합니다. 대상은 이전에 생성한 SNS 주제일 수도 있습니다. 자세한 내용은 Amazon SNS 주제 및 엔드포인트 설정(이메일, Slack 및 Amazon Chime) 섹션을 참조하세요.

콘솔을 사용하여 이벤트 규칙을 생성하려면
  1. AWS Management 콘솔에 로그인하고 https://console.aws.amazon.com/events/에서 Amazon EventBridge 콘솔을 엽니다.

  2. 탐색 창의 버스 아래에서 규칙을 선택합니다.

  3. Rules(규칙) 섹션에서 Create rule(규칙 생성)을 선택합니다.

  4. 규칙 세부 정보 정의 페이지에서 다음을 수행합니다.

    1. Name(이름)에 규칙 이름을 입력합니다.

    2. (선택 사항) 설명에 규칙에 대한 간략한 설명을 입력합니다.

    3. 이벤트 버스의 경우 기본값이 선택되어 있고 선택한 이벤트 버스에 대해 규칙 활성화가 켜져 있는지 확인하세요.

    4. 규칙 유형(Rule type)에서 이벤트 패턴이 있는 규칙(Rule with an event pattern)을 생성합니다.

    5. 마쳤으면 다음을 선택합니다.

  5. 이벤트 패턴 빌드 페이지에서 다음을 수행합니다.

    1. 이벤트 소스에서 AWS 이벤트 또는 EventBridge 파트너 이벤트를 선택합니다.

    2. (선택 사항) 샘플 이벤트의 경우 GuardDuty의 샘플 조사 결과 이벤트를 검토하여 이벤트에 포함될 수 있는 항목을 알아보세요. 이렇게 하려면 AWS 이벤트를 선택하세요. 그런 다음 샘플 이벤트에서 GuardDuty 조사 결과를 선택합니다.

    3. 옵션 1 - EventBridge가 제공하는 템플릿인 패턴 양식 사용

      이벤트 패턴 섹션에서 다음을 수행합니다.

      1. 생성 방법패턴 양식 사용을 선택합니다.

      2. 이벤트 소스에서 AWS 서비스를 선택합니다.

      3. AWS 서비스GuardDuty를 선택합니다.

      4. 이벤트 유형에서 GuardDuty 조사 결과를 선택합니다.

      마쳤으면 다음을 선택합니다.

    4. 옵션 2 - JSON에서 사용자 지정 이벤트 패턴 사용

      이벤트 패턴 섹션에서 다음을 수행합니다.

      1. 생성 방법사용자 지정 패턴(JSON 편집기)을 선택합니다.

      2. 이벤트 패턴에 다음과 같은 사용자 지정 JSON을 붙여넣으면 중간, 높음 및 중요 조사 결과에 대한 알림이 생성됩니다. 자세한 내용은 검색 조사 결과 심각도 수준 섹션을 참조하세요.

        { "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "severity": [ 4, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6, 6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 8, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9, 9.0, 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10, 10.0 ] } }

      마쳤으면 다음을 선택합니다.

  6. 옵션 A - AWS 서비스 - AWS Lambda를 대상으로 선택

    대상 선택 페이지에서 다음을 수행합니다.

    1. 대상 유형의 경우 AWS 서비스를 선택합니다.

    2. 대상 선택에서 Lambda 함수를 선택합니다. 그런 다음 함수에서 이벤트를 보낼 함수를 선택합니다.

    3. 버전/별칭 구성에 대상 Lambda 함수의 버전 또는 별칭 설정을 입력합니다.

    4. (선택 사항) 추가 설정의 경우 사용자 지정 설정을 입력하여 Lambda 함수로 전송할 이벤트 데이터를 지정합니다. 함수에 성공적으로 전달되지 않은 이벤트를 처리하는 방법도 지정할 수 있습니다.

    5. 마쳤으면 다음을 선택합니다.

  7. 옵션 B - 대상으로 SNS 주제 선택

    대상 선택 페이지에서 다음을 수행합니다.

    1. 대상 유형의 경우 AWS 서비스를 선택합니다.

    2. 대상 선택에서 SNS 주제를 선택합니다. 그런 다음 대상 위치에서 대상 위치에 따라 적절한 옵션을 선택합니다. 주제는 생성한 SNS 주제의 이름을 선택합니다.

    3. 추가 설정을 폅니다. 대상 입력 구성입력 트랜스포머를 선택합니다.

    4. Configure input transformer(입력 구성 변환기)를 선택합니다.

    5. 다음 코드를 복사하여 대상 입력 트랜스포머 섹션 아래의 입력 경로 필드에 붙여 넣으세요.

      { "severity": "$.detail.severity", "Account_ID": "$.detail.accountId", "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
    6. 다음 코드를 복사하고 템플릿 필드에 붙여 넣어 이메일의 형식을 지정합니다.

      "You have a severity <severity> GuardDuty finding type <Finding_Type> in the <region> Region." "Finding Description:" "<Finding_description>. " "For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?region=<region>#/findings?search=id%3D<Finding_ID>"
  8. 태그 구성 페이지에서 규칙에 할당할 하나 이상의 태그를 선택적으로 입력합니다. 그런 다음 다음을 선택합니다.

  9. 검토 및 생성 페이지에서 규칙의 설정을 검토하고 올바른지 확인합니다.

    설정을 변경하려면, 설정이 포함된 섹션에서 편집을 선택한 다음, 올바른 설정을 입력합니다. 탐색 탭을 사용하여 설정이 포함된 페이지로 이동할 수도 있습니다.

  10. 설정 검증을 마치면 생성를 선택합니다.

API

다음 절차는 AWS CLI 명령을 사용하여 GuardDuty 서비스에 대한 EventBridge 규칙 및 대상을 만드는 방법을 보여줍니다. 특히, GuardDuty에서 생성한 모든 조사 결과에 대한 이벤트를 보내고 조사 결과에 대한 대상으로 AWS Lambda 함수를 생성하도록 EventBridge를 활성화하는 규칙을 생성하는 방법을 보여줍니다.

참고

이 예에서는 EventBridge를 트리거하는 규칙의 대상으로 Lambda 함수를 사용합니다. 그런 다음 EventBridge를 트리거하기 위한 대상으로 다른 AWS 리소스를 구성할 수도 있습니다. GuardDuty와 EventBridge에서는 Amazon EC2 인스턴스, Amazon Kinesis 스트림, Amazon ECS 태스크, AWS Step Functions 상태 머신, run 명령어 및 내장 대상을 지원합니다. 자세한 내용은 Amazon EventBridge API 참조PutTargets를 참조하세요.

규칙 및 대상을 만들려면
  1. GuardDuty에서 생성한 모든 조사 결과에 대한 이벤트를 보내도록 EventBridge를 활성화하는 규칙을 만들려면 다음 EventBridge CLI 명령을 실행합니다.

    aws events put-rule --name your-rule-name --event-pattern "{\"source\":[\"aws.guardduty\"]}"

    규칙을 추가적으로 사용자 지정하여 GuardDuty에서 생성한 조사 결과의 하위 집합에 대해서만 이벤트를 보내도록 EventBridge에 지시할 수 있습니다. 이 하위 집합은 규칙에서 지정되는 결과 속성 또는 속성을 기반으로 합니다. 예를 들어 다음 CLI 명령을 사용하여 심각도가 5 또는 8인 GuardDuty 조사 결과에 대해서만 EventBridge에서 이벤트를 보낼 수 있는 규칙을 생성합니다.

    aws events put-rule --name your-rule-name --event-pattern "{\"source\":[\"aws.guardduty\"],\"detail-type\":[\"GuardDuty Finding\"],\"detail\":{\"severity\":[5,8]}}"

    이를 위해 JSON에서 사용할 수 있는 속성 값을 GuardDuty 결과에 사용할 수 있습니다.

  2. 1단계에서 만든 규칙에 대한 대상으로 Lambda 함수를 연결하려면 다음 CloudWatch CLI 명령을 실행합니다.

    aws events put-targets --rule your-target-name --targets Id=1,Arn=arn:aws:lambda:us-east-1:111122223333:function:your_function

    위의 명령에서 your-target-name을 GuardDuty 이벤트의 실제 Lambda 함수로 바꿔야 합니다.

  3. 대상을 간접적으로 호출하는 데 필요한 권한을 추가하려면 다음 Lambda CLI 명령을 실행합니다.

    aws lambda add-permission --function-name your-target-name --statement-id 1 --action 'lambda:InvokeFunction' --principal events.amazonaws.com

    위의 명령에서 your_function을 GuardDuty 이벤트의 실제 Lambda 함수로 바꿔야 합니다.

GuardDuty 다중 계정 환경용 EventBridge 규칙

위임된 GuardDuty 관리자 계정을 사용하는 경우 멤버 계정에서 생성된 이벤트를 보고 다른 애플리케이션과 서비스를 사용하여 조치를 취할 수 있습니다. 관리자 계정의 EventBridge 규칙은 회원 계정에서 확인된 적용 가능한 조사 결과에 따라 트리거됩니다. 관리자 계정의 EventBridge를 통해 조사 결과 알림을 설정하면 계정과 멤버 계정 모두에서 조사 결과에 대한 알림을 받게 됩니다. 예를 들어 EventBridge를 사용하여 특정 유형의 새로운 조사 결과를 Lambda 함수에 전송하면, 해당 함수가 데이터를 처리하여 보안 인시던트 및 이벤트 관리(SIEM) 시스템으로 전송할 수 있습니다.

조사 결과의 JSON 세부 정보에 있는 accountId 필드를 사용하여 GuardDuty 조사 결과의 출처 멤버 계정을 식별할 수 있습니다. 특정 멤버 계정에 대한 사용자 지정 이벤트 규칙을 생성하려면 새 규칙을 생성하고 이벤트 패턴에서 다음 템플릿을 사용합니다. 123456789012을 이벤트를 트리거하려는 멤버 계정의 accountId로 바꿉니다.

{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "accountId": [ "123456789012" ] } }
참고

이 예제에서는 지정된 계정 ID의 모든 조사 결과와 일치하는 규칙을 생성합니다. JSON 구문에 따라 여러 계정 IDs 쉼표로 구분하여 포함할 수 있습니다.