<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%B0%D0%BC%D0%B8_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2_DQL</id>
	<title>Работа с результатами запросов DQL - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://doc.ruscomtech.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%B0%D0%BC%D0%B8_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2_DQL"/>
	<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%B0%D0%BC%D0%B8_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2_DQL&amp;action=history"/>
	<updated>2026-10-06T17:59:17Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://doc.ruscomtech.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%B0%D0%BC%D0%B8_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2_DQL&amp;diff=6834&amp;oldid=prev</id>
		<title>IKuznetsov: Новая страница: « = Работа с результатами запросов DQL в Расследованиях = &#039;&#039;&#039;Руководство&#039;&#039;&#039;  При решении инцидентов или охоте на угрозы по данным результаты работы инженеров по безопасности и DevOps-инженеров зависят от их находок. Они могут начать с запроса, вызвавшего ошибку...»</title>
		<link rel="alternate" type="text/html" href="https://doc.ruscomtech.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D0%B0%D0%BC%D0%B8_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2_DQL&amp;diff=6834&amp;oldid=prev"/>
		<updated>2026-09-24T18:21:08Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: « = Работа с результатами запросов DQL в Расследованиях = &amp;#039;&amp;#039;&amp;#039;Руководство&amp;#039;&amp;#039;&amp;#039;  При решении инцидентов или охоте на угрозы по данным результаты работы инженеров по безопасности и DevOps-инженеров зависят от их находок. Они могут начать с запроса, вызвавшего ошибку...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
