Поделиться через


Использование 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 состоит из трех компонентов:

  • Подключаемые модули ввода: настраиваемый сбор данных из различных источников.
  • Подключаемые модули фильтрации: обработка и нормализация данных в соответствии с заданными критериями.
  • Подключаемые модули вывода: настраиваемая отправка полученных и обработанных данных в разные целевые расположения.

Примечание.

  • Корпорация Майкрософт поддерживает только описываемый здесь подключаемый модуль вывода 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

Чтобы настроить подключаемый модуль, выполните следующие действия.

  1. Проверка предварительных требований
  2. Установка подключаемого модуля
  3. Создание примера файла
  4. Создание необходимых ресурсов, связанных с DCR
  5. Настройка файла конфигурации Logstash
  6. Перезапуск Logstash
  7. Просмотр входящих журналов в Microsoft Sentinel
  8. Мониторинг журналов аудита подключаемого модуля вывода

Необходимые компоненты

  • Установите поддерживаемую версию 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. В этом примере мы используем подключаемый модуль ввода генератора для имитации событий. Вы можете использовать любой другой подключаемый модуль ввода.

В этом примере файл конфигурации Logstash выглядит следующим образом:

input {
      generator {
            lines => [
                 "This is a test log message"
            ]
           count => 10
      }
}
  1. Скопируйте приведенную ниже конфигурацию выходного подключаемого модуля в файл конфигурации 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. 
        }
    }
    
  2. Чтобы убедиться, что указанный путь к файлу существует перед созданием примера файла, запустите 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.

  1. Если у вас еще нет сообщений системного журнала, перенаправленных на компьютер 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
        }
    }
    
  2. Скопируйте приведенную ниже конфигурацию выходного подключаемого модуля в файл конфигурации 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. 
        }
    }
    
  3. Чтобы убедиться, что путь к файлу существует перед созданием примера файла, запустите 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 для приема в настраиваемую таблицу

Чтобы принять данные в настраиваемую таблицу, выполните следующие действия (на основе руководства по отправке данных в журналы Azure Monitor с помощью REST API (портал Azure)):

  1. Ознакомьтесь с предварительными требованиями.

  2. Настройка приложения.

  3. Добавьте настраиваемую таблицу журналов.

  4. Анализ и фильтрация примеров данных с помощью примера файла, созданного в предыдущем разделе.

  5. Сбор сведений из DCR.

  6. Назначение разрешений DCR.

    Пропустите шаг отправки примеров данных.

Если вы столкнулись с проблемами, ознакомьтесь с инструкциями по устранению неполадок.

Создание ресурсов DCR для приема в стандартную таблицу

Для приема данных в стандартную таблицу, например Syslog или CommonSecurityLog, вы используете процесс, основанный на руководстве по отправке данных в журналы Azure Monitor с помощью учебника REST API (шаблоны Resource Manager). В этом руководстве объясняется, как прием данных в настраиваемую таблицу, можно легко настроить процесс приема данных в стандартную таблицу. Приведенные ниже действия указывают на соответствующие изменения в шагах.

  1. Ознакомьтесь с предварительными требованиями.

  2. Сбор сведений о рабочей области.

  3. Настройка приложения.

    Пропустите таблицу "Создание таблицы" на шаге рабочей области Log Analytics. Этот шаг не имеет значения при приеме данных в стандартную таблицу, так как таблица уже определена в Log Analytics.

  4. Создайте DCR. На этом шаге:

    • Укажите пример файла, созданного в предыдущем разделе.
    • Используйте пример файла, созданного streamDeclarations для определения свойства. Каждый из полей в примере файла должен иметь соответствующий столбец с одинаковым именем и соответствующим типом (см . пример ниже).
    • Настройте значение outputStream свойства с именем стандартной таблицы вместо настраиваемой таблицы. В отличие от пользовательских таблиц, стандартные имена таблиц не имеют _CL суффикса.
    • Префикс имени таблицы должен быть Microsoft- вместо Custom-. В нашем примере outputStream значение свойства — Microsoft-Syslog.
  5. Назначение разрешений DCR.

    Пропустите шаг отправки примеров данных.

Если вы столкнулись с проблемами, ознакомьтесь с инструкциями по устранению неполадок.

Пример: DCR, который отправляет данные в таблицу Системного журнала

Обратите внимание на следующие условия.

  • Имена streamDeclarations и типы столбцов должны совпадать с примерами полей файлов, но их не нужно указывать. Например, в приведенном ниже PRItype списке 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.

После получения необходимых значений:

  1. Замените выходной раздел файла конфигурации Logstash, созданного на предыдущем шаге, приведенным ниже.
  2. Замените строки заполнителя в приведенном ниже примере значениями, которые вы извлекли.
  3. Убедитесь, что атрибут 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_endpointclient_app_secrettenant_idи dcr_immutable_id атрибуты в файле конфигурации Logstash. Рекомендуется хранить эти конфиденциальные сведения в Хранилище ключей Logstash.

Перезапуск Logstash

Перезапустите Logstash с обновленной конфигурацией подключаемого модуля вывода и убедитесь, что данные будут приема в нужную таблицу в соответствии с конфигурацией DCR.

Просмотр входящих журналов в Microsoft Sentinel

  1. Убедитесь, что сообщения отправляются в подключаемый модуль вывода.

  2. В меню навигации Microsoft Sentinel щелкните Журналы. В разделе Таблицы разверните категорию Пользовательские журналы. Найдите и выберите имя указанной таблицы (с суффиксом _CL) в конфигурации.

    Снимок экрана: пользовательские журналы в Logstash.

  3. Чтобы просмотреть записи в таблице, запросите таблицу, используя имя таблицы как схему.

    Снимок экрана: запрос пользовательских журналов в Logstash.

Мониторинг журналов аудита подключаемого модуля вывода

Чтобы отслеживать подключение и активность подключаемого модуля вывода 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 в следующих статьях: