ASIM(고급 보안 정보 모델) 작업 영역 배포 파서

배포된 작업 영역 ASIM(고급 보안 정보 모델) 파서는 ASIM 파서 개발 및 수정을 지원하는 데 사용됩니다.

작업 영역 파서 배포

ASIM은 ARM 템플릿을 사용하여 GitHub의 특정 작업 영역에 파서를 배포하는 것도 지원합니다. 배포된 작업 영역 파서는 ASIM 파서 개발 및 관리에 사용됩니다. 배포된 작업 영역 파서는 기능적으로 동일하지만 명명 규칙이 약간 다르기 때문에 두 파서 집합이 동일한 Microsoft Sentinel 작업 영역에서 기본 제공 파서와 공존할 수 있습니다.

ASIM 콘텐츠를 개발할 때 기본 제공 파서를 사용하는 것이 좋습니다. 작업 영역 배포 파서는 일반적으로 파서 개발 프로세스 중에 사용되거나 파서 관리에 설명된 대로 수정된 버전의 기본 제공 파서를 제공하는 데 사용됩니다.

작업 영역 파서 사용

쿼리에서 작업 영역 파서를 사용하는 경우 통합 파서 이름은 입니다. 여기서 <schema>im<schema>서비스하는 특정 스키마를 나타냅니다.

다음 표에는 사용 가능한 통합 파서가 나와 있습니다.

스키마 파서 통합
경고 이벤트 imAlertEvent
감사 이벤트 imAuditEvent
인증 imAuthentication
DHCP 이벤트 imDhcpEvent
Dns imDns
파일 이벤트 imFileEvent
네트워크 세션 imNetworkSession
프로세스 이벤트 imProcess만들기
imProcessTerminate
레지스트리 이벤트 imRegistry
사용자 관리 imUserManagement
웹 세션 imWebSession

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

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

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

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

스키마 파서 추가할 줄
AlertEvent imAlertEvent _parser_name_ (starttime, endtime, ipaddr_has_any_prefix, hostname_has_any, username_has_any, attacktactics_has_any, attacktechniques_has_any, threatcategory_has_any, alertverdict_has_any, eventseverity_has_any)
AuditEvent imAuditEvent _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, eventtype_in, eventresult, actorusername_has_any, operation_has_any, object_has_any, newvalue_has_any)
인증 imAuthentication _parser_name_ (starttime, endtime, targetusername_has_any, actorusername_has_any, srcipaddr_has_any_prefix, srchostname_has_any, targetipaddr_has_any_prefix, dvcipaddr_has_any_prefix, dvchostname_has_any, eventtype_in, eventresultdetails_in, eventresult)
DhcpEvent imDhcpEvent _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, srchostname_has_any, srcusername_has_any, eventresult)
Dns imDns _parser_name_ (starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
FileEvent imFileEvent _parser_name_ (starttime, endtime, eventtype_in, srcipaddr_has_any_prefix, actorusername_has_any, targetfilepath_has_any, srcfilepath_has_any, hashes_has_any, dvchostname_has_any)
NetworkSession imNetworkSession _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, dstipaddr_has_any_prefix, ipaddr_has_any_prefix, dstportnumber, hostname_has_any, dvcaction, eventresult)
ProcessEvent imProcessCreate, imProcessTerminate _parser_name_ (starttime, endtime, commandline_has_any, commandline_has_all, commandline_has_any_ip_prefix, actingprocess_has_any, targetprocess_has_any, parentprocess_has_any, targetusername_has, actorusername_has, dvcipaddr_has_any_prefix, dvchostname_has_any, eventtype)
RegistryEvent imRegistry _parser_name_ (starttime, endtime, eventtype_in, actorusername_has_any, registrykey_has_any, registryvalue_has_any, registryvaluedata_has_any, dvchostname_has_any)
UserManagement imUserManagement _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, targetusername_has_any, actorusername_has_any, eventtype_in)
WebSession imWebSession _parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, ipaddr_has_any_prefix, 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)

자세한 내용은 다음 항목을 참조하세요.