Amazon CloudWatch Events를 사용하여 GuardDuty 결과에 대한 사용자 지정 응답 생성 - 아마존 GuardDuty

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon CloudWatch Events를 사용하여 GuardDuty 결과에 대한 사용자 지정 응답 생성

GuardDuty 결과가 변경되면 Amazon CloudWatch Events에 대한 이벤트를 생성합니다. CloudWatch 이벤트를 생성하는 변경 사항 검색에는 새로 생성된 결과 또는 새로 집계된 결과가 포함됩니다. 이벤트는 최선의 작업을 기반으로 발생됩니다.

모든 GuardDuty 검색 결과에는 검색 결과 ID가 할당됩니다. GuardDuty 고유한 찾기 ID를 사용하여 모든 검색 결과에 대해 CloudWatch 이벤트를 생성합니다. 기존 결과의 후속 발생은 모두 원래 결과에 집계됩니다. 자세한 설명은 GuardDuty 집계 결과 찾기 섹션을 참조하세요.

참고

계정이 GuardDuty 위임된 관리자인 경우 CloudWatch 이벤트는 사용자 계정뿐만 아니라 검색 결과가 생성된 회원 계정에도 게시됩니다.

에서 CloudWatch 이벤트를 사용하면 GuardDuty GuardDuty 조사 결과로 밝혀진 보안 문제에 대응하는 데 도움이 되는 작업을 자동화할 수 있습니다.

이벤트 기반 GuardDuty 결과에 대한 알림을 받으려면 CloudWatch CloudWatch 이벤트 규칙과 대상을 만들어야 GuardDuty 합니다. 이 규칙을 사용하면 GuardDuty 생성된 결과에 대한 알림을 규칙에 지정된 대상에 CloudWatch 보낼 수 있습니다. 자세한 설명은 GuardDuty (CLI) 에 대한 CloudWatch 이벤트 규칙 및 대상 생성 섹션을 참조하세요.

CloudWatch 이벤트 알림 빈도: GuardDuty

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

GuardDuty 발견 후 5분 이내에 CloudWatch 이벤트를 기반으로 알림을 보냅니다. 이 이벤트(및 알림)는 또한 고유한 ID를 포함한 이 결과가 생성된 이후 5분마다 발생하는 이 결과의 모든 후속 발생을 포함합니다.

참고

새로 생성된 결과에 대한 알림의 기본 빈도는 5분입니다. 이 빈도는 업데이트할 수 없습니다.

후속 결과 발생에 대한 알림

기본적으로 고유한 검색 결과 ID를 가진 모든 검색 결과에 대해 6시간 간격 내에 발생하는 특정 검색 결과 유형의 모든 후속 항목을 단일 이벤트로 GuardDuty 집계합니다. GuardDuty 그러면 이 이벤트를 기반으로 이러한 후속 발생에 대한 알림을 보냅니다. 기본적으로 기존 검색 결과가 이후에 발생하는 경우 CloudWatch 이벤트를 기반으로 GuardDuty 6시간마다 알림을 보냅니다.

관리자 계정 계정만 후속 이벤트 발생 발견에 대해 전송되는 알림의 기본 빈도를 사용자 지정할 수 있습니다. CloudWatch 멤버 계정의 사용자는 이 빈도 값을 사용자 지정할 수 없습니다. 관리자 계정 계정이 자체 계정에 설정한 빈도 값은 모든 구성원 계정의 GuardDuty 기능에 적용됩니다. 관리자 계정 사용자가 이 빈도 값을 1시간으로 설정하면 모든 구성원 계정에서 1시간 간격으로 다음 검색 결과 발생 빈도에 대한 알림을 받게 됩니다. 자세한 설명은 Amazon에서 여러 계정 관리 GuardDuty 섹션을 참조하세요.

참고

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

이벤트를 사용하여 보관된 결과를 GuardDuty 모니터링합니다. CloudWatch

수동으로 보관된 검색 결과의 경우 이러한 검색 결과의 초기 및 이후에 발생하는 모든 결과 (보관이 완료된 후 생성됨) 는 위에서 설명한 빈도에 따라 CloudWatch 이벤트로 전송됩니다.