= Работа с результатами запросов DQL в Расследованиях =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Руководство&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
При решении инцидентов или охоте на угрозы по данным результаты работы инженеров по безопасности и DevOps-инженеров зависят от их находок. Они могут начать с запроса, вызвавшего ошибку, и добраться до истинной первопричины проблемы, ища подсказки в логах, событиях и трассировках. Чтобы найти эти подсказки, им нужно уточнять запросы &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039; на основе результатов предыдущих запросов.&lt;br /&gt;
&lt;br /&gt;
Далее вы узнаете, как &amp;#039;&amp;#039;&amp;#039;Расследования&amp;#039;&amp;#039;&amp;#039; помогают ускорить расследования за счёт более быстрого и удобного построения запросов &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039; из результатов запросов.&lt;br /&gt;
&lt;br /&gt;
== Целевая аудитория ==&lt;br /&gt;
Эта статья предназначена для инженеров по безопасности и DevOps-инженеров, которые занимаются поддержкой и защитой своей инфраструктуры, решением инцидентов и охотой на угрозы по логам, событиям и трассировкам.&lt;br /&gt;
&lt;br /&gt;
== Предварительные требования ==&lt;br /&gt;
Убедитесь, что логи вашего приложения загружаются в Ключ-АСТРОМ через приём логов или приём событий безопасности.&lt;br /&gt;
&lt;br /&gt;
Базовые знания:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ключ-АСТРОМ Query Language (DQL)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ключ-АСТРОМ Pattern Language (DPL)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Чтобы следовать этой статье, у вас есть следующие варианты в &amp;#039;&amp;#039;&amp;#039;Ключ-АСТРОМ Playground&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Создать собственное расследование из существующего шаблона&lt;br /&gt;
* Открыть общее расследование&lt;br /&gt;
&lt;br /&gt;
== Начало работы ==&lt;br /&gt;
После того как вы откроете &amp;#039;&amp;#039;&amp;#039;Расследования&amp;#039;&amp;#039;&amp;#039; и создадите расследование, первый узел, созданный при выполнении запроса, отображает логи, с которых вы хотите начать расследование.&lt;br /&gt;
&lt;br /&gt;
== Фильтрация по значениям полей таблицы результатов ==&lt;br /&gt;
Самый простой способ создать фильтр — щёлкнуть правой кнопкой мыши по значению поля и выбрать &amp;#039;&amp;#039;&amp;#039;Фильтр&amp;#039;&amp;#039;&amp;#039;. В следующих двух примерах (Фильтрация по одному значению и Фильтрация по нескольким значениям) мы будем фильтровать по IP-адресам. Однако вы можете использовать тот же подход для любых других типов данных.&lt;br /&gt;
&lt;br /&gt;
В &amp;#039;&amp;#039;&amp;#039;Playground&amp;#039;&amp;#039;&amp;#039; фильтры по значениям полей отображаются в дереве запросов как мятные узлы.&lt;br /&gt;
&lt;br /&gt;
=== Фильтрация по одному значению ===&lt;br /&gt;
Чтобы отобразить только события с одного IP-адреса, щёлкните правой кнопкой мыши по IP-адресу в поле &amp;lt;code&amp;gt;src_ip&amp;lt;/code&amp;gt; таблицы результатов и выберите &amp;#039;&amp;#039;&amp;#039;Фильтр&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Аналогичная команда будет добавлена в поле ввода запроса:&amp;lt;pre&amp;gt;&lt;br /&gt;
| filter src_ip == toIp(&amp;quot;52.88.49.98&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;Чтобы исключить события с IP-адреса, щёлкните правой кнопкой мыши по IP-адресу в поле &amp;lt;code&amp;gt;src_ip&amp;lt;/code&amp;gt; таблицы результатов и выберите &amp;#039;&amp;#039;&amp;#039;Исключить&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Фильтрация по нескольким значениям ===&lt;br /&gt;
Предположим, вы нашли много IP-адресов в логах аутентификации и хотите увидеть другие запросы, инициированные с этих IP-адресов. В этом случае вы можете фильтровать по нескольким значениям сразу. У вас есть два варианта:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Вариант 1&amp;#039;&amp;#039;&amp;#039;: выберите диапазон значений (удерживая клавишу &amp;#039;&amp;#039;&amp;#039;Shift&amp;#039;&amp;#039;&amp;#039;, выберите первое и последнее значение в таблице), щёлкните по ним правой кнопкой мыши и выберите &amp;#039;&amp;#039;&amp;#039;Фильтр&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Вариант 2&amp;#039;&amp;#039;&amp;#039;: выберите отдельные значения (удерживая клавишу &amp;#039;&amp;#039;&amp;#039;Ctrl&amp;#039;&amp;#039;&amp;#039;, выберите нужные значения), щёлкните по ним правой кнопкой мыши и выберите &amp;#039;&amp;#039;&amp;#039;Фильтр&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Чтобы сэкономить место и повысить производительность запроса, в фильтр добавляются только уникальные значения.&lt;br /&gt;
&lt;br /&gt;
Аналогичная команда будет добавлена в поле ввода запроса:&amp;lt;pre&amp;gt;&lt;br /&gt;
| filter ipIn(src_ip, {&amp;quot;11.144.253.191&amp;quot;, &amp;quot;187.6.11.91&amp;quot;, &amp;quot;4.87.158.108&amp;quot;, &amp;quot;165.144.55.79&amp;quot;})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Фильтрация по части значения ===&lt;br /&gt;
Предположим, вы хотите найти только события, содержащие часть &amp;lt;code&amp;gt;Intel Mac OS X 10_15_7&amp;lt;/code&amp;gt; в значении &amp;lt;code&amp;gt;user-agent&amp;lt;/code&amp;gt;. В этом случае вы можете фильтровать по выбранной части значения: выделите нужную часть курсором, щёлкните правой кнопкой мыши и выберите &amp;#039;&amp;#039;&amp;#039;Фильтр&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Аналогичная команда будет добавлена в поле ввода запроса:&amp;lt;pre&amp;gt;&lt;br /&gt;
| filter contains(user_agent, &amp;quot;Intel Mac OS X 10_15_7&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;В &amp;#039;&amp;#039;&amp;#039;Playground&amp;#039;&amp;#039;&amp;#039; фильтры по части значения отображаются в дереве запросов как оранжевые узлы.&lt;br /&gt;
&lt;br /&gt;
=== Фильтрация по статистическим значениям ===&lt;br /&gt;
Предположим, вы хотите увидеть только событие с размером ответа больше среднего размера ответа в текущем наборе результатов. В этом случае вы можете создавать запросы на основе статистических значений: выберите поля, по которым нужно рассчитать медиану, щёлкните по ним правой кнопкой мыши и выберите &amp;#039;&amp;#039;&amp;#039;Статистика &amp;gt; Медиана &amp;gt; Больше&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Аналогичная команда будет добавлена в поле ввода запроса (где значение медианы рассчитывается автоматически):&amp;lt;pre&amp;gt;&lt;br /&gt;
| filter response_size &amp;gt; 4464&lt;br /&gt;
&amp;lt;/pre&amp;gt;В &amp;#039;&amp;#039;&amp;#039;Playground&amp;#039;&amp;#039;&amp;#039; статистические фильтры отображаются в дереве запросов как зелёные узлы.&lt;br /&gt;
&lt;br /&gt;
=== Фильтрация по метке времени ===&lt;br /&gt;
Метки времени — одни из самых важных точек данных при расследовании логов и событий. &amp;#039;&amp;#039;&amp;#039;Расследования&amp;#039;&amp;#039;&amp;#039; предлагают специальные фильтры для этого типа данных в дополнение к операторам фильтрации &amp;#039;&amp;#039;&amp;#039;Later than&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Equal&amp;#039;&amp;#039;&amp;#039; или &amp;#039;&amp;#039;&amp;#039;Earlier than&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
В &amp;#039;&amp;#039;&amp;#039;Playground&amp;#039;&amp;#039;&amp;#039; фильтры по метке времени отображаются в дереве запросов как синие узлы.&lt;br /&gt;
&lt;br /&gt;
==== Фильтрация по диапазону ====&lt;br /&gt;
Предположим, вы нашли интересную строку лога и хотите лучше её понять. Вы хотите увидеть, что ещё произошло вокруг времени вашего события. В этом случае вы можете фильтровать по диапазону: щёлкните правой кнопкой мыши по метке времени и выберите &amp;#039;&amp;#039;&amp;#039;Фильтры по времени &amp;gt; Около 5 секунд&amp;#039;&amp;#039;&amp;#039;. Это добавит фильтр, показывающий записи ровно за пять секунд до и через пять секунд после выбранного события.&lt;br /&gt;
&lt;br /&gt;
Аналогичная команда будет добавлена в поле ввода запроса:&amp;lt;pre&amp;gt;&lt;br /&gt;
| filter timestamp &amp;gt;= toTimestamp(&amp;quot;2025-01-13T07:46:32.000000000Z&amp;quot;)-5s&lt;br /&gt;
     and timestamp &amp;lt;= toTimestamp(&amp;quot;2025-01-13T07:46:32.000000000Z&amp;quot;)+5s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Фильтрация по диапазону нескольких выбранных значений метки времени ====&lt;br /&gt;
Предположим сценарий, в котором происходят несколько событий в разное время, и вы хотите понять, что ещё произошло в этом временном интервале. В этом случае вы можете фильтровать по диапазону нескольких выбранных значений метки времени: выберите несколько значений метки времени (с помощью клавиш &amp;#039;&amp;#039;&amp;#039;Shift&amp;#039;&amp;#039;&amp;#039; или &amp;#039;&amp;#039;&amp;#039;Ctrl&amp;#039;&amp;#039;&amp;#039;) и выберите &amp;#039;&amp;#039;&amp;#039;Фильтр по диапазону&amp;#039;&amp;#039;&amp;#039;. Это создаст фильтр, показывающий все записи между минимальным и максимальным значениями метки времени из выбранного диапазона.&lt;br /&gt;
&lt;br /&gt;
Аналогичная команда будет добавлена в поле ввода запроса:&amp;lt;pre&amp;gt;&lt;br /&gt;
| filter timestamp &amp;gt;= toTimestamp(&amp;quot;2025-01-13T07:31:23.000Z&amp;quot;)&lt;br /&gt;
     and timestamp &amp;lt;= toTimestamp(&amp;quot;2025-01-13T07:46:37.000Z&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Копирование записей из таблицы результатов ==&lt;br /&gt;
Существует больше способов использования записей, чем создание дополнительных фильтров. С помощью &amp;#039;&amp;#039;&amp;#039;Расследований&amp;#039;&amp;#039;&amp;#039; вы можете получать доступ к своим результатам различными способами, например, копируя их в другие системы.&lt;br /&gt;
&lt;br /&gt;
=== Копирование как текст ===&lt;br /&gt;
Самый базовый режим копирования — копирование как текст. Вы можете скопировать либо одно поле за раз, либо несколько значений одновременно, используя клавиши &amp;#039;&amp;#039;&amp;#039;Shift&amp;#039;&amp;#039;&amp;#039; или &amp;#039;&amp;#039;&amp;#039;Ctrl&amp;#039;&amp;#039;&amp;#039;. Выберите поля, которые хотите скопировать, щёлкните по ним правой кнопкой мыши и выберите &amp;#039;&amp;#039;&amp;#039;Копировать &amp;gt; Как текст&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Копирование как значение DQL ===&lt;br /&gt;
Предположим, вы хотите использовать значение IP-адреса из результатов в следующем запросе &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;, сохранив его тип. В этом случае вы можете щёлкнуть правой кнопкой мыши по значению IP-адреса и выбрать &amp;#039;&amp;#039;&amp;#039;Копировать &amp;gt; Как значение DQL&amp;#039;&amp;#039;&amp;#039;. Это скопирует IP-адрес с функцией приведения типа, готовой к использованию.&lt;br /&gt;
&lt;br /&gt;
Аналогичная команда будет добавлена в поле ввода запроса:&amp;lt;pre&amp;gt;&lt;br /&gt;
toIp(&amp;quot;187.6.11.91&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Копирование записи как данные DQL ===&lt;br /&gt;
Предположим, вы нашли интересную запись, которой хотите поделиться с коллегами. Копировать каждую колонку вручную было бы трудоёмко, а делиться запросом &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039; для его выполнения — неудобно. В этом случае вы можете щёлкнуть правой кнопкой мыши по записи в таблице результатов, выбрать &amp;#039;&amp;#039;&amp;#039;Копировать &amp;gt; Запись как данные DQL&amp;#039;&amp;#039;&amp;#039; и вставить её в Slack или без лишних усилий добавить в задачу Jira. Скопированная запись — это конструкция данных, позволяющая получить запись в любой среде Ключ-АСТРОМ.&lt;br /&gt;
&lt;br /&gt;
Аналогичная команда будет добавлена в поле ввода запроса:&amp;lt;pre&amp;gt;&lt;br /&gt;
data&lt;br /&gt;
  record(&lt;br /&gt;
    content = &amp;quot;&amp;quot;&amp;quot;187.6.11.91 - - [13/Jan/2025 09:46:32 +0200] &amp;quot;POST /index.php HTTP/1.1&amp;quot; &amp;quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36&amp;quot; 200 5503&amp;quot;&amp;quot;&amp;quot;,&lt;br /&gt;
    src_ip = toIp(&amp;quot;187.6.11.91&amp;quot;),&lt;br /&gt;
    timestamp = toTimestamp(&amp;quot;2025-01-13T07:46:32.000000000Z&amp;quot;),&lt;br /&gt;
    request = &amp;quot;POST /index.php HTTP/1.1&amp;quot;,&lt;br /&gt;
    user_agent = &amp;quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36&amp;quot;,&lt;br /&gt;
    response = 200,&lt;br /&gt;
    response_size = 5503&lt;br /&gt;
  )&lt;br /&gt;
&amp;lt;/pre&amp;gt;Или предположим, вы выполнили запрос, вернувший 200 результатов, и хотите отфильтровать их дальше. В этом случае вы можете выбрать все записи, скопировать их как данные &amp;#039;&amp;#039;&amp;#039;DQL&amp;#039;&amp;#039;&amp;#039;, вставить в поле ввода запроса и выполнить запрос. Вы получите тот же набор результатов, который теперь можно фильтровать гораздо быстрее.&lt;br /&gt;
&lt;br /&gt;
=== Копирование записи как данные JSON ===&lt;br /&gt;
Предположим, вы хотите использовать свои находки в другой системе или написать собственный скрипт на Python для их анализа. Для поддержки такого кросс-использования данных вы можете скопировать результаты как данные &amp;#039;&amp;#039;&amp;#039;JSON&amp;#039;&amp;#039;&amp;#039;: выберите одну или несколько записей в таблице результатов, выберите &amp;#039;&amp;#039;&amp;#039;Копировать &amp;gt; Запись как данные JSON&amp;#039;&amp;#039;&amp;#039; и вставьте в задачу Jira или в качестве входных данных для вашего скрипта.&lt;br /&gt;
&lt;br /&gt;
Аналогичная команда будет добавлена в поле ввода запроса:&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;content&amp;quot;: &amp;quot;62.27.37.94 - - [13/Jan/2025 09:46:30 +0200] \&amp;quot;GET /index.php?alfa=rnwbm HTTP/1.1\&amp;quot; \&amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36\&amp;quot; 200 8612&amp;quot;,&lt;br /&gt;
  &amp;quot;src_ip&amp;quot;: &amp;quot;62.27.37.94&amp;quot;,&lt;br /&gt;
  &amp;quot;timestamp&amp;quot;: &amp;quot;2025-01-13T07:46:30.000000000Z&amp;quot;,&lt;br /&gt;
  &amp;quot;request&amp;quot;: &amp;quot;GET /index.php?alfa=rnwbm HTTP/1.1&amp;quot;,&lt;br /&gt;
  &amp;quot;user_agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36&amp;quot;,&lt;br /&gt;
  &amp;quot;response&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;response_size&amp;quot;: 8612&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;При копировании нескольких записей как данных &amp;#039;&amp;#039;&amp;#039;JSON&amp;#039;&amp;#039;&amp;#039; они копируются как объект массива &amp;#039;&amp;#039;&amp;#039;JSON&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;</summary>
		<author><name>IKuznetsov</name></author>
	</entry>
</feed>