[Не рекомендуется] Создание устаревшего соединителя без кода для 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
и синтаксис, необходимые для настройки пользовательского интерфейса:
Название свойства | Тип | Описание |
---|---|---|
доступность | { "status": 1, "isPreview": Boolean} |
состояние : 1 Указывает, что соединитель общедоступен клиентам. isPreview Указывает, следует ли добавлять суффикс (предварительная версия) к имени соединителя. |
критерии подключения | { "type": SentinelKindsV2, "value": APIPolling } |
Объект, определяющий, как проверить правильность определения соединителя. Используйте указанные здесь значения. |
dataTypes | dataTypes[] | Список всех типов данных для соединителя и запрос для получения времени последнего события для каждого типа данных. |
descriptionMarkdown | Струна | Описание соединителя с возможностью добавления языка Markdown для его улучшения. |
graphQueries | graphQueries[] | Запросы, которые отображают прием данных за последние две недели в области диаграмм данных . Укажите один запрос для всех типов данных соединителя данных или другой запрос для каждого типа данных. |
graphQueriesTableName | Струна | Определяет имя таблицы Log Analytics, из которой извлекается данные для запросов. Имя таблицы может быть любой строкой, но должно заканчиваться _CL . Например: TableName_CL |
инструкцииЭтапы | шагиИнструкции[] | Массив частей виджетов, объясняет, как установить соединитель, отображаемый на вкладке Инструкции. |
метаданные | метаданные | Метаданные, отображаемые в описании соединителя. |
разрешения | разрешения[] | Сведения, отображаемые в разделе предварительных требований пользовательского интерфейса, в котором перечислены разрешения, необходимые для включения или отключения соединителя. |
publisher | Струна | Это текст, показанный в разделе поставщика. |
sampleQueries | sampleQueries[] | Примеры запросов для клиента, чтобы понять, как найти данные в журнале событий, отображаемых на вкладке Дальнейшие действия. |
заголовок | Струна | Заголовок, отображаемый на странице соединителя данных. |
Объединение всех этих частей сложно. Используйте средство проверки пользовательского опыта страницы соединителя для тестирования компонентов, которые вы собрали.
типы данных
Значение массива | Тип | Описание |
---|---|---|
name | Струна | Понятное описаниеlastDataReceivedQuery , включая поддержку переменной. Пример: {{graphQueriesTableName}} |
последнийЗапросПолученияДанных | Струна | Запрос KQL, возвращающий одну строку и указывающий время последнего получения данных или нет данных, если нет соответствующих данных. Пример: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
graphQueries
Определяет запрос, который отображает прием данных за последние две недели на панели диаграмм данных.
Укажите один запрос для всех типов данных соединителя данных или другой запрос для каждого типа данных.
Значение массива | Тип | Описание |
---|---|---|
название метрики | Струна | Значимое имя для графа. Пример: Total data received |
легенда | Струна | Строка, которая отображается в условных обозначениях справа от диаграммы, включая ссылку на переменную. Пример: {{graphQueriesTableName}} |
baseQuery | Струна | Запрос, фильтрующий соответствующие события, включая ссылку на переменную. Пример: TableName_CL | where ProviderName == "myprovider" или {{graphQueriesTableName}} . |
шаги инструкций
В этом разделе приведены параметры, определяющие набор инструкций, отображаемых на странице соединителя данных в Microsoft Sentinel.
инструкции
Отображает группу инструкций с различными параметрами и возможностью вложения дополнительных инструкций в группы.
Параметр | Свойство Array | Описание |
---|---|---|
APIKey | APIKey | Добавьте заполнители в JSON-файл конфигурации соединителя. |
CopyableLabel | КопируемаяМетка | Отображает текстовое поле с кнопкой копирования в конце. При выборе кнопки копируется значение поля. |
ИнформационноеСообщение | ИнформационноеСообщение | Определяет встроенное информационное сообщение. |
ГруппаЭтаповИнструкции | ГруппаЭтаповИнструкции | Отображает группу инструкций, дополнительно развернутую или свертываемую, в отдельном разделе инструкций. |
УстановитьАгент | InstallAgent | Отображает ссылку на другие части Azure для выполнения различных требований к установке. |
APIKey
Вы можете создать шаблон файла конфигурации JSON с параметрами-заполнителями, чтобы повторно использовать его в нескольких соединителях или даже для создания соединителя с данными, которых у вас пока нет.
Чтобы создать параметры заполнителя, определите дополнительный массив с именем userRequestPlaceHoldersInput
в разделе Инструкции вашего файла конфигурации CCP JSON, используя следующий синтаксис:
"instructions": [
{
"parameters": {
"enable": "true",
"userRequestPlaceHoldersInput": [
{
"displayText": "Organization Name",
"requestObjectKey": "apiEndpoint",
"placeHolderName": "{{placeHolder}}"
}
]
},
"type": "APIKey"
}
]
Параметр userRequestPlaceHoldersInput
включает следующие атрибуты:
Имя | Тип | Описание |
---|---|---|
Текст отображения | Струна | Определяет значение отображения текстового поля, которое отображается пользователю при подключении. |
RequestObjectKey | Струна | Определяет идентификатор в разделе запроса pollingConfig для замены значения заполнителя на значение, предоставленное пользователем. Если этот атрибут не используется, используйте вместо этого атрибут PollingKeyPaths . |
PollingKeyPaths | Струна | Это массив объектов JsonPath JsonPath, который направляет вызов API в любую часть шаблона, чтобы заменить значение заполнителя на значение пользователя. Пример: "pollingKeyPaths":["$.request.queryParameters.test1"] Если этот атрибут не используется, используйте вместо этого атрибут RequestObjectKey . |
PlaceHolderName | Струна | Определяет имя параметра заполнителя в файле шаблона JSON. Это может быть любое уникальное значение, например {{placeHolder}} . |
Копируемая метка
Пример:
Пример кода:
{
"parameters": {
"fillWith": [
"WorkspaceId",
"PrimaryKey"
],
"label": "Here are some values you'll need to proceed.",
"value": "Workspace is {0} and PrimaryKey is {1}"
},
"type": "CopyableLabel"
}
Значение массива | Тип | Описание |
---|---|---|
заполнить | ENUM | Необязательно. Массив переменных среды, используемых для заполнения шаблона. Разделяйте несколько заполнителей запятыми. Например: {0},{1} Поддерживаемые значения: workspaceId , workspaceName , primaryKey , MicrosoftAwsAccount , subscriptionId |
метка | Струна | Определяет текст для метки над текстовым полем. |
значение | Струна | Определяет значение, которое будет представлено в текстовом поле, поддерживает заполнители. |
строк | Строки | Необязательно. Определяет строки в области пользовательского интерфейса. По умолчанию установите значение 1. |
wideLabel | булевый | Необязательно. Определяет широкую надпись для длинных строк. По умолчанию установите значение false . |
InfoMessage
Ниже приведен пример встроенного информационного сообщения:
Напротив, на следующем рисунке показано не-встроенное информационное сообщение:
Значение массива | Тип | Описание |
---|---|---|
текст | Струна | Определите текст, отображаемый в сообщении. |
visible | булевый | Определяет, отображается ли сообщение. |
встроенный | булевый | Определяет, как отображается информационное сообщение. - true : (рекомендуется) Отображает информационное сообщение, внедренное в инструкции. - false : добавляет синий фон. |
ГруппаЭтаповИнструкции
Ниже приведен пример расширенной группы инструкций:
Значение массива | Тип | Описание |
---|---|---|
заголовок | Струна | Определяет заголовок шага инструкции. |
может свернуть все разделы | булевый | Необязательно. Определяет, является ли раздел сворачиваемым аккордеоном или нет. |
noFxPadding | булевый | Необязательно. Если true , уменьшает отступ по высоте, чтобы сэкономить место. |
расширенный | булевый | Необязательно. Если true , отображается в состоянии развернуто по умолчанию. |
Подробный пример см. в JSON конфигурации для соединителя DNS для Windows.
Агент установки
Некоторые типы InstallAgent отображаются как кнопка, другие будут отображаться как ссылка. Ниже приведены примеры обоих:
Значения массива | Тип | Описание |
---|---|---|
тип_ссылки | ENUM | Определяет тип ссылки в качестве одного из следующих значений: InstallAgentOnWindowsVirtualMachine InstallAgentOnWindowsNonAzure InstallAgentOnLinuxVirtualMachine InstallAgentOnLinuxNonAzure OpenSyslogSettings OpenCustomLogsSettings OpenWaf OpenAzureFirewall
OpenMicrosoftAzureMonitoring
OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
policyDefinitionGuid | Струна | Обязательный при использовании OpenPolicyAssignment linkType. Для соединителей на основе политик определяет GUID встроенного определения политики. |
назначение режима | ENUM | Необязательно. Для соединителей на основе политик определяет режим назначения в качестве одного из следующих значений: Initiative , Policy |
типПравилаСбораДанных | ENUM | Необязательно. Для соединителей на основе DCR определяет тип правила сбора данных как один из следующих типов: SecurityEvent , ForwardEvent |
метаданные
В этом разделе содержатся метаданные в пользовательском интерфейсе коннектора данных в области описания.
Значение коллекции | Тип | Описание |
---|---|---|
kind | Струна | Определяет тип создаваемого шаблона ARM. Всегда используйте dataConnector . |
источник | Струна | Описывает источник данных, используя следующий синтаксис: { строка "kind": строка "name": } |
автор | Струна | Автор соединителя данных описывается, используя следующий синтаксис: { строка "name": } |
поддержка | Струна | Описать поддержку соединителя данных с помощью следующего синтаксиса: { строка "tier": ,строка "name": ,строка "email": ,"link": строка URL-адреса} |
Разрешения
Значение массива | Тип | Описание |
---|---|---|
таможня | Струна | Описывает все пользовательские разрешения, необходимые для подключения к данным, в следующем синтаксисе: { "name": строка, строка "description": } Пример: значение таможенной стоимости отображается в разделе "Предварительные требования" Microsoft Sentinel с синим информационным значком. В примере GitHub это соответствует строке персональному токену API GitHub: вам нужен доступ к персональному токену GitHub... |
лицензии | ENUM | Определяет необходимые лицензии как одно из следующих значений: OfficeIRM ,OfficeATP , Office365 , AadP1P2 , Mcas , Aatp , Mdatp , Mtp , IoT Пример: значения лицензии отображаются в Microsoft Sentinel следующим образом: Лицензия: обязательная Azure AD Premium P2. |
resourceProvider | ресурсныйПровайдер | Описывает все необходимые условия для ресурса Azure. Пример: Значение resourceProvider отображается в разделе "Предварительные требования" Microsoft Sentinel как: Рабочее пространство: требуется разрешение на чтение и запись. Ключи: требуются разрешения на доступ к чтению общих ключей для рабочей области. |
арендатор | массив значений ENUM Пример: "tenant": [ "GlobalADmin", "SecurityAdmin" ] |
Определяет необходимые разрешения, как одно или несколько следующих значений: "GlobalAdmin" , "SecurityAdmin" , "SecurityReader" , "InformationProtection" Пример. Отображает значение клиента в Microsoft Sentinel следующим образом: разрешения клиента: требуется Global Administrator или Security Administrator в клиенте рабочей области |
поставщик ресурсов
Значение вложенного массива | Тип | Описание |
---|---|---|
провайдер | ENUM | Описывает поставщика ресурсов одним из следующих значений: - Microsoft.OperationalInsights/workspaces - Microsoft.OperationalInsights/solutions - Microsoft.OperationalInsights/workspaces/datasources - microsoft.aadiam/diagnosticSettings - Microsoft.OperationalInsights/workspaces/sharedKeys - Microsoft.Authorization/policyAssignments |
providerDisplayName | Струна | Элемент списка в разделе Предварительные требования, который будет отображать красную "x" или зеленую галочку, когда необходимые разрешения проверены на странице соединителя. Пример "Workspace" |
текстОтображенияРазрешений | Струна | Текст отображения для разрешений Чтение, Записьили Чтение и Запись, которые должны соответствовать значениям, настроенным в требуемых разрешениях |
необходимыеРазрешения | { "action": булевский, "delete": Boolean, "read": булевы, "write": булев тип} |
Описывает минимальные разрешения, необходимые для соединителя. |
сфера | ENUM | Описывает область соединителя данных, как одно из следующих значений: "Subscription" , "ResourceGroup" , "Workspace" |
примерЗапросов
Значение массива | Тип | Описание |
---|---|---|
описание | Струна | Понятное описание примера запроса. Пример: 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[]({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.authType | Струна | Обязательный. Определяет тип проверки подлинности, вложенный в объект auth , как одно из следующих значений: Basic , APIKey , OAuth2 |
request | Вложенный массив JSON | Обязательный. Описывает содержимое запроса для получения данных, таких как конечная точка API. Дополнительные сведения см. в разделе Конфигурация запросов. |
response | Вложенный массив JSON | Обязательный. Описывается объект ответа и вложенное сообщение, возвращенное из API при опросе данных. Дополнительные сведения см. в разделе Конфигурация ответа. |
пейджинг | Вложенный массив JSON | Необязательно. Описывает структуру данных для разбиения на страницы при опросе данных. Для получения дополнительной информации см. конфигурацию страничной памяти. |
Дополнительные сведения см. в примере кода для pollingConfig.
Конфигурация аутентификации
Раздел auth
конфигурации pollingConfig включает следующие параметры в зависимости от типа, определенного в элементе authType:
Базовые параметры authType
Имя | Тип | Описание |
---|---|---|
Username | Струна | Обязательный. Определяет имя пользователя. |
Пароль | Струна | Обязательный. Определяет пароль пользователя. |
Параметры APIKey для authType
Имя | Тип | Описание |
---|---|---|
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 — требуется поток авторизации |
ТокенДоступа | Струна | Необязательно. Определяет токен доступа OAuth2, актуальный в случаях, когда срок его действия не истекает. |
AccessTokenPrepend | Струна | Необязательно. Определяет добавление префикса к маркеру доступа OAuth2. По умолчанию — Bearer . |
RefreshToken | Струна | Обязательный для типов проверки подлинности OAuth2. Определяет маркер обновления OAuth2. |
TokenEndpoint | Струна | Обязательный для типов проверки подлинности OAuth2. Определяет конечную точку службы маркеров OAuth2. |
ТочкаАвторизации | Струна | Необязательно. Определяет конечную точку службы авторизации 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>, ... } |
ПараметрыЗапросаТочкиАвторизации | Строка словаря<, объект> | Необязательно. Определяет параметры запроса при вызове конечной точки службы авторизации 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"
},
Параметры типа аутентификации сеанса
Имя | Тип | Описание |
---|---|---|
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
конфигурации pollingConfig включает следующие параметры:
Имя | Тип | Описание |
---|---|---|
apiEndpoint | Струна | Обязательный. Определяет конечную точку, из которой извлекаются данные. |
httpMethod | Струна | Обязательный. Определяет метод API: GET или POST |
queryTimeFormat | Строка или UnixTimestamp или UnixTimestampInMills | Обязательный. Определяет формат, используемый для определения времени запроса. Это значение может быть строкой или в формате UnixTimestamp или UnixTimestampInMills, чтобы указать время начала и окончания запроса в UnixTimestamp. |
startTimeAttributeName | Струна | Необязательно. Определяет имя атрибута, определяющего время начала запроса. |
endTimeAttributeName | Струна | Необязательно. Определяет имя атрибута, определяющего время окончания запроса. |
queryTimeIntervalAttributeName | Струна | Необязательно. Определяет имя атрибута, определяющего интервал времени запроса. |
queryTimeIntervalDelimiter | Струна | Необязательно. Определяет разделитель интервала времени запроса. |
окноЗапросаВМинут | Целое число | Необязательно. Определяет доступное окно запроса в минутах. Минимальное значение: 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 | Двойной | Необязательно. Определяет количество вызовов или запросов, разрешенных за секунду. |
тайм-аут в секундах | Целое число | Необязательно. Определяет время ожидания запроса (в секундах). |
количество повторных попыток | Целое число | Необязательно. Определяет количество повторных попыток запроса при необходимости. |
headers | Строка словаря<, объект> | Необязательно. Определяет значение заголовка запроса в сериализованном формате dictionary<string, object> : {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... } |
Настройка ответа
Раздел response
конфигурации pollingConfig включает следующие параметры:
В следующем коде показан пример значения eventsJsonPaths для сообщения верхнего уровня:
"eventsJsonPaths": [
"$"
]
Конфигурация paging
Раздел paging
конфигурации pollingConfig включает следующие параметры:
Имя | Тип | Описание |
---|---|---|
тип разбиения страниц | Струна | Обязательный. Определяет тип разбиения по страницам, используемый в результатах, как одно из следующих значений: None , LinkHeader , NextPageToken , NextPageUrl , Offset |
linkHeaderTokenJsonPath | Струна | Необязательно. Определяет путь JSON для связывания заголовка в формате JSON ответа, если LinkHeader не определен в заголовке ответа. |
nextPageTokenJsonPath | Струна | Необязательно. Определяет путь к следующему токену страницы JSON. |
hasNextFlagJsonPath | Струна | Необязательно. Определяет путь к атрибуту флага HasNextPage . |
nextPageTokenResponseHeader | Струна | Необязательно. Определяет в ответе имя заголовка токена для следующей страницы . |
nextPageParaName | Струна | Необязательно. Определяет следующей странице имя в запросе. |
nextPageRequestHeader | Струна | Необязательно. Определяет следующей странице имя заголовка в запросе. |
nextPageUrl | Струна | Необязательно. Определяет следующей странице URL-адрес, если он отличается от URL-адреса начального запроса. |
параметрыЗапросаURLСледующейСтраницы | Струна | Необязательно. Определяет параметры запроса URL-адреса следующей страницы, если они отличаются от URL-адреса начального запроса. Определите строку в сериализованном формате dictionary<string, object> : {'<attr_name>': <val>, '<attr_name>': <val>... } |
offsetParaName | Струна | Необязательно. Определяет имя параметра смещения. |
pageSizeParaName | Струна | Необязательно. Определяет имя параметра размера страницы. |
РазмерСтраницы | Целое число | Определяет размер разбиения по страницам. |
Пример кода 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 управляется конфигурацией InstructionSteps в элементе
connectorUiConfig
файла конфигурации JSON CCP. Если у вас возникли проблемы с подключением пользовательского интерфейса, убедитесь, что у вас есть правильная конфигурация для типа проверки подлинности.В 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! Создайте решение для соединителя данных и поделитесь им в Microsoft Sentinel Marketplace.
См. раздел для получения дополнительной информации.