Отфильтровать IP-адреса из запроса Kusto - PullRequest
0 голосов
/ 03 августа 2020

Я использую следующий запрос для проверки входящих подключений виртуальных машин:

// the machines of interest
let ips=materialize(ServiceMapComputer_CL
| summarize ips=makeset(todynamic(Ipv4Addresses_s)) by MonitoredMachine=ResourceName_s
| mvexpand ips to typeof(string));
let StartDateTime = datetime(2020-07-01T00:00:00Z);
let EndDateTime = datetime(2021-01-01T01:00:00Z);
VMConnection
| where Direction == 'inbound'
| where TimeGenerated > StartDateTime and TimeGenerated  < EndDateTime
| join kind=inner (ips) on $left.DestinationIp == $right.ips
| summarize sum(LinksEstablished) by Computer, Direction, SourceIp, DestinationIp, DestinationPort, RemoteDnsCanonicalNames, Protocol

Есть несколько IP-адресов, которые я хотел бы отфильтровать, потому что они бесполезны и могут сбивать с толку. Любые советы, как я могу отфильтровать результаты IP-адресов, например 10.30.0.0/20 и 10.40.0.0/25?

1 Ответ

1 голос
/ 03 августа 2020

Не совсем понятно, как выглядят ваши входные данные и как вы определяете IP-адреса для фильтрации. Поэтому приведенный ниже ответ поможет вам начать работу:

let ServiceMapComputer_CL = datatable(Ipv4Addresses_s:string, ResourceName_s:string)
[
 '10.0.30.0/20', 'a',
 '10.40.0.0/25', 'a',
 '11.1.30.0/20', 'b', // only record that will be left
];
ServiceMapComputer_CL
| where not(ipv4_is_match(Ipv4Addresses_s, '10.0.30.0') or ipv4_is_match(Ipv4Addresses_s, '10.40.0.0'))
| distinct Ipv4Addresses_s, ResourceName_s

Обратите внимание, что оператор mvexpand следует заменить на mv-expand: семантика двух различается (mvexpand - это устаревшая версия - и у нее также есть внутреннее ограничение на расширение по умолчанию только 128 значений, что может привести к возврату неверных результатов).

...