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


[Не рекомендуется] Создание устаревшего соединителя без кода для 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 к источнику данных.

Затем, если вы развернете соединитель без кода с помощью ARM, вы заключите эти разделы в шаблон ARM для соединителей данных.

Просмотрите другие соединители данных CCP в качестве примеров или скачайте пример шаблона DataConnector_API_CCP_template.json (предварительная версия).

Настройка пользовательского интерфейса соединителя

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

На следующем рисунке показана страница соединителя данных, выделенная цифрами, которые соответствуют заметным областям пользовательского интерфейса:

Снимок экрана: страница примера соединителя данных.

  1. Заголовок. Отображаемый для соединителя данных заголовок.
  2. Логотип. Отображаемый для соединителя данных значок. Это возможно только при развертывании в рамках решения.
  3. Состояние. Указывает, подключен ли соединитель данных к Microsoft Sentinel.
  4. Диаграммы данных. Отображает соответствующие запросы и объем полученных данных за последние две недели.
  5. Вкладка "Инструкции". Содержит раздел "Предварительные требования" со списком минимальных проверок, прежде чем пользователь сможет включить соединитель и инструкции, чтобы управлять включением соединителя пользователем. Этот раздел может содержать текст, кнопки, формы, таблицы и другие общие мини-приложения для упрощения процесса.
  6. Вкладка "Дальнейшие действия". Содержит полезную информацию для понимания того, как найти данные в журналах событий, например примеры запросов.

Ниже приведены 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.

Свойство Массива Тип Описание
title Строка Необязательно. Определяет заголовок для инструкций.
описание Строка Необязательно. Определяет понятное описание инструкций.
innerSteps Массив Необязательно. Определяет массив шагов внутренних инструкций.
instructions Массив инструкций Обязательный. Определяет массив инструкций определенного типа параметра.
bottomBorder Логический Необязательно. Если значение — true, добавляет нижнюю границу в область инструкций на странице соединителя в Microsoft Sentinel
isComingSoon Логический Необязательно. Если значение — true, добавляет заголовок Ожидается в ближайшее время на странице соединителя в 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}

Поддерживаемые значения: workspaceIdworkspaceNameprimaryKeyMicrosoftAwsAccountsubscriptionId
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 Определяет необходимые лицензии как одно из следующих значений: OfficeIRMOfficeATPOffice365AadP1P2McasAatpMdatpMtpIoT

Пример: значение 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})"
}

Проверка пользовательского интерфейса соединителя данных

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

  1. Доступ к тестовой программе можно получить по этому URL-адресу. https://aka.ms/sentineldataconnectorvalidateurl
  2. Перейти в Microsoft Sentinel —> соединители данных
  3. Нажмите кнопку "Импорт" и выберите 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 Список строк Обязательно. Определяет путь к сообщению в ответе JSON.

Выражение пути JSON указывает путь к элементу (или набору элементов) в структуре JSON
successStatusJsonPath Строка Необязательно. Определяет путь к сообщению об успешном выполнении в ответе JSON.
successStatusValue Строка Необязательно. Определяет путь к значению сообщения об успешном выполнении в ответе JSON
isGzipCompressed Логический Необязательно. Определяет, будет ли ответ сжат в gzip-файл.

В следующем коде показан пример значения 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.

  1. Для развертывания соединителя данных можно использовать один из следующих вариантов.

    Совет

    Преимущество развертывания с помощью шаблона Azure Resource Manager (ARM) заключается в том, что некоторые значения встроены в шаблон, и вам не нужно определять их вручную в вызове API.

    Оставьте коллекции конфигурации JSON в шаблон ARM для развертывания соединителя. Чтобы убедиться, что соединитель данных развертывается в правильной рабочей области, обязательно определите рабочую область в шаблоне ARM или выберите рабочую область при развертывании шаблона ARM.

    1. Подготовьте JSON-файл шаблона ARM для соединителя. Например, см. следующие JSON-файлы шаблона ARM:

    2. На портале Azure найдите действие Развернуть настроенный шаблон.

    3. На странице Настраиваемое развертывание выберите Создайте собственный шаблон в редакторе>Загрузить файл. Найдите и выберите локальный шаблон ARM, а затем сохраните изменения.

    4. Выберите подписку и группу ресурсов, а затем введите рабочую область Log Analytics, в которой вы хотите развернуть настраиваемый соединитель.

    5. Выберите Просмотр и создание, чтобы развернуть настраиваемый соединитель в Microsoft Sentinel.

    6. В Microsoft Sentinel перейдите на страницу Соединители данных и найдите новый соединитель. Настройте его так, чтобы он начал прием данных.

    Дополнительные сведения см. в статье о развертывании локального шаблона в документации по Azure Resource Manager.

  2. Настройте соединитель данных так, чтобы подключить источник данных и начать прием данных в Microsoft Sentinel. Вы можете подключиться к источнику данных с помощью портала, как при использовании готовых соединителей данных, или через API.

    При использовании для подключения портала Azure данные пользователя отправляются автоматически. Если вы устанавливаете подключение через API, вам нужно будет отправить соответствующие параметры аутентификации в вызове API.

    На странице соединителя данных Microsoft Sentinel выполните инструкции, предоставленные для подключения к соединителю данных.

    Страница соединителя данных в Microsoft Sentinel управляется конфигурацией ИнструкцийSteps в connectorUiConfig элементе файла конфигурации CCP JSON. Если у вас возникли проблемы с подключением к интерфейсу пользователя, убедитесь, что для типа проверки подлинности выбрана правильная конфигурация.

  3. В 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.

Дополнительные сведения см. в разделе