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)
관련 콘텐츠
자세한 내용은 다음을 참조하세요.