자동 보관된 검색 결과의 경우 이러한 검색 결과가 처음 발생하거나 이후에 발생하는 모든 결과 (보관이 완료된 후 생성됨) 는 Events로 전송되지 않습니다. CloudWatch

CloudWatch 이벤트 형식: GuardDuty

의 CloudWatch 이벤트 GuardDuty 형식은 다음과 같습니다.

{ "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} }
참고

세부 정보 값은 단일 결과에 대한 JSON 세부 정보를 객체로 반환하지만, 배열 내에서 여러 결과를 지원할 수 있는 “결과” 값을 반환합니다.

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

GuardDuty 결과를 알려주는 CloudWatch 이벤트 규칙 만들기 (콘솔)

Events with GuardDuty 를 사용하면 찾기 CloudWatch 이벤트를 메시징 허브로 전송하여 GuardDuty 검색 GuardDuty 결과의 가시성을 높이는 데 도움이 되도록 자동 찾기 알림을 설정할 수 있습니다. 이 주제에서는 SNS 주제를 설정한 다음 해당 주제를 Events 이벤트 규칙에 연결하여 결과 알림을 이메일, Slack 또는 Amazon Chime으로 CloudWatch 보내는 방법을 보여줍니다.

Amazon SNS 주제 및 엔드포인트 설정

시작하려면 먼저 Amazon Simple Notification Service에서 주제를 설정하고 엔드포인트를 추가해야 합니다. 자세한 내용은 Amazon Simple Notification Service 개발자 안내서시작하기를 참조하세요.

이 절차를 통해 검색 결과 데이터를 전송할 GuardDuty 위치를 설정합니다. 이벤트 규칙 생성 중 또는 생성 후에 CloudWatch 이벤트 이벤트 규칙에 SNS 주제를 추가할 수 있습니다.

Email setup
SNS 주제 생성
  1. Amazon SNS 콘솔(https://console.aws.amazon.com/sns/v3/home)에 로그인합니다.

  2. 탐색 창에서 주제를 선택한 다음 주제 생성을 선택합니다.

  3. 주제 생성 섹션에서 표준을 선택합니다. 다음으로 주제 이름을 입력합니다(예: GuardDuty_to_Email). 기타 세부 정보는 선택 사항입니다.

  4. 주제 생성을 선택합니다. 새로운 주제에 대한 주제 세부 정보가 열립니다.

  5. 구독 섹션에서 구독 생성을 선택합니다.

    1. 프로토콜 메뉴에서 이메일을 선택합니다.

    2. 엔드포인트 필드에서 알림을 받을 이메일 주소를 추가합니다.

      참고

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

    3. 구독 생성을 선택합니다.

  6. 받은 편지함에서 구독 메시지를 확인하고 구독 확인을 선택합니다.

Slack setup
SNS 주제 생성
  1. Amazon SNS 콘솔(https://console.aws.amazon.com/sns/v3/home)에 로그인합니다.

  2. 탐색 창에서 주제를 선택한 다음 주제 생성을 선택합니다.

  3. 주제 생성 섹션에서 표준을 선택합니다. 다음으로 주제 이름을 입력합니다(예: GuardDuty_to_Slack). 기타 세부 정보는 선택 사항입니다. 주제 생성을 선택하여 마무리합니다.

AWS Chatbot 클라이언트 구성
  1. AWS Chatbot 콘솔로 이동

  2. 구성된 클라이언트 패널에서 새 클라이언트 구성을 선택합니다.

  3. Slack을 선택하고 ‘구성’을 선택하여 확인합니다.

    참고

    Slack을 선택할 때는 ‘허용’을 선택하여 AWS Chatbot의 채널 액세스 권한을 확인해야 합니다.

  4. 새 채널 구성을 선택하여 구성 세부 정보 창을 엽니다.

    1. 채널 이름을 입력합니다.

    2. Slack 채널의 경우 사용할 채널을 선택합니다. AWS Chatbot에서 프라이빗 Slack 채널을 사용하려면 프라이빗 채널을 선택합니다.

    3. Slack에서 채널 이름을 마우스 오른쪽 버튼으로 클릭하고 링크 복사를 선택하여 프라이빗 채널의 채널 ID를 복사합니다.

    4. AWS 관리 콘솔의 AWS Chatbot 창에서 Slack에서 복사한 ID를 프라이빗 채널 ID 필드에 붙여넣습니다.

    5. 권한에서 아직 역할이 없는 경우 템플릿을 사용하여 IAM 역할을 생성하도록 선택합니다.

    6. 정책 템플릿에서 Notification permissions를 선택합니다. 이는 AWS Chatbot에 대한 IAM 정책 템플릿입니다. CloudWatch 경보, 이벤트, 로그, Amazon SNS 주제에 필요한 읽기 및 목록 권한을 제공합니다.

    7. 이전에 SNS 주제를 만든 리전을 선택한 다음 생성한 Amazon SNS 주제를 선택하여 Slack 채널에 알림을 전송합니다.

  5. 구성을 선택합니다.

Chime setup
SNS 주제 생성
  1. Amazon SNS 콘솔(https://console.aws.amazon.com/sns/v3/home)에 로그인합니다.

  2. 탐색 창에서 주제를 선택한 다음 주제 생성을 선택합니다.

  3. 주제 생성 섹션에서 표준을 선택합니다. 다음으로 주제 이름을 입력합니다(예: GuardDuty_to_Chime). 기타 세부 정보는 선택 사항입니다. 주제 생성을 선택하여 마무리합니다.

AWS Chatbot 클라이언트 구성
  1. AWS Chatbot 콘솔로 이동

  2. 구성된 클라이언트 패널에서 새 클라이언트 구성을 선택합니다.

  3. Chime을 선택하고 ‘구성’을 선택하여 확인합니다.

  4. 구성 세부 정보 창에서 채널 이름을 입력합니다.

  5. Chime에서 원하는 채팅룸을 엽니다.

    1. 오른쪽 상단 모서리에 있는 기어 모양 아이콘을 선택하고 Manage webhooks(Webhook 관리)를 선택합니다.

    2. URL 복사를 선택하여 웹후크 URL을 클립보드에 복사합니다.

  6. AWS 관리 콘솔의 AWS Chatbot 창에서 웹후크 URL 필드에 복사한 URL을 붙여넣습니다.

  7. 권한에서 아직 역할이 없는 경우 템플릿을 사용하여 IAM 역할을 생성하도록 선택합니다.

  8. 정책 템플릿에서 Notification permissions를 선택합니다. 이는 AWS Chatbot에 대한 IAM 정책 템플릿입니다. CloudWatch 경보, 이벤트, 로그, Amazon SNS 주제에 필요한 읽기 및 목록 권한을 제공합니다.

  9. 이전에 SNS 주제를 만든 리전을 선택한 다음 생성한 Amazon SNS 주제를 선택하여 Chime 룸에 알림을 전송합니다.

  10. 구성을 선택합니다.

결과를 위한 CloudWatch GuardDuty 이벤트 설정

  1. https://console.aws.amazon.com/cloudwatch/ 에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 규칙을 선택한 다음 규칙 생성을 선택합니다.

  3. 서비스 이름 메뉴에서 선택합니다 GuardDuty.

  4. [이벤트 유형] 메뉴에서 [GuardDuty찾기] 를 선택합니다.

  5. 이벤트 패턴 미리 보기에서 편집을 선택합니다.

  6. 아래 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 ] } }
    참고

    위의 코드는 중간에서 높음에 이르는 결과에 대해 알립니다.

  7. 대상 섹션에서 대상 추가를 클릭합니다.

  8. 대상 선택 메뉴에서 SNS 주제를 선택합니다.

  9. 주제 선택에서 1단계에서 생성한 SNS 주제의 이름을 선택합니다.

  10. 이벤트에 대한 입력을 구성합니다.

    • Chime 또는 Slack에 대한 알림을 설정하고 11단계로 건너뛴 경우 입력 유형의 기본값은 일치하는 이벤트로 설정됩니다.

    • SNS를 통한 이메일 알림을 설정하는 경우 아래 단계에 따라 받은 편지함으로 전송되는 메시지를 사용자 지정합니다.

    1. 입력 구성을 확장한 후 입력 변환기를 선택합니다.

    2. 다음 코드를 복사하여 입력 경로 필드에 붙여넣습니다.

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

      "AWS <Account_ID> has 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>"
  11. 세부 정보 구성을 클릭합니다.

  12. 규칙 세부 정보 구성 페이지에서 해당 규칙의 이름설명을 입력한 후 규칙 생성을 선택합니다.

GuardDuty (CLI) 에 대한 CloudWatch 이벤트 규칙 및 대상 생성

다음 절차는 AWS CLI 명령을 사용하여 CloudWatch 이벤트 규칙 및 대상을 만드는 방법을 보여줍니다. GuardDuty 특히, 이 프로시저는 함수를 GuardDuty 생성하는 모든 검색 결과에 대해 이벤트를 전송하고 규칙을 위한 대상으로 AWS Lambda 함수를 추가할 수 있는 규칙을 만드는 방법을 보여줍니다. CloudWatch

참고

Lambda 함수 외에도 Amazon EC2 인스턴스 GuardDuty , CloudWatch Amazon Kinesis 스트림, Amazon AWS Step Functions ECS 작업, 상태 run 머신, 명령, 내장 대상 등의 대상 유형을 지원합니다.

이벤트 콘솔을 통해 CloudWatch 이벤트 규칙 및 대상을 생성할 수도 있습니다. GuardDuty CloudWatch 자세한 내용과 자세한 단계는 이벤트를 트리거하는 CloudWatch 이벤트 규칙 만들기를 참조하십시오. 이벤트 소스 섹션에서 서비스 이름GuardDuty, 이벤트 유형GuardDuty Finding을 선택합니다.

규칙 및 대상을 만들려면
  1. 생성되는 모든 검색 결과에 대해 이벤트를 전송할 수 CloudWatch 있는 규칙을 GuardDuty 생성하려면 다음 CloudWatch CLI 명령을 실행합니다.

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

    중요

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

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

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

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

    AWS events put-targets --rule Test --targets Id=1,Arn=arn:aws:lambda:us-east-1:111122223333:function:<your_function>

    참고

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

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

    AWS lambda add-permission --function-name <your_function> --statement-id 1 --action 'lambda:InvokeFunction' --principal events.amazonaws.com

    참고

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

    참고

    위 절차에서는 Lambda 함수를 이벤트를 트리거하는 규칙의 대상으로 사용하고 있습니다. CloudWatch 다른 AWS 리소스를 이벤트를 트리거하는 대상으로 구성할 수도 있습니다. CloudWatch 자세한 설명은 PutTargets 섹션을 참조하세요.

CloudWatch GuardDuty 다중 계정 환경을 위한 이벤트

GuardDuty 관리자의 경우 계정 내 CloudWatch 이벤트 규칙은 회원 계정에서 발생한 해당 결과에 따라 트리거됩니다. 즉, 이전 섹션에 설명된 대로 관리자 계정의 CloudWatch 이벤트를 통해 검색 결과 알림을 설정하면 사용자 계정 외에도 회원 계정에서 생성되는 심각도가 높거나 중간 정도인 결과에 대한 알림을 받게 됩니다.

검색 결과의 JSON 세부 정보 accountId 필드를 사용하여 GuardDuty 검색 결과가 나온 회원 계정을 식별할 수 있습니다.

콘솔에서 환경의 특정 멤버 계정에 대한 사용자 지정 이벤트 규칙을 작성하려면 새 규칙을 생성하고 다음 템플릿을 이벤트 패턴 미리 보기에 붙여넣고 이벤트를 트리거하려는 멤버 계정의 계정 ID를 추가합니다.

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

이 예시에서는 나열된 계정 ID의 모든 결과에 대해 트리거됩니다. JSON 구문에 따라 여러 ID를 쉼표로 구분하여 추가할 수 있습니다.