Использование Logstash для потоковой передачи журналов с преобразованиями конвейера с помощью API на основе DCR
Внимание
Прием данных с помощью подключаемого модуля вывода Logstash с правилами сбора данных (DCR) в настоящее время находится в общедоступной предварительной версии. Эта функция предоставляется без соглашения об уровне обслуживания. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Новый подключаемый модуль вывода Logstash в Microsoft Sentinel поддерживает преобразования конвейеров и расширенную конфигурацию с помощью правил сбора данных (DCR). Подключаемый модуль пересылает любые типы журналов из внешних источников данных в пользовательские или стандартные таблицы в Log Analytics или Microsoft Sentinel.
Из этой статьи вы узнаете, как настроить новый подключаемый модуль Logstash для потоковой передачи данных в Log Analytics или Microsoft Sentinel с помощью dcR с полным контролем над выходной схемой. Узнайте, как развернуть подключаемый модуль.
Примечание.
Предыдущая версия подключаемого модуля Logstash позволяет подключать источники данных через Logstash через API сбора данных.
С помощью нового подключаемого модуля вы можете:
- Управление конфигурацией имен и типов столбцов.
- Выполняйте преобразования во время приема, такие как фильтрация или обогащение.
- Прием пользовательских журналов в настраиваемую таблицу или прием входного потока системного журнала в таблицу Системного журнала Log Analytics.
Прием в стандартные таблицы ограничен только стандартными таблицами, поддерживаемыми для приема пользовательских журналов.
Дополнительные сведения о работе с подсистемой сбора данных Logstash см. в статье Начало работы с Logstash.
Обзор
Архитектура и вводная информация
Подсистема Logstash состоит из трех компонентов:
- Подключаемые модули ввода: настраиваемый сбор данных из различных источников.
- Подключаемые модули фильтрации: обработка и нормализация данных в соответствии с заданными критериями.
- Подключаемые модули вывода: настраиваемая отправка полученных и обработанных данных в разные целевые расположения.
Примечание.
Корпорация Майкрософт поддерживает только описываемый здесь подключаемый модуль вывода Logstash, предоставляемый в Microsoft Sentinel. Текущий подключаемый модуль называется microsoft-sentinel-log-analytics-logstash-output-plugin, версии 1.1.0. Можно открыть запрос в службу поддержки для сообщения о любых проблемах, связанных с подключаемым модулем вывода.
Корпорация Майкрософт не поддерживает сторонние подключаемые модули вывода Logstash для Microsoft Sentinel, а также любые другие подключаемые модули Logstash или компоненты любого типа.
См. предварительные требования для поддержки версии Logstash подключаемого модуля.
Подключаемый модуль вывода Microsoft Sentinel для Logstash отправляет данные в рабочую область Log Analytics в формате JSON с помощью API приема журналов Log Analytics. Данные подается в пользовательские журналы или стандартную таблицу.
- Дополнительные сведения об API приема журналов.
Развертывание подключаемого модуля вывода Microsoft Sentinel в Logstash
Чтобы настроить подключаемый модуль, выполните следующие действия.
- Проверка предварительных требований
- Установка подключаемого модуля
- Создание примера файла
- Создание необходимых ресурсов, связанных с DCR
- Настройка файла конфигурации Logstash
- Перезапуск Logstash
- Просмотр входящих журналов в Microsoft Sentinel
- Мониторинг журналов аудита подключаемого модуля вывода
Необходимые компоненты
Установите поддерживаемую версию Logstash. Подключаемый модуль поддерживает следующие версии Logstash:
- 7.0 - 7.17.13
- 8.0 - 8.9
- 8.11 - 8.13
Примечание.
При использовании Logstash 8 рекомендуется отключить ECS в конвейере.
Убедитесь, что у вас есть рабочая область Log Analytics с правами участника по крайней мере.
Убедитесь, что у вас есть разрешения на создание объектов DCR в рабочей области.
Установка подключаемого модуля
Подключаемый модуль вывода Microsoft Sentinel доступен в коллекции Logstash.
- Следуйте инструкциям в документе Logstash , работающем с подключаемыми модулями , чтобы установить подключаемый модуль microsoft-sentinel-log-analytics-logstash-output-plugin .
- Если система Logstash не имеет доступа к Интернету, следуйте инструкциям в документации Logstash Управление подключаемыми модулями в автономном режиме, чтобы подготовить и использовать пакет автономных подключаемых модулей. (Для этого потребуется создать еще одну систему Logstash с доступом к Интернету.)
Создание примера файла
В этом разделе описано, как создать пример файла в одном из следующих сценариев:
- Создание примера файла для пользовательских журналов
- Создание примера файла для приема журналов в таблице Системного журнала
Создание примера файла для пользовательских журналов
В этом сценарии вы настроите подключаемый модуль входных данных Logstash для отправки событий в Microsoft Sentinel. В этом примере мы используем подключаемый модуль ввода генератора для имитации событий. Вы можете использовать любой другой подключаемый модуль ввода.
В этом примере файл конфигурации Logstash выглядит следующим образом:
input {
generator {
lines => [
"This is a test log message"
]
count => 10
}
}
Скопируйте приведенную ниже конфигурацию выходного подключаемого модуля в файл конфигурации Logstash.
output { microsoft-sentinel-log-analytics-logstash-output-plugin { create_sample_file => true sample_file_path => "<enter the path to the file in which the sample data will be written>" #for example: "c:\\temp" (for windows) or "/tmp" for Linux. } }
Чтобы убедиться, что указанный путь к файлу существует перед созданием примера файла, запустите Logstash.
Подключаемый модуль записывает десять записей в пример файла с именем
sampleFile<epoch seconds>.json
в настроенном пути. Например: c:\temp\sampleFile1648453501.json. Ниже приведен пример файла, который создает подключаемый модуль:[ { "host": "logstashMachine", "sequence": 0, "message": "This is a test log message", "ls_timestamp": "2022-03-28T17:45:01.690Z", "ls_version": "1" }, { "host": "logstashMachine", "sequence": 1 ... ]
Подключаемый модуль автоматически добавляет эти свойства в каждую запись:
ls_timestamp
: время получения записи из входного подключаемого модуляls_version
: версия конвейера Logstash.
Эти поля можно удалить при создании DCR.
Создание примера файла для приема журналов в таблице Системного журнала
В этом сценарии вы настроите подключаемый модуль входных данных Logstash для отправки событий системного журнала в Microsoft Sentinel.
Если у вас еще нет сообщений системного журнала, перенаправленных на компьютер Logstash, можно использовать команду средства ведения журнала для создания сообщений. Например( для Linux):
logger -p local4.warn --rfc3164 --tcp -t CEF: "0|Microsoft|Device|cef-test|example|data|1|here is some more data for the example" -P 514 -d -n 127.0.0.1 Here is an example for the Logstash input plugin: input { syslog { port => 514 } }
Скопируйте приведенную ниже конфигурацию выходного подключаемого модуля в файл конфигурации Logstash.
output { microsoft-sentinel-log-analytics-logstash-output-plugin { create_sample_file => true sample_file_path => "<enter the path to the file in which the sample data will be written>" #for example: "c:\\temp" (for windows) or "/tmp" for Linux. } }
Чтобы убедиться, что путь к файлу существует перед созданием примера файла, запустите Logstash.
Подключаемый модуль записывает десять записей в пример файла с именем
sampleFile<epoch seconds>.json
в настроенном пути. Например: c:\temp\sampleFile1648453501.json. Ниже приведен пример файла, который создает подключаемый модуль:[ { "logsource": "logstashMachine", "facility": 20, "severity_label": "Warning", "severity": 4, "timestamp": "Apr 7 08:26:04", "program": "CEF:", "host": "127.0.0.1", "facility_label": "local4", "priority": 164, "message": 0|Microsoft|Device|cef-test|example|data|1|here is some more data for the example", "ls_timestamp": "2022-04-07T08:26:04.000Z", "ls_version": "1" } ]
Подключаемый модуль автоматически добавляет эти свойства в каждую запись:
ls_timestamp
: время получения записи из входного подключаемого модуляls_version
: версия конвейера Logstash.
Эти поля можно удалить при создании DCR.
Создание необходимых ресурсов DCR
Чтобы настроить подключаемый модуль Logstash на основе DCR на основе Microsoft Sentinel, сначала необходимо создать ресурсы, связанные с DCR.
В этом разделе описано, как создать ресурсы для DCR в одном из следующих сценариев:
- Создание ресурсов DCR для приема в настраиваемую таблицу
- Создание ресурсов DCR для приема в стандартную таблицу
Создание ресурсов DCR для приема в настраиваемую таблицу
Чтобы принять данные в настраиваемую таблицу, выполните следующие действия (на основе руководства по отправке данных в журналы Azure Monitor с помощью REST API (портал Azure)):
Ознакомьтесь с предварительными требованиями.
Добавьте настраиваемую таблицу журналов.
Анализ и фильтрация примеров данных с помощью примера файла, созданного в предыдущем разделе.
-
Пропустите шаг отправки примеров данных.
Если вы столкнулись с проблемами, ознакомьтесь с инструкциями по устранению неполадок.
Создание ресурсов DCR для приема в стандартную таблицу
Для приема данных в стандартную таблицу, например Syslog или CommonSecurityLog, вы используете процесс, основанный на руководстве по отправке данных в журналы Azure Monitor с помощью учебника REST API (шаблоны Resource Manager). В этом руководстве объясняется, как прием данных в настраиваемую таблицу, можно легко настроить процесс приема данных в стандартную таблицу. Приведенные ниже действия указывают на соответствующие изменения в шагах.
Ознакомьтесь с предварительными требованиями.
Сбор сведений о рабочей области.
-
Пропустите таблицу "Создание таблицы" на шаге рабочей области Log Analytics. Этот шаг не имеет значения при приеме данных в стандартную таблицу, так как таблица уже определена в Log Analytics.
Создайте DCR. На этом шаге:
- Укажите пример файла, созданного в предыдущем разделе.
- Используйте пример файла, созданного
streamDeclarations
для определения свойства. Каждый из полей в примере файла должен иметь соответствующий столбец с одинаковым именем и соответствующим типом (см . пример ниже). - Настройте значение
outputStream
свойства с именем стандартной таблицы вместо настраиваемой таблицы. В отличие от пользовательских таблиц, стандартные имена таблиц не имеют_CL
суффикса. - Префикс имени таблицы должен быть
Microsoft-
вместоCustom-
. В нашем примереoutputStream
значение свойства —Microsoft-Syslog
.
-
Пропустите шаг отправки примеров данных.
Если вы столкнулись с проблемами, ознакомьтесь с инструкциями по устранению неполадок.
Пример: DCR, который отправляет данные в таблицу Системного журнала
Обратите внимание на следующие условия.
- Имена
streamDeclarations
и типы столбцов должны совпадать с примерами полей файлов, но их не нужно указывать. Например, в приведенном нижеPRI
type
списке DCR поля иls_version
поля опущены из столбцаstreamDeclarations
. - Свойство
dataflows
преобразует входные данные в формат таблицы Syslog и задает значениеoutputStream
Microsoft-Syslog
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dataCollectionRuleName": {
"type": "String",
"metadata": {
"description": "Specifies the name of the Data Collection Rule to create."
}
},
"location": {
"defaultValue": "westus2",
"allowedValues": [
"westus2",
"eastus2",
"eastus2euap"
],
"type": "String",
"metadata": {
"description": "Specifies the location in which to create the Data Collection Rule."
}
},
"location": {
"defaultValue": "[resourceGroup().location]",
"type": "String",
"metadata": {
"description": "Specifies the location in which to create the Data Collection Rule."
}
},
"workspaceResourceId": {
"type": "String",
"metadata": {
"description": "Specifies the Azure resource ID of the Log Analytics workspace to use."
}
}
},
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRules",
"apiVersion": "2021-09-01-preview",
"name": "[parameters('dataCollectionRuleName')]",
"location": "[parameters('location')]",
"properties": {
"streamDeclarations": {
"Custom-SyslogStream": {
"columns": [
{
"name": "ls_timestamp",
"type": "datetime"
}, {
"name": "timestamp",
"type": "datetime"
},
{
"name": "message",
"type": "string"
},
{
"name": "facility_label",
"type": "string"
},
{
"name": "severity_label",
"type": "string"
},
{
"name": "host",
"type": "string"
},
{
"name": "logsource",
"type": "string"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "[parameters('workspaceResourceId')]",
"name": "clv2ws1"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-SyslogStream"
],
"destinations": [
"clv2ws1"
],
"transformKql": "source | project TimeGenerated = ls_timestamp, EventTime = todatetime(timestamp), Computer = logsource, HostName = logsource, HostIP = host, SyslogMessage = message, Facility = facility_label, SeverityLevel = severity_label",
"outputStream": "Microsoft-Syslog"
}
]
}
}
],
"outputs": {
"dataCollectionRuleId": {
"type": "String",
"value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
}
}
}
Настройка файла конфигурации Logstash
Чтобы настроить файл конфигурации Logstash для приема журналов в настраиваемую таблицу, получите следующие значения:
Поле | Получение |
---|---|
client_app_Id |
Значение Application (client) ID , создаваемое на шаге 3 при создании ресурсов DCR, в соответствии с учебником, используемым в этом разделе. |
client_app_secret |
Значение Application (client) ID , создаваемое на шаге 5 при создании ресурсов DCR, в соответствии с руководством, используемым в этом разделе. |
tenant_id |
Идентификатор клиента вашей подписки. Идентификатор клиента можно найти в разделе "Общие сведения о домашней > > > учетной записи Майкрософт". |
data_collection_endpoint |
Значение универсального logsIngestion кода ресурса (URI) на шаге 3 при создании ресурсов DCR в соответствии с руководством, используемым в этом разделе. |
dcr_immutable_id |
Значение DCR на шаге 6 при создании ресурсов DCR immutableId в соответствии с руководством, использованным в этом разделе. |
dcr_stream_name |
Для пользовательских таблиц, как описано на шаге 6 при создании ресурсов DCR, перейдите в представление JSON DCR и скопируйте dataFlows >streams свойство. См. приведенный dcr_stream_name ниже пример .Для стандартных таблиц значение равно Custom-SyslogStream . |
После получения необходимых значений:
- Замените выходной раздел файла конфигурации Logstash, созданного на предыдущем шаге, приведенным ниже.
- Замените строки заполнителя в приведенном ниже примере значениями, которые вы извлекли.
- Убедитесь, что атрибут
false
изменен наcreate_sample_file
.
Дополнительные настройки
Поле | Description | Default value |
---|---|---|
azure_cloud |
Используется для указания имени используемого облака Azure, доступные значения: AzureCloud , AzureChinaCloud и AzureUSGovernment . |
AzureCloud |
key_names |
Массив строк. Укажите это поле, если вы хотите отправить подмножество столбцов в Log Analytics. | Нет (поле пусто) |
plugin_flush_interval |
Определяет максимальное различие времени (в секундах) между отправкой двух сообщений в Log Analytics. | 5 |
retransmission_time |
Задает время в секундах для повторной передачи сообщений после неудачной отправки. | 10 |
compress_data |
Если это поле, True данные события сжимаются перед использованием API. Рекомендуется использовать для конвейеров высокой пропускной способности. |
False |
proxy |
Укажите URL-адрес прокси-сервера, используемый для всех вызовов API. | Нет (поле пусто) |
proxy_aad |
Укажите URL-адрес прокси-сервера, используемый для вызовов API к идентификатору Microsoft Entra. | То же значение, что и "proxy" (поле пустое) |
proxy_endpoint |
Укажите URL-адрес прокси-сервера, используемый для вызовов API к конечной точке сбора данных. | То же значение, что и "proxy" (поле пустое) |
Пример. Раздел конфигурации подключаемого модуля вывода
output {
microsoft-sentinel-log-analytics-logstash-output-plugin {
client_app_Id => "<enter your client_app_id value here>"
client_app_secret => "<enter your client_app_secret value here>"
tenant_id => "<enter your tenant id here> "
data_collection_endpoint => "<enter your logsIngestion URI here> "
dcr_immutable_id => "<enter your DCR immutableId here> "
dcr_stream_name => "<enter your stream name here> "
create_sample_file=> false
sample_file_path => "c:\\temp"
proxy => "http://proxy.example.com"
}
}
Чтобы задать другие параметры для подключаемого модуля вывода Microsoft Sentinel Logstash, ознакомьтесь с файлом readme выходного подключаемого модуля.
Примечание.
По соображениям безопасности рекомендуется неявно указывать атрибуты client_app_Id
, data_collection_endpoint
client_app_secret
tenant_id
и dcr_immutable_id
атрибуты в файле конфигурации Logstash. Рекомендуется хранить эти конфиденциальные сведения в Хранилище ключей Logstash.
Перезапуск Logstash
Перезапустите Logstash с обновленной конфигурацией подключаемого модуля вывода и убедитесь, что данные будут приема в нужную таблицу в соответствии с конфигурацией DCR.
Просмотр входящих журналов в Microsoft Sentinel
Убедитесь, что сообщения отправляются в подключаемый модуль вывода.
В меню навигации Microsoft Sentinel щелкните Журналы. В разделе Таблицы разверните категорию Пользовательские журналы. Найдите и выберите имя указанной таблицы (с суффиксом
_CL
) в конфигурации.Чтобы просмотреть записи в таблице, запросите таблицу, используя имя таблицы как схему.
Мониторинг журналов аудита подключаемого модуля вывода
Чтобы отслеживать подключение и активность подключаемого модуля вывода Microsoft Sentinel, включите соответствующий файл журнала Logstash. См. документацию Структура каталога Logstash для определения расположения файла журнала.
Если в этом файле журнала нет никаких данных, сгенерируйте и отправьте несколько событий локально (через подключаемые модули ввода и фильтрации), чтобы убедиться, что подключаемый модуль вывода получает данные. Microsoft Sentinel предоставляет поддержку только для проблем, связанных с подключаемым модулем вывода.
Безопасность сети
Определите параметры сети и включите сетевую изоляцию для подключаемого модуля вывода Microsoft Sentinel Logstash.
Теги службы виртуальной сети
Подключаемый модуль вывода Microsoft Sentinel поддерживает теги службы виртуальной сети Azure. Требуются теги AzureMonitor и AzureActiveDirectory .
Теги службы Azure виртуальная сеть можно использовать для определения элементов управления доступом к сети в группах безопасности сети, Брандмауэр Azure и определяемых пользователем маршрутах. Теги службы можно использовать вместо определенных IP-адресов при создании правил безопасности и маршрутов. В сценариях, в которых невозможно использовать теги службы виртуальная сеть Azure, требования брандмауэра приведены ниже.
Требования к брандмауэру
В следующей таблице перечислены требования к брандмауэру для сценариев, в которых теги службы виртуальной сети Azure нельзя использовать.
Облако | Конечная точка | Характер использования | Порт | Направление | Обход проверки HTTPS |
---|---|---|---|---|---|
Azure для коммерческих организаций | https://login.microsoftonline.com | Сервер авторизации (платформа удостоверений Майкрософт) | Порт 443 | Исходящий | Да |
Azure для коммерческих организаций | https://<data collection endpoint name>.<Azure cloud region>.ingest.monitor.azure.com |
Конечная точка сбора данных | Порт 443 | Исходящий | Да |
Azure для государственных организаций | https://login.microsoftonline.us | Сервер авторизации (платформа удостоверений Майкрософт) | Порт 443 | Исходящий | Да |
Azure для государственных организаций | Замените ".com" выше на ".us" | Конечная точка сбора данных | Порт 443 | Исходящий | Да |
Microsoft Azure под управлением 21Vianet | https://login.chinacloudapi.cn | Сервер авторизации (платформа удостоверений Майкрософт) | Порт 443 | Исходящий | Да |
Microsoft Azure под управлением 21Vianet | Замените ".com" выше на ".cn" | Конечная точка сбора данных | Порт 443 | Исходящий | Да |
Ограничения
- Прием в стандартные таблицы ограничен только стандартными таблицами, поддерживаемыми для приема пользовательских журналов.
- Столбцы входного потока в свойстве
streamDeclarations
должны начинаться с буквы. Если вы запускаете столбец с другими символами (например@
, или_
), операция завершается ошибкой. - Поле
TimeGenerated
datetime является обязательным. Это поле необходимо включить в преобразование KQL. - Дополнительные сведения о возможных проблемах см . в разделе "Устранение неполадок" в руководстве.
Следующие шаги
Из этой статьи вы узнали, как использовать Logstash для подключения внешних источников данных к Microsoft Sentinel. Ознакомьтесь с дополнительными сведениями о Microsoft Sentinel в следующих статьях:
- Узнайте, как отслеживать свои данные и потенциальные угрозы.
- Узнайте, как приступить к обнаружению угроз с помощью Microsoft Sentinel.