Microsoft Sentinel 로그 수집

다음에서 지원:

개요

이 파서는 Microsoft Sentinel JSON 로그에서 필드를 추출하고, IP 주소 추출 및 문자열 조작과 같은 변환을 실행하고, 추출된 데이터를 principal, target, security_result, metadata 필드를 포함하여 UDM에 매핑합니다. 또한 다양한 데이터 유형을 처리하고 추출된 항목을 UDM 구조로 병합합니다.

시작하기 전에

  • Google SecOps 인스턴스가 있는지 확인합니다.
  • Microsoft Sentinel에 대한 액세스 권한

Microsoft Sentinel 로그를 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새로 추가를 클릭합니다.
  3. 피드 이름 필드에 피드 이름을 입력합니다 (예: Microsoft Sentinel 로그).
  4. 소스 유형으로 Webhook을 선택합니다.
  5. 로그 유형으로 Microsoft Sentinel을 선택합니다.
  6. 다음을 클릭합니다.
  7. 선택사항: 다음 입력 파라미터의 값을 지정합니다.
    • 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예: \n).
    • 애셋 네임스페이스: 애셋 네임스페이스입니다.
    • 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
  8. 다음을 클릭합니다.
  9. 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
  10. 보안 비밀 키 생성을 클릭하여 이 피드를 인증하기 위한 보안 비밀 키를 생성합니다.
  11. 이 보안 비밀을 다시 볼 수 없으므로 보안 비밀 키를 복사하여 저장합니다. 새 보안 비밀 키를 다시 생성할 수 있지만 보안 비밀 키를 다시 생성하면 이전 보안 비밀 키는 더 이상 사용할 수 없게 됩니다.
  12. 세부정보 탭의 엔드포인트 정보 필드에서 피드 엔드포인트 URL을 복사합니다. 클라이언트 애플리케이션에서 이 엔드포인트 URL을 지정해야 합니다.
  13. 완료를 클릭합니다.

웹훅 피드에 대한 API 키 만들기

  1. Google Cloud 콘솔 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기를 클릭한 후 API 키를 선택합니다.

  3. Google Security Operations API에 대한 API 키 액세스를 제한합니다.

엔드포인트 URL 지정

  1. 클라이언트 애플리케이션에서 웹훅 피드에 제공된 HTTPS 엔드포인트 URL을 지정합니다.
  2. 다음 형식의 커스텀 헤더의 일부로 API 키와 보안 비밀 키를 지정하여 인증을 사용 설정합니다.

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    권장사항: URL에 API 키를 지정하는 대신 헤더로 지정하세요. 웹훅 클라이언트가 커스텀 헤더를 지원하지 않는 경우 다음 형식의 쿼리 매개변수를 사용하여 API 키와 보안 비밀 키를 지정할 수 있습니다.

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

다음을 바꿉니다.

  • ENDPOINT_URL: 피드 엔드포인트 URL입니다.
  • API_KEY: Google Security Operations에 인증하기 위한 API 키입니다.
  • SECRET: 피드를 인증하기 위해 생성한 보안 비밀 키입니다.

Microsoft Sentinel 이슈에 대한 Logic App 구성

Microsoft Sentinel 이슈용 로직 앱을 구성하려면 다음 단계를 따르세요.

  1. Azure 포털에 로그인합니다.
  2. 리소스 만들기를 클릭합니다.
  3. 'Logic App'을 검색합니다.
  4. 만들기를 클릭하여 만들기 프로세스를 시작합니다.
  5. 다음 입력 매개변수의 값을 지정합니다.
    • Subscription(구독): 구독을 선택합니다.
    • 리소스 그룹: 리소스 그룹을 선택합니다.
    • 이름: 로직 앱의 이름을 입력합니다.
    • 리전: 리전을 선택합니다.
    • 로그 애널리틱스 워크스페이스: 로그 애널리틱스 워크스페이스를 선택합니다.
  6. 검토 + 만들기를 클릭합니다.
  7. 만들기를 클릭합니다.
  8. 로직 앱이 생성되면 리소스로 이동을 클릭합니다.
  9. 개발 도구 > 로직 앱 디자이너를 클릭합니다.
  10. 트리거 추가를 클릭합니다.
  11. Microsoft Sentinel을 검색합니다.
  12. 트리거로 Microsoft Sentinel 이슈를 선택합니다.
  13. 아직 Microsoft Sentinel에 대한 연결을 만들지 않았다면 지금 연결을 만들어야 합니다. 새로 만들기를 클릭하고 안내에 따라 인증합니다.
  14. 새 단계 삽입을 클릭합니다.
  15. 작업 추가를 클릭합니다.
  16. HTTP를 검색하여 작업으로 선택합니다.
  17. 다음 입력 매개변수의 값을 지정합니다.
    • URI: 피드 엔드포인트 URL입니다.
    • 메서드: POST
    • 헤더: 다음 헤더를 추가합니다.
      • Content-Type: application/json
      • X-goog-api-key: Google Security Operations에 인증할 API 키입니다.
      • X-Webhook-Access-Key: 피드를 인증하기 위해 생성한 보안 비밀 키입니다.

