다음을 통해 공유


ASIM(고급 보안 정보 모델) 파서 관리(공개 미리 보기)

ASIM(고급 보안 정보 모델) 사용자는 쿼리에서 테이블 이름 대신 통합 파서를 사용하여 데이터를 정규화된 형식으로 보고 스키마와 관련된 모든 데이터를 단일 쿼리로 가져옵니다. 각 통합 파서는 각 원본의 특정 세부 정보를 처리하는 여러 원본 관련 파서를 사용합니다.

파서를 ASIM 아키텍처에 맞추는 방법을 이해하려면 ASIM 아키텍처 다이어그램을 참조하세요.

다음을 위해 각 통합 파서에서 사용하는 원본 관련 파서를 관리해야 할 수 있습니다.

  • 통합 파서에 사용자 지정 원본 관련 파서를 추가합니다.

  • 통합 파서에서 사용하는 기본 제공 원본 관련 파서를 사용자 지정 원본 관련 파서로 교체합니다. 다음과 같은 경우 기본 제공 파서를 교체합니다.

    • 통합 파서에서 기본적으로 사용되는 것과 다른 버전의 기본 제공 파서를 사용합니다.

    • 통합 파서에서 사용하는 원본 관련 파서의 버전을 유지하여 자동 업데이트를 방지합니다.

    • 기본 제공 파서의 수정된 버전을 사용합니다.

  • 예를 들어 파서와 관련된 정보를 보내는 원본을 정의하려면 원본 관련 파서를 구성합니다.

이 문서는 기본 제공된 통합 ASIM 파서를 사용하든 작업 영역에 배포된 통합 파서를 사용하든 상관없이 파서를 관리하는 방법을 안내합니다.

Important

ASIM은 현재 미리 보기 상태입니다. Azure Preview 추가 약관에는 베타, 미리 보기 또는 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 추가 법률 용어가 포함되어 있습니다.

필수 조건

이 문서의 절차에서는 모든 원본 관련 파서가 이미 Microsoft Sentinel 작업 영역에 배포되었다고 가정합니다.

자세한 내용은 ASIM 파서 개발을 참조하세요.

기본 제공된 통합 파서 관리

작업 영역 설정

Microsoft Sentinel 사용자는 기본 제공 통합 파서를 편집할 수 없습니다. 대신 다음 메커니즘을 사용하여 기본 제공 통합 파서의 동작을 수정합니다.

  • 원본 관련 파서 추가를 지원하기 위해 ASIM은 통합 사용자 지정 파서를 사용합니다. 이러한 사용자 지정 파서는 작업 영역에 배포되므로 편집할 수 있습니다. 기본 제공된 통합 파서는 이러한 사용자 지정 파서를 자동으로 선택합니다(있는 경우).

    지원되는 모든 스키마에 대해 또는 특정 스키마에 대해 개별적으로 Microsoft Sentinel 작업 영역에 초기의 비어 있는 통합 사용자 지정 파서를 배포할 수 있습니다. 자세한 내용은 Microsoft Sentinel GitHub 리포지토리에서 초기 ASIM 빈 사용자 지정 통합 파서 배포를 참조하세요.

  • 기본 제공된 원본 관련 파서 제외를 지원하기 위해 ASIM은 관심 목록을 사용합니다. Microsoft Sentinel GitHub 리포지토리에서 관심 목록을 Microsoft Sentinel 작업 영역에 배포합니다.

  • 기본 제공 및 사용자 지정 파서의 원본 형식을 정의하기 위해 ASIM은 관심 목록을 사용합니다. Microsoft Sentinel GitHub 리포지토리에서 관심 목록을 Microsoft Sentinel 작업 영역에 배포합니다.

기본 제공 통합 파서에 사용자 지정 파서 추가

사용자 지정 구문 분석기를 추가하려면 사용자 지정 통합 구문 분석기에 줄을 삽입하여 새로운 사용자 지정 구문 분석기를 참조하세요.

필터링 사용자 지정 파서와 매개 변수가 없는 사용자 지정 파서를 모두 추가해야 합니다. 파서를 편집하는 방법에 대한 자세한 내용은 Azure Monitor 로그 쿼리의 기능 문서를 참조하세요.

추가할 줄의 구문은 스키마마다 다릅니다.

