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, BurstLimit 및 Quota를 사용하여 요청 볼륨을 제어합니다. 이러한 도구는 설정된 시간에 처리할 수 있는 요청 수를 제한합니다. 이렇게 하면 시스템 과부하를 방지하고 서비스를 안정적으로 유지할 수 있습니다. 스로틀링에 대한 자세한 내용은 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에 사용할 수 있습니다.
-
CloudFormation 템플릿
을 다운로드하여 엽니다. -
템플릿에서
APIGWUsagePlan을 찾습니다. 기본적으로 20, 50 및 2,000으로 설정된RateLimit,BurstLimit및Quota Limit에 대해 구성된 값을 검토합니다. 요구 사항에 따라 값을 조정합니다. -
템플릿에서
AuthorizerLambdaFunction을 찾습니다. 이 Lambda 함수는 인증 메커니즘의 예제 역할을 합니다. APM에서 전달되는authorizationToken이라는 헤더에서 토큰 값을 추출합니다. 조직의 보안 정책 및 APM 요구 사항에 맞게 이 코드를 수정할 수 있습니다. -
템플릿에서
TransformLambdaFunction을 찾습니다. 사전 경로인raw_json["detail"]["ProblemTitle"]을 APM의 JSON 페이로드에서 전송되는 경보 이름의 경로로 바꿉니다. Dynatrace의 경우 그대로 둡니다.
CloudFormation 템플릿 배포:
-
대상 계정 및 AWS 리전에서 CloudFormation 콘솔을 엽니다.
-
스택 생성, 새 리소스 사용(표준)을 선택하세요.
-
기존 템플릿 선택, 템플릿 파일 업로드, 파일 선택을 선택한 다음 로컬로 저장한 CloudFormation 템플릿을 업로드합니다.
-
-
다음과 같이 스택 세부 정보를 지정합니다.
-
스택 이름을 입력합니다(예:
DynatraceIntegrationForIDR). -
APMNameParameter(예:
Dynatrace) -
다음을 선택합니다.
-
-
다음과 같이 스택 옵션을 구성합니다.
-
페이지 하단으로 스크롤하고 확인란을 선택하여 CloudFormation이 사용자 지정 이름으로 IAM 리소스를 생성하도록 허용합니다.
-
-
검토 및 생성
-
파라미터 값이 올바르게 구성되었는지 확인하고 제출을 선택합니다.
-
-
CloudFormation 스택은 APM 이벤트를 AWS 사고 탐지 및 대응에 통합하는 데 필요한 리소스를 배포합니다. CloudFormation 스택 상태가 CREATE_COMPLETE가 될 때까지 기다립니다.
-
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
-
-
-
다음과 같이 웹후크 URL 및 토큰 값을 기록합니다.
-
API Gateway 콘솔을 열고 CloudFormation 스택의 일부로 생성된 API 이름을 선택합니다.
-
왼쪽 탐색에서 스테이지를 선택하고 + 기호를 사용하여 스테이지 이름을 확장한 다음 POST를 선택합니다. 간접 호출 URL을 기록합니다. 경보 이벤트에 대한 웹후크를 전송할 대상으로 APM에서 이 URL을 구성합니다.
-
AWS Secrets Manager 콘솔을 열고 CloudFormation 스택의 일부로 생성된 보안 암호 이름을 선택합니다. (예: DynatraceMySecretTokenName.)
-
보안 암호 값 탭에서 보안 암호 값 검색을 선택합니다. 보안 키가 APMSecureToken으로 표시됩니다. 보안 암호 값을 기록합니다. 이 보안 암호 값을 다른 사람과 공유하지 마세요.
-
-
통합 테스트하기
스택을 배포한 후 APM에서 테스트 페이로드를 전송하여 통합을 테스트합니다.
-
Lambda 콘솔로 이동하여
APMNameParameter-AWSIncidentDetectionResponse-Lambda-Transform함수를 선택합니다. 모니터링 탭을 선택합니다. -
지표 그래프에서 성공적인 간접 호출을 찾습니다.
-
Amazon CloudWatch Logs 보기를 선택하여 테스트 페이로드 또는 오류가 있는지 로그 스트림을 확인합니다.
이벤트 버스 ARN을 AWS 사고 탐지 및 대응과 공유
-
Amazon EventBridge 콘솔을 엽니다. 이벤트 버스를 선택합니다.
-
CloudFormation 스택의 일부로 생성된 사용자 지정 이벤트 버스의 ARN을 복사합니다(예:
arn:aws:events:us-east-1:123456789123:event-bus/Dynatrace-AWSIncidentDetectionResponse-EventBus).-
경보 수집 설문지 - 개요의 ‘타사 APM 경보’ 섹션에 있는 ‘EventBridge 이벤트 버스 ARN’ 필드에 이 ARN을 추가합니다.
-
-
온보딩 프로세스 중에 AWS 사고 탐지 및 대응은 이 사용자 지정 이벤트 버스에 관리형 EventBridge 규칙을 생성하여 APM 경보를 수집합니다.
옵션 2: 수동 통합
다음 단계에 따라 AWS 사고 탐지 및 대응과의 통합을 설정합니다.
-
Amazon API Gateway를 생성하여 APM의 페이로드를 수락합니다.
-
인증 토큰을 사용하여 권한 부여를 위한 Lambda 함수를 정의합니다.
-
다음 중 하나를 수행합니다.
-
(권장 방법) 이름이
$YourApmName-AWSIncidentDetectionResponse-EventBus인 EventBridge 사용자 지정 이벤트 버스를 만듭니다. -
(대체 방법) 사용자 지정 이벤트 버스 대신 기본 EventBridge 이벤트 버스를 사용합니다.
-
-
AWS 사고 탐지 및 대응 식별자를 페이로드에 추가하는 Lambda 함수 변환을 정의합니다. 이 함수를 사용하여 AWS 사고 탐지 및 대응으로 보내려는 이벤트를 필터링할 수도 있습니다.
-
API Gateway는 API Gateway에서 전달하는 페이로드를 변환하는 Lambda 함수 변환을 간접적으로 호출해야 합니다.
-
Lambda 함수 변환은 위의 포인트 3에 정의된 이벤트 버스에 변환된 이벤트를 작성해야 합니다.
-
-
API Gateway에서 생성된 URL로 알림을 보내도록 APM을 설정합니다.