View a markdown version of this page

EventBridge와 직접 통합하지 않고도 APM에서 경보 수집 - AWS 사고 탐지 및 대응 사용 설명서

EventBridge와 직접 통합하지 않고도 APM에서 경보 수집

AWS 사고 탐지 및 대응은 Amazon EventBridge와 직접 통합되지 않은 타사 APM에서 경보 수집을 위해 웹후크 사용을 지원합니다.

CloudFormation 템플릿을 배포하거나 통합을 수동으로 설정할 수 있습니다. 통합을 설정하기 전에 AWS 서비스 연결 역할(SLR) AWSServiceRoleForHealth_EventProcessor가 계정에 생성되었는지 확인합니다.

옵션 1: CloudFormation 템플릿 사용

CloudFormation 템플릿은 직접 Amazon EventBridge 통합이 없는 APM에서 AWS 사고 탐지 및 대응에 경보를 수집하는 데 필요한 통합 인프라를 생성하는 프로세스를 간소화하는 데 사용할 수 있습니다.

이 CloudFormation 템플릿을 배포하기 전 고려 사항

  • 이 솔루션은 API Gateway Lambda 권한 부여자를 사용하여 페이로드에서 전달된 보안 토큰을 AWS Secrets Manager의 토큰과 비교합니다. 토큰이 일치하지 않으면 명시적 거부가 있는 정책이 반환됩니다. 자세한 내용은 Lambda 권한 부여자를 참조하세요.

  • AWS 공동 책임 모델에 따라 조직의 보안 요구 사항을 충족하는 인증 접근 방식을 사용하는 것은 사용자의 책임입니다. API 키 또는 권한 부여 토큰과 같은 민감한 정보를 하드 코딩된 변수로 저장하는 대신 AWS Secrets Manager 또는 유사한 서비스를 사용하는 것이 좋습니다. 자세한 내용은 AWS Secrets Manager로 암호 생성 및 관리를 참조하세요.

  • 해시 기반 메시지 인증 코드(HMAC)를 구현하는 추가 예제는 aws-samples Github 페이지의 receive-webhooks를 참조하세요. 토큰 권한 부여 구현에 대한 자세한 내용은 API Gateway 설명서의 예제 토큰 권한 부여자 Lambda 함수를 참조하세요.

  • 이 솔루션은 API Gateway에서 RateLimit, BurstLimitQuota를 사용하여 요청 볼륨을 제어합니다. 이러한 도구는 설정된 시간에 처리할 수 있는 요청 수를 제한합니다. 이렇게 하면 시스템 과부하를 방지하고 서비스를 안정적으로 유지할 수 있습니다. 스로틀링에 대한 자세한 내용은 API 게이트웨이 개발자 안내서를 참조하세요.

  • AWS 웹 애플리케이션 방화벽(WAF)을 사용하여 알려진 잘못된 IP 주소로부터 API Gateway를 보호하는 것이 좋습니다. 이렇게 하면 공격자가 실제 로그 이벤트를 차단할 수 있는 가짜 요청으로 API를 플러딩할 위험이 줄어듭니다.

  • AWS Secrets Manager 토큰 값은 애플리케이션 성능 모니터링(APM) 도구에 HTTP 헤더로 저장해야 합니다. 보안 모범 사례로 토큰을 정기적으로 교체해야 합니다.

  • 이 CloudFormation 템플릿을 통해 배포된 리소스(예: Lambda 및 EventBridge)에 대해 추가 비용이 발생합니다. 이러한 서비스의 가격에 대한 자세한 내용은 AWS 가격을 참조하세요.

  • 통합을 테스트한 후 TransformLambdaFunction(Lambda 함수)에서 logger.info() 문을 제거하여 Amazon CloudWatch Logs에 페이로드가 표시되지 않도록 합니다.

  • AWS 사고 탐지 및 대응이 경보를 수집해야 하는 모든 AWS 계정 및 리전에 이 CloudFormation 템플릿을 배포합니다.

CloudFormation 템플릿 준비:

참고: 통합 단계에서는 Dynatrace를 예로 사용하지만 이 템플릿은 API Gateway로 페이로드를 전송할 수 있는 모든 APM에 사용할 수 있습니다.

  1. CloudFormation 템플릿을 다운로드하여 엽니다.

  2. 템플릿에서 APIGWUsagePlan을 찾습니다. 기본적으로 20, 50 및 2,000으로 설정된 RateLimit, BurstLimitQuota Limit에 대해 구성된 값을 검토합니다. 요구 사항에 따라 값을 조정합니다.

  3. 템플릿에서 AuthorizerLambdaFunction을 찾습니다. 이 Lambda 함수는 인증 메커니즘의 예제 역할을 합니다. APM에서 전달되는 authorizationToken이라는 헤더에서 토큰 값을 추출합니다. 조직의 보안 정책 및 APM 요구 사항에 맞게 이 코드를 수정할 수 있습니다.

  4. 템플릿에서 TransformLambdaFunction을 찾습니다. 사전 경로인 raw_json["detail"]["ProblemTitle"]을 APM의 JSON 페이로드에서 전송되는 경보 이름의 경로로 바꿉니다. Dynatrace의 경우 그대로 둡니다.