스키마 파서 추가할 줄
DNS Im_DnsCustom _parser_name_ (starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
NetworkSession Im_NetworkSessionCustom _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, dstipaddr_has_any_prefix, dstportnumber, hostname_has_any, dvcaction, eventresult)
WebSession Im_WebSessionCustom _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, url_has_any, httpuseragent_has_any, eventresultdetails_in, eventresult)

이미 파서를 참조하는 통합 사용자 지정 파서에 추가 파서를 추가할 때 이전 줄 끝에 쉼표를 추가해야 합니다.

예를 들어 다음 코드는 added_parser를 추가한 후의 사용자 지정 통합 파서를 보여 줍니다.

union isfuzzy=true
existing_parser(starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype),
added_parser(starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)

기본 제공 파서의 수정된 버전 사용

기존의 기본 제공 원본 관련 파서를 수정하려면:

  1. 원래 파서를 기반으로 사용자 지정 파서를 만들고 기본 제공 파서에 추가합니다.

  2. ASim Disabled Parsers 관심 목록에 레코드를 추가합니다.

  3. CallerContext 값을 Exclude<parser name>으로 정의합니다. 여기서 <parser name>은 파서를 제외할 통합 파서의 이름입니다.

  4. SourceSpecificParserExclude<parser name>을 정의합니다. 여기서 <parser name>은 버전 지정자 없이 제외할 파서의 이름입니다.

예를 들어 Azure Firewall DNS 파서를 제외하려면 다음 레코드를 관심 목록에 추가합니다.

CallerContext SourceSpecificParser
Exclude_Im_Dns Exclude_Im_Dns_AzureFirewall

기본 제공 파서의 자동 업데이트 방지

기본 제공 원본 관련 파서에 대한 자동 업데이트를 방지하려면 다음 프로세스를 사용합니다.

  1. 사용하려는 기본 제공 파서 버전(예: _Im_Dns_AzureFirewallV02)을 사용자 지정 통합 파서에 추가합니다. 자세한 내용은 위의 기본 제공 통합 파서에 사용자 지정 파서 추가를 참조하세요.

  2. 기본 제공 파서에 대한 예외를 추가합니다. 예를 들어 자동 업데이트를 완전히 옵트아웃하여 다수의 기본 제공 파서를 제외하려면 다음을 추가합니다.

  • CallerContext에 대한 모든 구문 분석기를 제외하기 위한 SourceSpecificParser 필드로 Any가 있는 레코드.
  • 모든 기본 제공 파서를 제외하기 위한 CallerContext 및 SourceSpecificParser 필드의 Any에 대한 레코드.

자세한 내용은 기본 제공 파서의 수정된 버전 사용을 참조하세요.

작업 영역에 배포된 통합 파서 관리

작업 영역에 배포된 통합 파서에 사용자 지정 파서 추가

사용자 지정 파서를 추가하려면 새 사용자 지정 파서를 참조하는 작업 영역 배포 통합 파서의 union 문에 행을 삽입합니다.

필터링 사용자 지정 파서와 매개 변수가 없는 사용자 지정 파서를 모두 추가해야 합니다. 추가할 줄의 구문은 스키마마다 다릅니다.

스키마 파서 추가할 줄
인증 ImAuthentication _parser_name_ (starttime, endtime, targetusername_has)
DNS ImDns _parser_name_ (starttime, endtime, srcipaddr, domain_has_any,
responsecodename, response_has_ipv4, response_has_any_prefix,
eventtype)
파일 이벤트 imFileEvent _parser_name_
네트워크 세션 imNetworkSession _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, dstipaddr_has_any_prefix, dstportnumber, url_has_any,
httpuseragent_has_any, hostname_has_any, dvcaction, eventresult)
프로세스 이벤트 - imProcess
- imProcessCreate
- imProcessTerminate
_parser_name_
레지스트리 이벤트 imRegistry

_parser_name_
웹 세션 imWebSession

_parser_name_ parser (starttime, endtime, srcipaddr_has_any, url_has_any, httpuseragent_has_any, eventresultdetails_in, eventresult)

통합 파서에 추가 파서를 추가할 때 이전 줄 끝에 쉼표를 추가해야 합니다.

