다음을 통해 공유


ASIM(고급 보안 정보 모델) 작업 공간에 배포된 파서

ASIM(Advanced Security Information Model) 파서가 배포된 작업 영역은 ASIM 파서 개발 및 수정을 지원하는 데 사용됩니다.

작업 공간 파서 배포

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

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

작업 영역 파서 사용

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

다음 표에서는 사용 가능한 통합 파서를 나열합니다.

Schema 파서 통합
경고 이벤트 imAlertEvent
감사 이벤트 imAuditEvent
Authentication imAuthentication
DHCP 이벤트 imDhcpEvent
Dns imDns
파일 이벤트 imFileEvent
네트워크 세션 imNetworkSession
프로세스 이벤트 imProcessCreate
im프로세스종료
레지스트리 이벤트 imRegistry
사용자 관리 imUserManagement
웹 세션 imWebSession

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

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

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

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

Schema 파서 추가할 줄
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)
Authentication 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)
사용자 관리 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)

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