Azure API Management 로그 수집

파서 버전: 1.0

다음에서 지원:

이 문서에서는 Azure API Management 로그를 Google Security Operations에 수집하기 위해 Azure Event Hub 피드를 만드는 방법을 설명합니다.

Azure API Management는 모든 환경에서 API를 위한 하이브리드 멀티 클라우드 관리 플랫폼입니다. 조직에서 외부, 파트너, 내부 개발자에게 API를 게시하여 데이터와 서비스의 잠재력을 활용할 수 있도록 지원합니다. API 관리는 API 검색, 게이트웨이 기능, 보안 정책, 분석, 개발자 참여를 위한 도구를 제공합니다. 진단 로그는 요청, 응답, 오류 등 API Gateway 작업에 관한 자세한 정보를 캡처합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • 다음 권한이 있는 Microsoft Azure 포털에 대한 권한이 있는 액세스:
    • Event Hub 네임스페이스 만들기
    • Event Hubs 만들기
    • Azure API Management의 진단 설정 구성
    • 액세스 정책 관리
  • 기존 Azure API Management 서비스 인스턴스

Event Hub 네임스페이스 만들기

Event Hubs 네임스페이스는 하나 이상의 Event Hubs를 위한 관리 컨테이너입니다.

  1. Azure 포털에서 Event Hubs를 검색합니다.
  2. + 만들기를 클릭합니다.
  3. 다음 구성 세부정보를 제공합니다.

    설정 값
    구독 Azure 구독 선택
    리소스 그룹 기존 항목 선택 또는 새로 만들기
    네임스페이스 이름 고유한 이름 (예: secops-apim-eventhub)을 입력합니다.
    위치 리전을 선택합니다 (예: East US).
    가격 책정 등급 표준 (프로덕션에 권장)
    처리량 단위 1로 시작, 자동 팽창 사용 설정 (권장)
  4. 검토 + 만들기를 클릭합니다.

  5. 개요를 검토하고 만들기를 클릭합니다.

  6. 배포가 완료될 때까지 기다립니다 (1~2분).

Event Hub 만들기

  1. 네임스페이스가 배포되면 Event Hub 네임스페이스로 이동합니다.
  2. 왼쪽 탐색 메뉴의 엔터티에서 Event Hubs를 선택합니다.
  3. + 이벤트 허브를 클릭합니다.
  4. 다음 구성 세부정보를 제공합니다.

    설정 값
    이름 고유한 이름 (예: apim-logs)을 입력합니다.
    파티션 수 40 (Google SecOps의 최적의 확장성을 위해 권장)
    메시지 보관 7일 (최소 권장)
    캡처 사용 중지됨 (Google SecOps에 필요하지 않음)
  5. 만들기를 클릭합니다.

Event Hub 연결 문자열 가져오기

Google SecOps는 Event Hub에 인증하기 위한 연결 문자열이 필요합니다.

  1. Event Hub 네임스페이스로 이동합니다.
  2. 왼쪽 탐색에서 설정 아래의 공유 액세스 정책을 선택합니다.
  3. 기본 정책 RootManageSharedAccessKey를 클릭합니다.
  4. 연결 문자열 - 기본 키를 복사합니다.
  5. 이 연결 문자열을 안전하게 저장합니다.
  • 예:

    Original: Endpoint=sb://secops-apim-eventhub.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==;EntityPath=apim-logs
    
    Remove EntityPath: Endpoint=sb://secops-apim-eventhub.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==
    

옵션 B: 이벤트 허브 수준 연결 문자열

  1. 이벤트 허브 (네임스페이스 아님)로 이동합니다.
  2. 왼쪽 탐색 메뉴의 설정에서 공유 액세스 정책을 선택합니다.
  3. + 추가를 클릭하여 새 정책을 만듭니다.
  4. 다음 구성 세부정보를 제공합니다.
    • 정책 이름: 설명이 포함된 이름을 입력합니다 (예: chronicle-read).
    • 권한: 듣기만 선택 (읽기 전용 액세스)
  5. 만들기를 클릭합니다.
  6. 새로 만든 정책을 클릭합니다.
  7. 연결 문자열 - 기본 키를 복사합니다.
  8. 이 연결 문자열을 안전하게 저장합니다.