예를 들어 다음 예는 사용자 지정 added_parser를 추가한 후의 DNS 필터링 통합 파서를 보여 줍니다.

  let Generic=(starttime:datetime=datetime(null), endtime:datetime=datetime(null) , srcipaddr:string='*' , domain_has_any:dynamic=dynamic([]) , responsecodename:string='*', response_has_ipv4:string='*' , response_has_any_prefix:dynamic=dynamic([]) , eventtype:string='lookup' ){
  let DisabledParsers=materialize(_GetWatchlist('ASimDisabledParsers') | where SearchKey in ('Any', 'imDns') | extend SourceSpecificParser=column_ifexists('SourceSpecificParser','') | distinct SourceSpecificParser);
  let imDnsBuiltInDisabled=toscalar('imDnsBuiltIn' in (DisabledParsers) or 'Any' in (DisabledParsers)); 
  union isfuzzy=true
      vimDnsEmpty
    , vimDnsCiscoUmbrella  ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsCiscoUmbrella'   in (DisabledParsers) )))
    , vimDnsInfobloxNIOS   ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsInfobloxNIOS'    in (DisabledParsers) )))
    ...
    , vimDnsAzureFirewall  ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsAzureFirewall'   in (DisabledParsers) )))
    , vimDnsMicrosoftNXlog ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsMicrosoftNXlog'  in (DisabledParsers) ))),
    added_parser ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
     };
  Generic( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)

작업 영역 배포 파서의 수정된 버전 사용

Microsoft Sentinel 사용자는 작업 영역에 배치된 파서를 직접 수정할 수 있습니다. 원본을 기반으로 파서를 만들고 원본을 주석으로 처리한 다음 수정된 버전을 작업 영역에 배포된 통합 파서에 추가합니다.

예를 들어 다음 코드는 vimDnsAzureFirewall 파서를 수정된 버전으로 교체한 DNS 필터링 통합 파서를 보여 줍니다.

  let Generic=(starttime:datetime=datetime(null), endtime:datetime=datetime(null) , srcipaddr:string='*' , domain_has_any:dynamic=dynamic([]) , responsecodename:string='*', response_has_ipv4:string='*' , response_has_any_prefix:dynamic=dynamic([]) , eventtype:string='lookup' ){
  let DisabledParsers=materialize(_GetWatchlist('ASimDisabledParsers') | where SearchKey in ('Any', 'imDns') | extend SourceSpecificParser=column_ifexists('SourceSpecificParser','') | distinct SourceSpecificParser);
  let imDnsBuiltInDisabled=toscalar('imDnsBuiltIn' in (DisabledParsers) or 'Any' in (DisabledParsers)); 
  union isfuzzy=true
      vimDnsEmpty
    , vimDnsCiscoUmbrella  ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsCiscoUmbrella'   in (DisabledParsers) )))
    , vimDnsInfobloxNIOS   ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsInfobloxNIOS'    in (DisabledParsers) )))
    ...
    // , vimDnsAzureFirewall  ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsAzureFirewall'   in (DisabledParsers) )))
    , vimDnsMicrosoftNXlog ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsMicrosoftNXlog'  in (DisabledParsers) ))),
    modified_vimDnsAzureFirewall ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
     };
  Generic( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)

원본 관련 파서와 관련된 원본 구성

일부 파서는 파서와 관련된 원본 목록을 업데이트해야 합니다. 예를 들어 Syslog 데이터를 사용하는 파서는 파서와 관련된 Syslog 이벤트를 결정하지 못할 수 있습니다. 이러한 파서는 Sources_by_SourceType 관심 목록을 사용하여 파서와 관련된 정보를 보내는 원본을 결정할 수 있습니다. 이러한 구문 분석을 위해 각 관련 원본에 대한 레코드를 관심 목록에 추가합니다.

  • SourceType 필드를 파서 설명서에 지정된 파서 특정 값으로 설정합니다.
  • Source 필드를 이벤트에 사용된 원본의 식별자로 설정합니다. 올바른 값을 결정하기 위해 Syslog와 같은 원래 테이블을 쿼리해야 할 수도 있습니다.

시스템에 Sources_by_SourceType 관심 목록이 배포되지 않은 경우 Microsoft Sentinel GitHub 리포지토리에서 관심 목록을 Microsoft Sentinel 작업 영역에 배포합니다.

다음 단계

이 문서에서는 ASIM(고급 보안 정보 모델) 파서 관리에 대해 설명합니다.

ASIM 파서에 대해 자세히 알아보기:

일반적으로 ASIM에 대해 자세히 알아봅니다.