CloudFormation 템플릿 배포:

  1. 대상 계정 및 AWS 리전에서 CloudFormation 콘솔을 엽니다.

  2. 스택 생성, 새 리소스 사용(표준)을 선택하세요.

    • 기존 템플릿 선택, 템플릿 파일 업로드, 파일 선택을 선택한 다음 로컬로 저장한 CloudFormation 템플릿을 업로드합니다.

  3. 다음과 같이 스택 세부 정보를 지정합니다.

    • 스택 이름을 입력합니다(예: DynatraceIntegrationForIDR).

    • APMNameParameter(예: Dynatrace)

    • 다음을 선택합니다.

  4. 다음과 같이 스택 옵션을 구성합니다.

    • 페이지 하단으로 스크롤하고 확인란을 선택하여 CloudFormation이 사용자 지정 이름으로 IAM 리소스를 생성하도록 허용합니다.

  5. 검토 및 생성

    • 파라미터 값이 올바르게 구성되었는지 확인하고 제출을 선택합니다.

  6. CloudFormation 스택은 APM 이벤트를 AWS 사고 탐지 및 대응에 통합하는 데 필요한 리소스를 배포합니다. CloudFormation 스택 상태가 CREATE_COMPLETE가 될 때까지 기다립니다.

  7. CloudFormation 스택은 예시 값 Dynatrace가 파라미터에 입력되고 US-EAST-1 리전에서 실행되었다고 가정할 때 아래와 같은 리소스를 생성합니다.

    • 보안 암호 이름: DynatraceMySecretTokenName(보안 암호 키 APMSecureToken에 대해 임의의 보안 암호 값이 생성됨)

    • API 게이트웨이 리소스:

      • API 이름: Dynatrace-AWSIncidentDetectionResponse-APIGW

      • 스테이지 이름: Dynatrace-Stage-Prod

      • 권한 부여자: Dynatrace-APIGW-Authorizer

      • 사용 계획: APIGW_Throttling_Plan

    • Lambda 함수:

      • 권한 부여 함수: Dynatrace-AWSIncidentDetectionResponse-Lambda-Authorizer

      • 변환 함수: Dynatrace-AWSIncidentDetectionResponse-Lambda-Transform

    • 사용자 지정 EventBus 이름: Dynatrace-AWSIncidentDetectionResponse-EventBus

    • IAM 역할:

      • TransformLambdaExecutionRole: IDR-TransformLambdaExecutionRole-us-east-1

      • AuthorizerLambdaExecutionRole: IDR-AuthorizerLambdaExecutionRole-us-east-1

  8. 다음과 같이 웹후크 URL 및 토큰 값을 기록합니다.

    • API Gateway 콘솔을 열고 CloudFormation 스택의 일부로 생성된 API 이름을 선택합니다.

    • 왼쪽 탐색에서 스테이지를 선택하고 + 기호를 사용하여 스테이지 이름을 확장한 다음 POST를 선택합니다. 간접 호출 URL을 기록합니다. 경보 이벤트에 대한 웹후크를 전송할 대상으로 APM에서 이 URL을 구성합니다.

    • AWS Secrets Manager 콘솔을 열고 CloudFormation 스택의 일부로 생성된 보안 암호 이름을 선택합니다. (예: DynatraceMySecretTokenName.)

      • 보안 암호 값 탭에서 보안 암호 값 검색을 선택합니다. 보안 키가 APMSecureToken으로 표시됩니다. 보안 암호 값을 기록합니다. 이 보안 암호 값을 다른 사람과 공유하지 마세요.

통합 테스트하기

스택을 배포한 후 APM에서 테스트 페이로드를 전송하여 통합을 테스트합니다.

  1. Lambda 콘솔로 이동하여 APMNameParameter-AWSIncidentDetectionResponse-Lambda-Transform 함수를 선택합니다. 모니터링 탭을 선택합니다.

  2. 지표 그래프에서 성공적인 간접 호출을 찾습니다.

  3. Amazon CloudWatch Logs 보기를 선택하여 테스트 페이로드 또는 오류가 있는지 로그 스트림을 확인합니다.

이벤트 버스 ARN을 AWS 사고 탐지 및 대응과 공유

  1. Amazon EventBridge 콘솔을 엽니다. 이벤트 버스를 선택합니다.

  2. CloudFormation 스택의 일부로 생성된 사용자 지정 이벤트 버스의 ARN을 복사합니다(예: arn:aws:events:us-east-1:123456789123:event-bus/Dynatrace-AWSIncidentDetectionResponse-EventBus).

  3. 온보딩 프로세스 중에 AWS 사고 탐지 및 대응은 이 사용자 지정 이벤트 버스에 관리형 EventBridge 규칙을 생성하여 APM 경보를 수집합니다.

옵션 2: 수동 통합

API Gateway를 사용한 통합의 예를 보여 주는 다이어그램입니다.

다음 단계에 따라 AWS 사고 탐지 및 대응과의 통합을 설정합니다.

  1. Amazon API Gateway를 생성하여 APM의 페이로드를 수락합니다.

  2. 인증 토큰을 사용하여 권한 부여를 위한 Lambda 함수를 정의합니다.

  3. 다음 중 하나를 수행합니다.

    • (권장 방법) 이름이 $YourApmName-AWSIncidentDetectionResponse-EventBus인 EventBridge 사용자 지정 이벤트 버스를 만듭니다.

    • (대체 방법) 사용자 지정 이벤트 버스 대신 기본 EventBridge 이벤트 버스를 사용합니다.

  4. AWS 사고 탐지 및 대응 식별자를 페이로드에 추가하는 Lambda 함수 변환을 정의합니다. 이 함수를 사용하여 AWS 사고 탐지 및 대응으로 보내려는 이벤트를 필터링할 수도 있습니다.

    • API Gateway는 API Gateway에서 전달하는 페이로드를 변환하는 Lambda 함수 변환을 간접적으로 호출해야 합니다.

    • Lambda 함수 변환은 위의 포인트 3에 정의된 이벤트 버스에 변환된 이벤트를 작성해야 합니다.

  5. API Gateway에서 생성된 URL로 알림을 보내도록 APM을 설정합니다.