Event Hub로 스트리밍하도록 Azure API Management 구성

  1. Azure 포털에서 API 관리 서비스를 검색합니다.
  2. API 관리 서비스 인스턴스를 선택합니다.
  3. 왼쪽 탐색 메뉴의 모니터링에서 진단 설정을 선택합니다.
  4. + 진단 설정 추가를 클릭합니다.
  5. 다음 구성 세부정보를 제공합니다.
    • 진단 설정 이름: 설명이 포함된 이름 (예: apim-to-secops)을 입력합니다.
    • 로그 섹션에서 다음 카테고리를 선택합니다.
      • GatewayLogs: API Gateway 요청 및 응답 로그
      • WebSocketConnectionLogs: WebSocket 연결 로그 (해당하는 경우)
      • DeveloperPortalAuditLogs: 개발자 포털 감사 로그 (해당하는 경우)
      • GatewayLlmLogs: 생성형 AI 게이트웨이 로그 (해당하는 경우)
      • GatewayMCPLogs: 모델 컨텍스트 프로토콜 (MCP) 서버 로그 (해당하는 경우)
    • 대상 세부정보 섹션에서 이벤트 허브로 스트리밍 체크박스를 선택합니다.
    • 구독: 이벤트 허브 네임스페이스가 포함된 구독을 선택합니다.
    • 이벤트 허브 네임스페이스: 이전에 만든 네임스페이스 (예: secops-apim-eventhub)를 선택합니다.
    • 이벤트 허브 이름: 만든 이벤트 허브를 선택합니다 (예: apim-logs).
    • 이벤트 허브 정책 이름: RootManageSharedAccessKey 또는 전송 권한이 있는 커스텀 정책을 선택합니다.
  6. 저장을 클릭합니다.

(선택사항) 체크포인트를 위해 Azure Blob Storage 구성

Google SecOps는 Azure Blob Storage를 사용하여 처리된 이벤트를 추적하는 Event Hub 체크포인트를 저장할 수 있습니다. 이렇게 하면 피드가 일시적으로 중단된 경우 중복 수집을 방지할 수 있습니다.

체크포인트를 위한 스토리지 계정 만들기

  1. Azure 포털에서 스토리지 계정을 검색합니다.
  2. + 만들기를 클릭합니다.
  3. 다음 구성 세부정보를 제공합니다.

    설정 값
    구독 Azure 구독 선택
    리소스 그룹 Event Hub와 동일한 리소스 그룹 사용
    스토리지 계정 이름 고유한 이름 (예: secopsapimcheckpoint)을 입력합니다.
    리전 이벤트 허브와 동일한 리전
    성능 표준
    중복성 LRS (로컬 중복 스토리지)
  4. 검토 + 만들기를 클릭합니다.

  5. 만들기를 클릭합니다.

Blob 컨테이너 만들기

  1. 방금 만든 Storage 계정으로 이동합니다.
  2. 왼쪽 탐색 메뉴의 데이터 스토리지에서 컨테이너를 선택합니다.
  3. + 컨테이너를 클릭합니다.
  4. 다음 구성 세부정보를 제공합니다.
    • 이름: checkpoints을 입력합니다.
    • 공개 액세스 수준: 비공개 (익명 액세스 없음)
  5. 만들기를 클릭합니다.

스토리지 계정 사용자 인증 정보 가져오기

  1. 스토리지 계정의 보안 + 네트워킹에서 액세스 키를 선택합니다.
  2. 키 표시를 클릭합니다.
  3. 복사하여 저장합니다.
    • 스토리지 계정 이름: 스토리지 계정의 이름
    • 키 1: 액세스 키 값

Google SecOps 피드를 만들 때 이러한 값을 제공합니다.

(선택사항) 전용 소비자 그룹 만들기

기본적으로 Event Hub는 $Default라는 소비자 그룹을 제공합니다. 프로덕션 환경의 경우 Google SecOps 전용 소비자 그룹을 만드는 것이 좋습니다.

  1. 이벤트 허브 (네임스페이스 아님)로 이동합니다.
  2. 왼쪽 탐색에서 엔티티 아래의 소비자 그룹을 선택합니다.
  3. + 소비자 그룹을 클릭합니다.
  4. 다음 구성 세부정보를 제공합니다.
    • 이름: 구체적인 이름을 입력합니다 (예: chronicle).
  5. 만들기를 클릭합니다.

