[Не рекомендуется] Создание устаревшего соединителя без кода для Microsoft Sentinel
Внимание
Сбор журналов из многих устройств и устройств теперь поддерживается общим форматом событий (CEF) через AMA, Syslog через AMA или пользовательские журналы через соединитель данных AMA в Microsoft Sentinel. Дополнительные сведения см. в статье Поиск нужных соединителей данных Microsoft Sentinel.
Внимание
Существует более новая версия платформы соединителя без кода (CCP). Дополнительные сведения о новом CCP см. в статье "Создание бессерверного соединителя (предварительная версия)".
Обратитесь к этому документу, если необходимо поддерживать или обновлять соединитель данных на основе этой старой устаревшей версии CCP.
CCP предоставляет партнерам, расширенным пользователям и разработчикам возможность создавать пользовательские соединители, подключать их и прием данных к Microsoft Sentinel. Созданные с помощью CCP соединители можно развернуть с помощью API, шаблона ARM или решения в центре содержимого Microsoft Sentinel.
Соединители, созданные с помощью CCP, являются решениями SaaS и не требуют установки служб, а также включают мониторинг работоспособности и полную поддержку Microsoft Sentinel.
Создайте соединитель данных, определив конфигурации JSON, с параметрами того, как страница соединителя данных в Microsoft Sentinel выглядит вместе с параметрами опроса, определяющими, как функции подключения.
Внимание
Эта версия платформы соединителей без кода (CCP) находится в предварительной версии, но также считается устаревшей. Предварительная версия дополнительных условий использования Azure включают дополнительные юридические условия, применимые к функциям Azure, которые находятся в бета-версии, предварительной версии или еще не общедоступны по другим причинам.
Чтобы создать соединитель CCP и подключиться к источнику данных из Microsoft Sentinel, выполните следующие действия.
- Настройте пользовательский интерфейс соединителя
- Настройте параметры опроса соединителя
- Разверните соединитель в рабочей области Microsoft Sentinel
- Подключите Microsoft Sentinel к источнику данных и начните прием данных
В этой статье описывается синтаксис, используемый в конфигурациях и процедурах CCP JSON для развертывания соединителя с помощью API, шаблона ARM или решения Microsoft Sentinel.
Необходимые компоненты
Прежде чем создавать соединитель, рекомендуется понять, как работает источник данных и как именно требуется подключиться к Microsoft Sentinel.
Например, необходимо знать типы проверки подлинности, разбиения на страницы и конечные точки API, необходимые для успешных подключений.
Создание JSON-файла конфигурации соединителя
Настраиваемый соединитель CCP содержит два основных раздела JSON, необходимых для развертывания. Заполните эти области, чтобы определить, как соединитель отображается в портал Azure и как он подключает Microsoft Sentinel к источнику данных.
connectorUiConfig
. Определяет визуальные элементы и текст, отображаемые на странице соединителя данных в Microsoft Sentinel. Дополнительные сведения см. в разделе Настройка пользовательского интерфейса соединителя.pollingConfig
. Определяет, как Microsoft Sentinel собирает данные из источника данных. Дополнительные сведения см. в разделе Настройка параметров опроса соединителя.
Затем, если вы развернете соединитель без кода с помощью ARM, вы заключите эти разделы в шаблон ARM для соединителей данных.
Просмотрите другие соединители данных CCP в качестве примеров или скачайте пример шаблона DataConnector_API_CCP_template.json (предварительная версия).
Настройка пользовательского интерфейса соединителя
В этом разделе описываются параметры конфигурации, доступные для настройки пользовательского интерфейса страницы соединителя данных.
На следующем рисунке показана страница соединителя данных, выделенная цифрами, которые соответствуют заметным областям пользовательского интерфейса:
- Заголовок. Отображаемый для соединителя данных заголовок.
- Логотип. Отображаемый для соединителя данных значок. Это возможно только при развертывании в рамках решения.
- Состояние. Указывает, подключен ли соединитель данных к Microsoft Sentinel.
- Диаграммы данных. Отображает соответствующие запросы и объем полученных данных за последние две недели.
- Вкладка "Инструкции". Содержит раздел "Предварительные требования" со списком минимальных проверок, прежде чем пользователь сможет включить соединитель и инструкции, чтобы управлять включением соединителя пользователем. Этот раздел может содержать текст, кнопки, формы, таблицы и другие общие мини-приложения для упрощения процесса.
- Вкладка "Дальнейшие действия". Содержит полезную информацию для понимания того, как найти данные в журналах событий, например примеры запросов.
Ниже приведены connectorUiConfig
разделы и синтаксис, необходимые для настройки пользовательского интерфейса:
Имя свойства | Type | Описание |
---|---|---|
availability | { "status": 1, "isPreview": Булев} |
состояние: 1 Указывает, что соединитель общедоступен клиентам. isPreview Указывает, следует ли включать суффикс (предварительная версия) в имя соединителя. |
connectivityCriteria | { "type": SentinelKindsV2, "value": APIPolling } |
Объект, определяющий, как проверить, правильно ли определен соединитель. Используйте указанные здесь значения. |
dataTypes | dataTypes[] | Список всех типов данных для вашего соединителя и запрос для получения сведений о времени последнего события для каждого типа данных. |
descriptionMarkdown | Строка | Описание соединителя с возможностью добавления языка Markdown для его улучшения. |
graphQueries | graphQueries[] | Запросы, представляющие прием данных за последние две недели на панели Диаграммы данных. Укажите либо один запрос для всех типов данных соединителя данных, либо отдельный запрос для каждого типа данных. |
graphQueriesTableName | Строка | Определяет имя таблицы Log Analytics, из которой извлекаются данные для запросов. В качестве имени таблицы можно использовать любую строку, но она должна заканчиваться на _CL . Например: TableName_CL |
instructionsSteps | инструкцияSteps[] | Массив частей мини-приложения, объясняющих, как установить соединитель, отображаемый на вкладке Инструкции. |
metadata | metadata | Метаданные, отображаемые в описании соединителя. |
разрешения | разрешения[] | Сведения, отображаемые в разделе "Предварительные требования " пользовательского интерфейса, в котором перечислены разрешения, необходимые для включения или отключения соединителя. |
publisher | Строка | Это текст, показанный в разделе "Поставщик ". |
sampleQueries | sampleQueries[] | Примеры запросов, позволяющие клиенту понять, как найти данные в журнале событий, которые будут отображаться на вкладке Дальнейшие действия. |
title | Строка | Заголовок, отображаемый на странице соединителя данных. |
Объединение всех этих частей сложно. Используйте средство проверки взаимодействия со страницей соединителя для проверки компонентов, которые вы собрали.
dataTypes
Значение массива | Тип | Description |
---|---|---|
name | Строка | Понятное описание,lastDataReceivedQuery включая поддержку переменной. Пример: {{graphQueriesTableName}} |
lastDataReceivedQuery | Строка | Запрос KQL, возвращающий одну строку и указывающий время последнего получения данных или нет данных, если нет соответствующих данных. Пример: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
graphQueries
Определяет запросы, представляющие прием данных за последние две недели на панели Диаграммы данных.
Укажите либо один запрос для всех типов данных соединителя данных, либо отдельный запрос для каждого типа данных.
Значение массива | Тип | Описание |
---|---|---|
metricName | Строка | Понятное имя графа. Пример: Total data received |
legend | Строка | Строка, которая отображается в условных обозначениях справа от диаграммы, в том числе ссылка на переменную. Пример: {{graphQueriesTableName}} |
baseQuery | Строка | Запрос, который фильтрует соответствующие события, включая ссылку на переменную. Пример: TableName_CL | where ProviderName == "myprovider" или {{graphQueriesTableName}} . |
instructionSteps
В этом разделе приводятся параметры, определяющие набор инструкций, которые отображаются на странице соединителя данных в Microsoft Sentinel.
инструкции
Отображает группу инструкций с различными параметрами и возможностью вложения дополнительных инструкций в группы.
Параметр | Свойство Array | Description |
---|---|---|
APIKey | APIKey | Добавьте заполнители в JSON-файл конфигурации соединителя. |
CopyableLabel | CopyableLabel | Отображает текстовое поле с кнопкой копирования в конце. При выборе кнопки копируется значение поля. |
InfoMessage | InfoMessage | Определяет встроенное информационное сообщение. |
ИнструкцияStepsGroup | ИнструкцияStepsGroup | Отображает группу инструкций, дополнительно развернутую или свертываемую, в отдельном разделе инструкций. |
InstallAgent | InstallAgent | Отображает ссылку на другие части Azure для выполнения различных требований к установке. |
APIKey
Возможно, вы захотите создать шаблон файла конфигурации JSON с параметрами-заполнителями, чтобы повторно использовать его в нескольких соединителях или даже для создания соединителя на основе данных, которых у вас сейчас нет.
Чтобы создать параметры-заполнители, определите дополнительный массив с именем userRequestPlaceHoldersInput
в разделе Инструкции файла конфигурации JSON CCP, используя следующий синтаксис:
"instructions": [
{
"parameters": {
"enable": "true",
"userRequestPlaceHoldersInput": [
{
"displayText": "Organization Name",
"requestObjectKey": "apiEndpoint",
"placeHolderName": "{{placeHolder}}"
}
]
},
"type": "APIKey"
}
]
Параметр userRequestPlaceHoldersInput
включает в себя следующие атрибуты:
Имя. | Тип | Описание |
---|---|---|
DisplayText | Строка | Определяет значение отображения текстового поля, которое выводится пользователю при подключении. |
RequestObjectKey | Строка | Определяет идентификатор в разделе запроса опросаConfig , чтобы заменить заполнитель указанным пользователем значением. Если вы не используете этот атрибут, используйте вместо него атрибут PollingKeyPaths . |
PollingKeyPaths | Строка | Определяет массив объектов JsonPath, который направляет вызов API в любое место шаблона, чтобы заменить значение заполнителя на значение пользователя. Пример: "pollingKeyPaths":["$.request.queryParameters.test1"] Если вы не используете этот атрибут, используйте вместо него атрибут RequestObjectKey . |
PlaceHolderName | Строка | Определяет имя параметра заполнителя в файле шаблона JSON. Это может быть любое уникальное значение, например {{placeHolder}} . |
CopyableLabel
Пример:
Пример кода:
{
"parameters": {
"fillWith": [
"WorkspaceId",
"PrimaryKey"
],
"label": "Here are some values you'll need to proceed.",
"value": "Workspace is {0} and PrimaryKey is {1}"
},
"type": "CopyableLabel"
}
Значение массива | Тип | Описание |
---|---|---|
fillWith | ENUM | Необязательно. Массив переменных среды, используемых для заполнения прототипа. Несколько прототипов разделяются запятыми. Например: {0},{1} Поддерживаемые значения: workspaceId workspaceName primaryKey MicrosoftAwsAccount subscriptionId |
label | Строка | Определяет текст метки над текстовым полем. |
значение | Строка | Определяет значение, которое будет представлено в текстовом поле, поддерживает заполнители. |
rows | Строки | Необязательно. Определяет строки в области пользовательского интерфейса. По умолчанию значение равно 1. |
wideLabel | Логический | Необязательно. Определяет широкую метку для длинных строк. По умолчанию значение равно false . |
InfoMessage
Ниже приведен пример встроенного информационного сообщения:
На следующем изображении, напротив, показано информационное сообщение, не являющееся встроенным:
Значение массива | Тип | Описание |
---|---|---|
text | Строка | Определение текста, отображаемого в окне сообщения. |
visible | Логический | Определяет, отображается ли сообщение. |
inline | Логический | Определяет, как отображается сообщение. - true : (рекомендуется) отображает информационное сообщение, внедренное в инструкции. - false : добавляет синий фон. |
ИнструкцияStepsGroup
Ниже приведен пример расширенной группы инструкций:
Значение массива | Тип | Описание |
---|---|---|
title | Строка | Определяет заголовок для шага инструкции. |
canCollapseAllSections | Логический | Необязательно. Определяет, является ли раздел свертываемым меню "Гармошка". |
noFxPadding | Логический | Необязательно. Если значение — true , уменьшает заполнение высоты для экономии пространства. |
expanded | Логический | Необязательно. Если значение — true , по умолчанию будет отображатся в развернутом состоянии. |
Подробный пример см. в формате JSON конфигурации для соединителя Windows DNS.
InstallAgent
Некоторые типы InstallAgent отображаются как кнопка, другие будут отображаться как ссылка. Ниже приведены примеры обоих:
Значения массива | Тип | Описание |
---|---|---|
linkType | ENUM | Определяет тип ссылки в качестве одного из следующих значений: InstallAgentOnWindowsVirtualMachine InstallAgentOnWindowsNonAzure InstallAgentOnLinuxVirtualMachine InstallAgentOnLinuxNonAzure OpenSyslogSettings OpenCustomLogsSettings OpenWaf OpenAzureFirewall OpenMicrosoftAzureMonitoring OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
policyDefinitionGuid | Строка | Обязательный при использовании linkType OpenPolicyAssignment . Для соединителей на основе политик определяет GUID встроенного определения политики. |
assignMode | ENUM | Необязательно. Определяет режим назначения соединителей на основе политик как одно из следующих значений: Initiative , Policy |
dataCollectionRuleType | ENUM | Необязательно. Для соединителей на основе DCR определяет тип правила сбора данных как один из следующих: SecurityEvent , ForwardEvent |
metadata
В этом разделе содержатся метаданные в пользовательском интерфейсе соединителя данных в области описания .
Значение коллекции | Тип | Описание |
---|---|---|
kind | Строка | Определяет тип создаваемого шаблона ARM. Всегда используйте dataConnector . |
source | Строка | Описывает источник данных, используя следующий синтаксис: { "kind": струна"name": струна} |
author | Строка | Описывает автор соединителя данных, используя следующий синтаксис: { "name": струна} |
support | Строка | Описать поддержку соединителя данных с помощью следующего синтаксиса: { "tier": струна"name": струна"email": струна"link": Строка URL-адреса} |
разрешения
Значение массива | Тип | Описание |
---|---|---|
customs | Строка | Описывает все пользовательские разрешения, необходимые для подключения к данным, в следующем синтаксисе: { "name": string, "description": струна} Пример. Таможенные значения отображаются в разделе "Предварительные требования Microsoft Sentinel" с синим информационным значком. В примере GitHub это коррелирует с ключом личного маркера API GitHub: вам нужен доступ к личному токену GitHub... |
Лицензии | ENUM | Определяет необходимые лицензии как одно из следующих значений: OfficeIRM OfficeATP Office365 AadP1P2 Mcas Aatp Mdatp Mtp IoT Пример: значение licenses отображается в Microsoft Sentinel как "Лицензия". необходимое значение: Azure AD Premium P2 |
resourceProvider | resourceProvider | Описывает необходимые компоненты для вашего ресурса Azure. Пример: значение resourceProvider отображается в разделе предварительных требований Microsoft Sentinel следующим образом: Рабочая область: требуется разрешение на чтение и запись. "Ключи": необходимы разрешения на чтение общих ключей для рабочей области. |
tenant | массив значений ENUM Пример: "tenant": [ "GlobalADmin", "SecurityAdmin" ] |
Определяет необходимые разрешения в виде одного или нескольких следующих значений: "GlobalAdmin" , "SecurityAdmin" , "SecurityReader" , "InformationProtection" Пример: отображает значение клиента в Microsoft Sentinel следующим образом: разрешения клиента : требуется Global Administrator или Security Administrator в клиенте рабочей области |
resourceProvider
Значение вложенного массива | Тип | Описание |
---|---|---|
provider | ENUM | Описывает поставщик ресурсов с одним из следующих значений: - Microsoft.OperationalInsights/workspaces - Microsoft.OperationalInsights/solutions - Microsoft.OperationalInsights/workspaces/datasources - microsoft.aadiam/diagnosticSettings - Microsoft.OperationalInsights/workspaces/sharedKeys - Microsoft.Authorization/policyAssignments |
providerDisplayName | Строка | Элемент списка в разделе "Предварительные требования" , который будет отображать красный флажок "x" или зеленый, когда необходимыеpermissions проверяются на странице соединителя. Пример "Workspace" |
permissionsDisplayText | Строка | Отображение текста для разрешений на чтение, запись или запись , которые должны соответствовать значениям, настроенным в обязательныхpermissions |
requiredPermissions | { "action": Boolean, "delete": Boolean, "read": Boolean, "write": Булев} |
Описывает минимальные разрешения, необходимые для соединителя. |
область | ENUM | Описывает область действия соединителя данных как одно из следующих значений: "Subscription" , "ResourceGroup" , "Workspace" |
sampleQueries
Значение массива | Тип | Описание |
---|---|---|
описание | Строка | Понятное описание примера запроса. Пример: Top 10 vulnerabilities detected |
query | Строка | Пример запроса, используемого для получения данных типа данных. Пример: {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10 |
Настройка других параметров ссылки
Чтобы определить встроенную ссылку с помощью markdown, используйте следующий пример. Здесь ссылка представлена в описании инструкции:
{
"title": "",
"description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)"
}
Чтобы определить ссылку как шаблон ARM, используйте в качестве инструкции следующий пример:
{
"title": "Azure Resource Manager (ARM) template",
"description": "1. Click the **Deploy to Azure** button below.\n\n\t[![Deploy To Azure](https://aka.ms/deploytoazurebutton)]({URL to custom ARM template})"
}
Проверка пользовательского интерфейса соединителя данных
Выполните следующие действия, чтобы отобразить и проверить взаимодействие с пользователем соединителя.
- Доступ к тестовой программе можно получить по этому URL-адресу. https://aka.ms/sentineldataconnectorvalidateurl
- Перейти в Microsoft Sentinel —> соединители данных
- Нажмите кнопку "Импорт" и выберите json-файл, содержащий
connectorUiConfig
только раздел соединителя данных.
Дополнительные сведения об этом средстве проверки см . в руководстве по сборке соединителя в руководстве по сборке GitHub.
Примечание.
Так как параметр инструкции APIKey зависит от соединителя без кода, временно удалите этот раздел для использования средства проверки или завершится сбоем.
Настройка параметров опроса соединителя
В этом разделе описывается конфигурация опроса данных из источника данных для соединителя данных без кода.
В следующем коде показан синтаксис раздела pollingConfig
файла конфигурации CCP.
"pollingConfig": {
"auth": {
},
"request": {
},
"response": {
},
"paging": {
}
}
В разделе pollingConfig
описываются следующие свойства:
Имя. | Тип | Описание |
---|---|---|
auth | Строка | Описывает свойства проверки подлинности для опроса данных. Дополнительные сведения см. в разделе Конфигурация auth. |
auth.authType | Строка | Обязательно. Определяет тип проверки подлинности, вложенный в объект auth , в виде одного из следующих значений: Basic , APIKey , OAuth2 |
request | Вложенный массив JSON | Обязательно. Описывает полезные данные запроса для опроса данных, таких как конечная точка API. Дополнительные сведения см. в разделе Конфигурация request. |
response | Вложенный массив JSON | Обязательно. Описывает объект response и вложенное сообщение, возвращенное из API при опросе данных. Дополнительные сведения см. в разделе Конфигурация response. |
paging | Вложенный массив JSON | Необязательно. Описывает полезные данные разбиения на страницы при опросе данных. Дополнительные сведения см. в разделе Конфигурация paging. |
Дополнительные сведения см. в разделе Пример кода pollingConfig.
Конфигурация auth
Раздел auth
конфигурации pollingConfig в зависимости от типа, определенного в элементе authType, включает следующие параметры:
Базовые параметры authType
Имя. | Тип | Описание |
---|---|---|
Username | Строка | Обязательно. Определяет имя пользователя. |
Пароль | Строка | Обязательно. Определяет пароль пользователя. |
Параметры authType APIKey
Имя. | Тип | Описание |
---|---|---|
APIKeyName | Строка | Необязательно. Определяет имя ключа API в качестве одного из следующих значений: - XAuthToken - Authorization |
IsAPIKeyInPostPayload | Логический | Определяет место определения ключа API. True: ключ API определен в полезных данных запроса POST False: ключ API определен в заголовке |
APIKeyIdentifier | Строка | Необязательно. Определяет имя идентификатора для ключа API. Например, если определением авторизации является "Authorization": "token <secret>" , этот параметр определяется следующим образом: {APIKeyIdentifier: “token”}) |
Параметры authType OAuth2
Платформа соединителя без кода поддерживает предоставление кода авторизации OAuth 2.0.
Тип предоставления кода авторизации используется конфиденциальными и общедоступными клиентами в целях обмена кодом авторизации для маркера доступа.
После того как пользователь вернется к клиенту через URL-адрес перенаправления, приложение получит код авторизации из URL-адреса и будет использовать его для запроса маркера доступа.
Имя. | Тип | Описание |
---|---|---|
FlowName | Строка | Обязательно. Определяет поток OAuth2. Поддерживаемое значение: AuthCode требуется поток авторизации |
AccessToken | Строка | Необязательно. Определяет маркер доступа OAuth2. Актуален, если срок действия маркера доступа не истекает. |
AccessTokenPrepend | Строка | Необязательно. Определяет добавление маркера доступа OAuth2 в начало. По умолчанию — Bearer . |
RefreshToken | Строка | Обязательный для типов проверки подлинности OAuth2. Определяет маркер обновления OAuth2. |
TokenEndpoint | Строка | Обязательный для типов проверки подлинности OAuth2. Определяет конечную точку службы маркеров OAuth2. |
AuthorizationEndpoint | Строка | Необязательно. Определяет конечную точку службы авторизации OAuth2. Используется только во время подключения или при продлении маркера обновления. |
RedirectionEndpoint | Строка | Необязательно. Определяет конечную точку перенаправления во время подключения. |
AccessTokenExpirationDateTimeInUtc | Строка | Необязательно. Определяет дату и время окончания срока действия маркера доступа в формате UTC. Актуален для случаев, когда срок действия маркера доступа не истекает, и поэтому имеет длительное значение даты и времени в формате UTC, или когда маркер доступа имеет продолжительное время истечения срока действия. |
RefreshTokenExpirationDateTimeInUtc | Строка | Обязательный для типов проверки подлинности OAuth2. Определяет дату и время окончания срока действия маркера обновления в формате UTC. |
TokenEndpointHeaders | Словарь<строка, объект> | Необязательно. Определяет заголовки при вызове конечной точки службы маркеров OAuth2. Определите строку в формате с сериализацией dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
AuthorizationEndpointHeaders | Словарь<строка, объект> | Необязательно. Определяет заголовки при вызове конечной точки службы авторизации OAuth2. Используется только во время подключения или при продлении маркера обновления. Определите строку в формате с сериализацией dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
AuthorizationEndpointQueryParameters | Словарь<строка, объект> | Необязательно. Определяет параметры запроса при вызове конечной точки службы авторизации OAuth2. Используется только во время подключения или при продлении маркера обновления. Определите строку в формате с сериализацией dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
TokenEndpointQueryParameters | Словарь<строка, объект> | Необязательно. Определите параметры запроса при вызове конечной точки службы маркеров OAuth2. Определите строку в формате с сериализацией dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
IsTokenEndpointPostPayloadJson | Логический | Необязательный параметр, по умолчанию имеет значение False. Определяет, имеют ли параметры запроса формат JSON и заданы в полезных данных POST запроса. |
IsClientSecretInHeader | Логический | Необязательный параметр, по умолчанию имеет значение False. Определяет, определены ли значения client_id и client_secret в заголовке, как это сделано в схеме обычной проверки подлинности, а не в полезных данных POST. |
RefreshTokenLifetimeinSecAttributeName | Строка | Необязательно. Определяет имя атрибута из ответа конечной точки токена, указывающего время существования маркера обновления в секундах. |
IsJwtBearerFlow | Логический | Необязательный параметр, по умолчанию имеет значение False. Определяет, используется ли JWT. |
JwtHeaderInJson | Словарь<строка, объект> | Необязательно. Определите заголовки JWT в формате JSON. Определите строку в формате с сериализацией dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...} |
JwtClaimsInJson | Словарь<строка, объект> | Необязательно. Определяет утверждения JWT в формате JSON. Определите строку в формате с сериализацией dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...} |
JwtPem | Строка | Необязательно. Определяет секретный ключ в формате PEM Pkcs1: '-----BEGIN RSA PRIVATE KEY-----\r\n{privatekey}\r\n-----END RSA PRIVATE KEY-----\r\n' Обязательно сохраняйте код '\r\n' . |
RequestTimeoutInSeconds | Целое | Необязательно. Определяет время ожидания в секундах при вызове конечной точки службы маркеров. Значение по умолчанию — 180 секунд |
Ниже приведен пример того, как может выглядеть конфигурация OAuth2:
"pollingConfig": {
"auth": {
"authType": "OAuth2",
"authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent",
"redirectionEndpoint": "https://portal.azure.com/TokenAuthorize",
"tokenEndpoint": "https://oauth2.googleapis.com/token",
"authorizationEndpointQueryParameters": {},
"tokenEndpointHeaders": {
"Accept": "application/json"
},
"TokenEndpointQueryParameters": {},
"isClientSecretInHeader": false,
"scope": "https://www.googleapis.com/auth/admin.reports.audit.readonly",
"grantType": "authorization_code",
"contentType": "application/x-www-form-urlencoded",
"FlowName": "AuthCode"
},
Параметры authType сеанса
Имя. | Тип | Описание |
---|---|---|
QueryParameters | Словарь<строка, объект> | Необязательно. Список параметров запроса в сериализованном dictionary<string, string> формате: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
IsPostPayloadJson | Логический | Необязательно. Определяет, представлены ли параметры запроса в формате JSON. |
Заголовки | Словарь<строка, объект> | Необязательно. Определяет заголовок, используемый при вызове конечной точки для получения идентификатора сеанса, а также при вызове API конечной точки. Определите строку в формате с сериализацией dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
SessionTimeoutInMinutes | Строка | Необязательно. Определяет время ожидания сеанса (в минутах). |
SessionIdName | Строка | Необязательно. Определяет имя идентификатора для сеанса. |
SessionLoginRequestUri | Строка | Необязательно. Определяет URI запроса на вход в сеанс. |
Конфигурация request
Раздел request
конфигурации pollingConfig включает в себя следующие параметры:
Имя. | Тип | Описание |
---|---|---|
apiEndpoint | Строка | Обязательно. Определяет конечную точку, из которой извлекаются данные. |
httpMethod | Строка | Обязательно. Определяет метод API: GET или POST |
queryTimeFormat | Строка, UnixTimestamp или UnixTimestampInMills | Обязательно. Определяет формат, используемый для определения времени запроса. Это значение может быть строкой или иметь формат UnixTimestamp или UnixTimestampInMills для указания времени начала и окончания запроса в UnixTimestamp. |
startTimeAttributeName | Строка | Необязательно. Определяет имя атрибута, который указывает время начала запроса. |
endTimeAttributeName | Строка | Необязательно. Определяет имя атрибута, который указывает время завершения запроса. |
queryTimeIntervalAttributeName | Строка | Необязательно. Определяет имя атрибута, который указывает временной интервал запроса. |
queryTimeIntervalDelimiter | Строка | Необязательно. Определяет разделитель интервала времени запроса. |
queryWindowInMin | Целое | Необязательно. Определяет доступное окно запроса (в минутах). Минимальное значение: 5 |
queryParameters | Словарь<строка, объект> | Необязательно. Определяет параметры, передаваемые в запросе, в пути eventsJsonPaths . Определите строку в формате с сериализацией dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
queryParametersTemplate | Строка | Необязательно. Определяет шаблон параметров запроса для использования при передаче параметров запроса в сложных сценариях. Например: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" {_QueryWindowStartTime} и {_QueryWindowEndTime} поддерживаются только в параметрах запроса queryParameters и queryParametersTemplate . {_APIKeyName} и {_APIKey} поддерживаются только в параметре запроса queryParametersTemplate . |
isPostPayloadJson | Логический | Необязательно. Определяет, представлены ли полезные данные POST в формате JSON. |
rateLimitQPS | Двойной | Необязательно. Определяет количество вызовов или запросов, разрешенных за секунду. |
timeoutInSeconds | Целое | Необязательно. Определяет время ожидания запроса (в секундах). |
retryCount | Целое | Необязательно. Определяет количество повторных попыток на выполнение запроса (при необходимости). |
headers | Словарь<строка, объект> | Необязательно. Определяет значение заголовка запроса в формате с сериализацией dictionary<string, object> : {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... } |
Конфигурация response
Раздел response
конфигурации pollingConfig включает в себя следующие параметры:
В следующем коде показан пример значения eventsJsonPaths для сообщения верхнего уровня:
"eventsJsonPaths": [
"$"
]
Конфигурация paging
Раздел paging
конфигурации pollingConfig включает в себя следующие параметры:
Имя. | Тип | Описание |
---|---|---|
pagingType | Строка | Обязательно. Определяет тип разбиения на страницы, используемый в результатах, как одно из следующих значений: None , LinkHeader , NextPageToken , NextPageUrl , Offset |
linkHeaderTokenJsonPath | Строка | Необязательно. Определяет путь JSON к заголовку ссылки в JSON ответа, если объект LinkHeader не определен в заголовке ответа. |
nextPageTokenJsonPath | Строка | Необязательно. Определяет путь к JSON маркера следующей страницы. |
hasNextFlagJsonPath | Строка | Необязательно. Определяет путь к атрибуту флага HasNextPage . |
nextPageTokenResponseHeader | Строка | Необязательно. Определяет имя заголовка маркера следующей страницы в ответе. |
nextPageParaName | Строка | Необязательно. Определяет имя следующей страницы в запросе. |
nextPageRequestHeader | Строка | Необязательно. Определяет имя заголовка следующей страницы в запросе. |
nextPageUrl | Строка | Необязательно. Определяет URL-адрес следующей страницы, если он отличается от URL-адреса исходного запроса. |
nextPageUrlQueryParameters | Строка | Необязательно. Определяет параметры запроса URL-адрес следующей страницы, если он отличается от URL-адреса исходного запроса. Определите строку в формате с сериализацией dictionary<string, object> : {'<attr_name>': <val>, '<attr_name>': <val>... } |
offsetParaName | Строка | Необязательно. Определяет имя параметра смещения. |
pageSizeParaName | Строка | Необязательно. Определяет имя параметра размера страницы. |
PageSize | Integer | Определяет размер для разбиения на страницы. |
Пример кода pollingConfig
В следующем коде показан пример раздела pollingConfig
файла конфигурации CCP:
"pollingConfig": {
"auth": {
"authType": "APIKey",
"APIKeyIdentifier": "token",
"APIKeyName": "Authorization"
},
"request": {
"apiEndpoint": "https://api.github.com/../{{placeHolder1}}/audit-log",
"rateLimitQPS": 50,
"queryWindowInMin": 15,
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"retryCount": 2,
"timeoutInSeconds": 60,
"headers": {
"Accept": "application/json",
"User-Agent": "Scuba"
},
"queryParameters": {
"phrase": "created:{_QueryWindowStartTime}..{_QueryWindowEndTime}"
}
},
"paging": {
"pagingType": "LinkHeader",
"pageSizeParaName": "per_page"
},
"response": {
"eventsJsonPaths": [
"$"
]
}
}
Развертывание соединителя в Microsoft Sentinel и начало приема данных
После создания файла конфигурации JSON, который включает в себя конфигурацию пользовательского интерфейса и опроса, разверните соединитель в рабочей области Microsoft Sentinel.
Для развертывания соединителя данных можно использовать один из следующих вариантов.
Совет
Преимущество развертывания с помощью шаблона Azure Resource Manager (ARM) заключается в том, что некоторые значения встроены в шаблон, и вам не нужно определять их вручную в вызове API.
Оставьте коллекции конфигурации JSON в шаблон ARM для развертывания соединителя. Чтобы убедиться, что соединитель данных развертывается в правильной рабочей области, обязательно определите рабочую область в шаблоне ARM или выберите рабочую область при развертывании шаблона ARM.
Подготовьте JSON-файл шаблона ARM для соединителя. Например, см. следующие JSON-файлы шаблона ARM:
- Соединитель данных в решении Slack
- Соединитель данных в решении GitHub
На портале Azure найдите действие Развернуть настроенный шаблон.
На странице Настраиваемое развертывание выберите Создайте собственный шаблон в редакторе>Загрузить файл. Найдите и выберите локальный шаблон ARM, а затем сохраните изменения.
Выберите подписку и группу ресурсов, а затем введите рабочую область Log Analytics, в которой вы хотите развернуть настраиваемый соединитель.
Выберите Просмотр и создание, чтобы развернуть настраиваемый соединитель в Microsoft Sentinel.
В Microsoft Sentinel перейдите на страницу Соединители данных и найдите новый соединитель. Настройте его так, чтобы он начал прием данных.
Дополнительные сведения см. в статье о развертывании локального шаблона в документации по Azure Resource Manager.
Настройте соединитель данных так, чтобы подключить источник данных и начать прием данных в Microsoft Sentinel. Вы можете подключиться к источнику данных с помощью портала, как при использовании готовых соединителей данных, или через API.
При использовании для подключения портала Azure данные пользователя отправляются автоматически. Если вы устанавливаете подключение через API, вам нужно будет отправить соответствующие параметры аутентификации в вызове API.
На странице соединителя данных Microsoft Sentinel выполните инструкции, предоставленные для подключения к соединителю данных.
Страница соединителя данных в Microsoft Sentinel управляется конфигурацией ИнструкцийSteps в
connectorUiConfig
элементе файла конфигурации CCP JSON. Если у вас возникли проблемы с подключением к интерфейсу пользователя, убедитесь, что для типа проверки подлинности выбрана правильная конфигурация.В Microsoft Sentinel перейдите на страницу Журналы и убедитесь, что вы видите журналы из источника данных, который передает данные в рабочую область.
Если данные не поступают в Microsoft Sentinel, ознакомьтесь с документацией по источнику данных и ресурсами по устранению неполадок, проверьте сведения о конфигурации и возможность подключения. Дополнительные сведения см. в статье Мониторинг работоспособности соединителей данных.
Отключение соединителя
Если данные соединителя вам больше не нужны, отключите соединитель, чтобы остановить поток данных.
Используйте один из следующих методов:
Портал Azure: На странице соединителя данных Microsoft Sentinel выберите Отключение.
API: Используйте API DISCONNECT, чтобы отправить вызов PUT с пустым текстом на следующий URL-адрес:
https://management.azure.com /subscriptions/{{SUB}}/resourceGroups/{{RG}}/providers/Microsoft.OperationalInsights/workspaces/{{WS-NAME}}/providers/Microsoft.SecurityInsights/dataConnectors/{{Connector_Id}}/disconnect?api-version=2021-03-01-preview
Следующие шаги
Поделитесь своим новым соединителем данных без кода с сообществом Microsoft Sentinel, если вы еще не сделали этого! Создайте решение для соединителя данных и предоставьте к нему общий доступ в разделе Marketplace, посвященном Microsoft Sentinel.
Дополнительные сведения см. в разделе