Microsoft Sentinel 알림용 Logic App 구성

Microsoft Sentinel 알림용 로직 앱을 구성하려면 다음 단계를 따르세요.

  1. Azure 포털 홈페이지로 이동합니다.
  2. 리소스 만들기를 클릭합니다.
  3. 'Logic App'을 검색합니다.
  4. 만들기를 클릭하여 만들기 프로세스를 시작합니다.
  5. 다음 입력 매개변수의 값을 지정합니다.
    • Subscription(구독): 구독을 선택합니다.
    • 리소스 그룹: 리소스 그룹을 선택합니다.
    • 이름: 로직 앱의 이름을 입력합니다.
    • 리전: 리전을 선택합니다.
    • 로그 애널리틱스 워크스페이스: 로그 애널리틱스 워크스페이스를 선택합니다.
  6. 검토 + 만들기를 클릭합니다.
  7. 만들기를 클릭합니다.
  8. 로직 앱이 생성되면 리소스로 이동을 클릭합니다.
  9. 개발 도구 > 로직 앱 디자이너를 클릭합니다.
  10. 트리거 추가를 클릭합니다.
  11. Microsoft Sentinel을 검색합니다.
  12. 트리거로 Microsoft Sentinel 알림을 선택합니다.
  13. 아직 Microsoft Sentinel에 대한 연결을 만들지 않았다면 지금 연결을 만들어야 합니다. 새로 만들기를 클릭하고 안내에 따라 인증합니다.
  14. 새 단계 삽입을 클릭합니다.
  15. 작업 추가를 클릭합니다.
  16. HTTP를 검색하여 작업으로 선택합니다.
  17. 다음 입력 매개변수의 값을 지정합니다.
    • URI: 피드 엔드포인트 URL입니다.
    • 메서드: POST
    • 헤더: 다음 헤더를 추가합니다.
      • Content-Type: application/json
      • X-goog-api-key: Google Security Operations에 인증할 API 키입니다.
      • X-Webhook-Access-Key: 피드를 인증하기 위해 생성한 보안 비밀 키입니다.

Microsoft Sentinel의 자동화 규칙 구성

Microsoft Sentinel의 자동화 규칙을 구성하려면 다음 단계를 따르세요.

  1. Microsoft Sentinel 워크스페이스로 이동합니다.
  2. 구성 > 자동화를 클릭합니다.
  3. 만들기를 클릭합니다.
  4. 자동화 규칙을 선택합니다.
  5. 다음 입력 매개변수의 값을 지정합니다.
    • 이름: 자동화 규칙의 이름을 입력합니다.
    • 트리거: Incident is created(Incident 생성 시)를 선택합니다.
    • 작업: 플레이북 실행 > Incident(Incident)용으로 생성된 Logic App을 선택합니다.
  6. 적용을 클릭합니다.
  7. 만들기를 클릭합니다.
  8. 자동화 규칙을 선택합니다.
  9. 다음 입력 매개변수의 값을 지정합니다.
    • 이름: 자동화 규칙의 이름을 입력합니다.
    • 트리거: Incident is updated(Incident가 업데이트될 때)를 선택합니다.
    • 조건: 추가 > 조건 (그리고) > 상태 > 변경됨을 클릭합니다.
    • 작업: 플레이북 실행 > Incident(Incident)용으로 생성된 Logic App을 선택합니다.
  10. 적용을 클릭합니다.
  11. 만들기를 클릭합니다.
  12. 자동화 규칙을 선택합니다.
  13. 다음 입력 매개변수의 값을 지정합니다.
    • 이름: 자동화 규칙의 이름을 입력합니다.
    • 트리거: 알림이 생성될 때를 선택합니다.
    • 작업: 플레이북 실행 > 알림용으로 생성된 로직 앱을 선택합니다.
  14. 적용을 클릭합니다.

UDM 매핑 표

로그 필드 UDM 매핑 논리
AlertGenerationStatus security_result.detection_fields.AlertGenerationStatus JSON 파싱 후 ExtendedProperties 필드에서 직접 매핑됩니다.
AlertLink principal.labels.AlertLink 직접 매핑됩니다.
AlertName security_result.rule_name 직접 매핑됩니다.
AlertSeverity security_result.severity 직접 매핑되고 대문자로 변환됩니다. 값이 HIGH, MEDIUM, LOW, CRITICAL 또는 UNKNOWN_SEVERITY 중 하나인 경우 security_result.severity에 매핑됩니다. 그렇지 않으면 security_result.severity_details에 매핑됩니다.
AlertType security_result.threat_name 직접 매핑됩니다.
Category security_result.detection_fields.Category JSON 파싱 후 ExtendedProperties 필드에서 직접 매핑됩니다.
CompromisedEntity principal.resource.attribute.labels.CompromisedEntity 직접 매핑됩니다.
CompromisedEntityId security_result.detection_fields.CompromisedEntityId JSON 파싱 후 ExtendedProperties 필드에서 직접 매핑됩니다.
ConfidenceLevel security_result.confidence_details 직접 매핑됩니다.
ConfidenceScore security_result.detection_fields.ConfidenceScore 직접 매핑됩니다.
cribl_pipe additional.fields.cribl_pipe 직접 매핑됩니다.
Description security_result.description 직접 매핑됩니다.
DestinationDevice security_result.detection_fields.DestinationDevice 또는 target.ip JSON 파싱 후 ExtendedProperties 필드에서 매핑됩니다. 값이 유효한 IP 주소인 경우 target.ip에 매핑됩니다. 그렇지 않으면 감지 필드로 매핑됩니다.
DestinationDeviceAddress target.ip 유효한 IP 주소인 경우에만 JSON 파싱 후 ExtendedProperties 필드에서 매핑됩니다.
DeviceId security_result.detection_fields.DeviceId JSON 파싱 후 ExtendedProperties 필드에서 직접 매핑됩니다.
DisplayName security_result.summary 직접 매핑됩니다.
EndTime about.labels.EndTime 직접 매핑됩니다.
Entities.Address principal.asset.ip JSON 파싱 후 Entities 배열에서 추출됩니다. IP 주소만 매핑됩니다.
Entities.HostName principal.asset.hostname 또는 principal.asset.ip JSON 파싱 후 Entities 배열에서 추출됩니다. 값이 유효한 IP 주소인 경우 principal.asset.ip에 매핑됩니다. 그렇지 않으면 principal.asset.hostname에 매핑됩니다.
Entities.IoTDevice.DeviceId security_result.detection_fields.IoTDeviceID JSON 파싱 후 Entities 배열에서 추출됩니다.
Entities.IoTDevice.DeviceType security_result.detection_fields.IoTDeviceType JSON 파싱 후 Entities 배열에서 추출됩니다.
Entities.IoTDevice.DeviceTypeId security_result.detection_fields.IoTDeviceTypeId JSON 파싱 후 Entities 배열에서 추출됩니다.
Entities.IoTDevice.Importance security_result.detection_fields.IoTDeviceImportance JSON 파싱 후 Entities 배열에서 추출됩니다.
Entities.IoTDevice.IoTSecurityAgentId security_result.detection_fields.IoTSecurityAgentId JSON 파싱 후 Entities 배열에서 추출됩니다.
Entities.IoTDevice.Manufacturer security_result.detection_fields.IoT Manufacturer JSON 파싱 후 Entities 배열에서 추출됩니다.
Entities.IoTDevice.OperatingSystem principal.asset.platform_software.platform_version JSON 파싱 후 Entities 배열에서 추출되었으며 후행 공백이 삭제되었습니다.
Entities.IoTDevice.PurdueLayer security_result.detection_fields.IoT PurdueLayer JSON 파싱 후 Entities 배열에서 추출됩니다.
Entities.IoTDevice.Sensor security_result.detection_fields.IoT Sensor JSON 파싱 후 Entities 배열에서 추출됩니다.
ExtendedProperties.Protocol security_result.detection_fields.Protocol JSON 파싱 후 ExtendedProperties 필드에서 직접 매핑됩니다.
ExtendedProperties.SensorId security_result.detection_fields.SensorId JSON 파싱 후 ExtendedProperties 필드에서 직접 매핑됩니다.
ExtendedProperties.SourceDevice principal.ip 또는 security_result.detection_fields.SourceDevice JSON 파싱 후 ExtendedProperties 필드에서 매핑됩니다. 값이 유효한 IP 주소인 경우 principal.ip에 매핑됩니다. 그렇지 않으면 감지 필드로 매핑됩니다.
ExtendedProperties.SourceDeviceAddress principal.ip 유효한 IP 주소인 경우에만 JSON 파싱 후 ExtendedProperties 필드에서 매핑됩니다.
IsIncident security_result.detection_fields.IsIncident 직접 매핑되고 문자열로 변환됩니다.
ProcessingEndTime about.labels.ProcessingEndTime 직접 매핑됩니다.
ProductComponentName principal.resource.attribute.labels.ProductComponentName 직접 매핑됩니다.
ProductName principal.resource.attribute.labels.ProductName 직접 매핑됩니다.
ProviderName principal.resource.attribute.labels.ProviderName 직접 매핑됩니다.
ResourceId principal.resource.product_object_id, target.resource.name 직접 매핑됩니다.
SourceComputerId principal.asset.asset_id 직접 매핑되며 접두사로 'SourceComputerId:'가 추가됩니다.
SourceSystem security_result.detection_fields.SourceSystem 직접 매핑됩니다.
StartTime about.labels.StartTime 직접 매핑됩니다.
Status security_result.detection_fields.Status 직접 매핑됩니다.
SystemAlertId metadata.product_log_id 직접 매핑됩니다.
Tactics security_result.attack_details.tactics.name JSON 파싱 및 백슬래시 삭제 후 Tactics 필드에서 추출되었습니다.
Techniques security_result.attack_details.techniques.id JSON 파싱 및 백슬래시 삭제 후 Techniques 필드에서 추출되었습니다.
TenantId additional.fields.TenantId 직접 매핑됩니다.
TimeGenerated about.labels.TimeGenerated 직접 매핑됩니다.
timestamp metadata.event_timestamp, events.timestamp 직접 매핑됩니다.
VendorName metadata.vendor_name 직접 매핑됩니다.
VendorOriginalId additional.fields.VendorOriginalId 직접 매핑됩니다.
_time metadata.event_timestamp, events.timestamp UNIX 또는 UNIX_MS 형식을 사용하여 타임스탬프로 파싱됩니다.
(파서 로직) metadata.event_type 주 구성원, 대상, ResourceId가 있는 경우 'USER_RESOURCE_ACCESS'로 설정합니다. 그 외의 경우에는 'GENERIC_EVENT'로 설정합니다.
(파서 로직) metadata.log_type 'MICROSOFT_SENTINEL'로 설정합니다.
(파서 로직) metadata.product_name 'MICROSOFT_SENTINEL'로 설정합니다.

변경사항

2023-11-03

  • 'ResourceId'가 'target.resource.name'에 매핑되었습니다.
  • 'ResourceId'가 'not null'이고 이벤트에 'principal' 또는 'target' 중 하나가 'not null'인 경우 'metadata.event_type'을 'USER_RESOURCE_ACCESS'에 매핑합니다.

2023-08-31

  • 파서를 새로 만들었습니다.