Azure API Management 로그를 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: Azure API Management Logs).
  5. 소스 유형으로 Microsoft Azure Event Hub를 선택합니다.
  6. 로그 유형으로 Azure API Management를 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 매개변수의 값을 지정합니다.

    • 이벤트 허브 연결 문자열: 이전에 캡처한 이벤트 허브 연결 문자열을 입력합니다.

    • 네임스페이스 수준 연결 문자열을 사용하는 경우:

      • EntityPath 매개변수를 삭제했는지 확인합니다.
      • 다음 필드에 이벤트 허브 이름도 입력해야 합니다.
    • 이벤트 허브 수준 연결 문자열을 사용하는 경우:

      • 연결 문자열을 그대로 사용 (EntityPath 포함)
      • 이벤트 허브 이름 필드는 비워둘 수 있습니다.
    • 이벤트 허브 이름: 이벤트 허브 이름을 입력합니다 (예: apim-logs).

      • 네임스페이스 수준 연결 문자열을 사용하는 경우 필수입니다.
      • 이벤트 허브 수준 연결 문자열을 사용하는 경우 선택사항입니다.
    • 소비자 그룹 (선택사항): 소비자 그룹 이름을 입력합니다.

      • 기본 $Default 소비자 그룹을 사용하려면 비워 두세요.
      • 전용 소비자 그룹을 만든 경우 이름을 입력합니다 (예: chronicle).
    • Blob 스토리지 컨테이너 이름 (선택사항): 체크포인트를 위해 컨테이너 이름 (예: checkpoints)을 입력합니다.

    체크포인트를 위해 blob 스토리지를 제공하는 경우:

    • Azure 스토리지 계정 이름: 체크포인트 구성에서 스토리지 계정 이름을 입력합니다.
    • Azure 스토리지 계정 키: 체크포인트 구성에서 액세스 키를 입력합니다.

    • 애셋 네임스페이스: 애셋 네임스페이스

    • 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.

  9. 다음을 클릭합니다.

  10. 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.

Google SecOps 피드에 대한 자세한 내용은 Google SecOps 피드 문서를 참고하세요.

UDM 매핑 테이블

로그 필드 UDM 매핑 로직
Level_label additional.fields 병합됨
Sku_label additional.fields 병합됨
apiId_label additional.fields 병합됨
apiRevision_label additional.fields 병합됨
apimSubscriptionId_label additional.fields 병합됨
backendMethod_label additional.fields 병합됨
backendProtocol_label additional.fields 병합됨
backendResponseCode_label additional.fields 병합됨
backendTime_label additional.fields 병합됨
cache_label additional.fields 병합됨
clientProtocol_label additional.fields 병합됨
durationMs_label additional.fields 병합됨
eventName_label additional.fields 병합됨
eventid_label additional.fields 병합됨
functionInvocationId_label additional.fields 병합됨
functionName_label additional.fields 병합됨
hostInstanceId_label additional.fields 병합됨
hostVersion_label additional.fields 병합됨
isRequestSuccess_label additional.fields 병합됨
operationId_label additional.fields 병합됨
productId_label additional.fields 병합됨
properties.message metadata.description 직접 매핑됨
time metadata.event_timestamp ISO8601로 파싱됨
has_principal metadata.event_type 매핑됨: true → STATUS_UPDATE
operationName metadata.product_event_type 직접 매핑됨
DeploymentVersion metadata.product_version 직접 매핑됨
properties.method network.http.method 직접 매핑됨
properties.responseCode network.http.response_code 직접 매핑됨
properties.responseSize network.received_bytes 직접 매핑됨
properties.requestSize network.sent_bytes 직접 매핑됨
correlationId network.session_id 직접 매핑됨
properties.clientTlsCipherSuite network.tls.cipher 직접 매핑됨
properties.clientTlsVersion network.tls.version 직접 매핑됨
callerIpAddress principal.asset.ip 병합됨
callerIpAddress principal.ip 병합됨
location principal.location.name 직접 매핑됨
properties.url principal.url 직접 매핑됨
properties.userId principal.user.userid 직접 매핑됨
action security_result.action 병합됨
resultType security_result.action 매핑됨: Succeeded → action
category security_result.category_details 병합됨
properties.category security_result.category_details 병합됨
level security_result.severity 직접 매핑됨
resultType security_result.summary 직접 매핑됨
properties.appName target.application 직접 매핑됨
properties.processId target.process.pid 직접 매핑됨
roleInstance_label target.resource.attribute.labels 병합됨
resourceId target.resource.product_object_id 직접 매핑됨
properties.backendUrl target.url 직접 매핑됨
해당 사항 없음 metadata.event_type 상수: GENERIC_EVENT
해당 사항 없음 metadata.product_name 상수: AZURE API MANAGEMENT
해당 사항 없음 metadata.vendor_name 상수: AZURE_API_MANAGEMENT
해당 사항 없음 network.tls.version_protocol 상수: HTTP

변경 로그

이 파서의 변경 로그 보기

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.