Справочник по подключению к ServiceNow
Подключение Elastic ServiceNow — это подключение к ServiceNow.
Это подключение написано на Python с использованием фреймворка подключений Elasticsearch.
Просмотреть исходный код этого подключения (ветка 8.17, совместимая с Elasticsearch 8.17).
Справочник по управляемому подключению Elastic
Просмотреть справочник по управляемому подключению Elastic
Доступность и предварительные требования
Подключение ServiceNow доступно в Elastic Cloud начиная с версии 8.10.0.
Чтобы использовать это подключение в Elastic Cloud, выполните все требования к управляемым подключениям.
Создайте подключение ServiceNow
Использование пользовательского интерфейса
Чтобы создать новое подключение ServiceNow:
- В пользовательском интерфейсе Kibana перейдите на страницу Поиск → Контент → Подключения в главном меню или используйте поле глобального поиска.
- Следуйте инструкциям, чтобы создать новое родное подключение ServiceNow.
Для дополнительных операций см. Пользовательский интерфейс подключений в Kibana.
Использование API
Вы можете использовать API Elasticsearch создания подключения для создания нового родного подключения ServiceNow.
Например:
resp = client.connector.put(
connector_id="my-{service-name-stub}-connector",
index_name="my-elasticsearch-index",
name="Content synced from {service-name}",
service_type="{service-name-stub}",
is_native=True,
)
print(resp) const response = await client.connector.put({
connector_id: "my-{service-name-stub}-connector",
index_name: "my-elasticsearch-index",
name: "Content synced from {service-name}",
service_type: "{service-name-stub}",
is_native: true,
});
console.log(response); PUT _connector/my-servicenow-connector
{
"index_name": "my-elasticsearch-index",
"name": "Content synced from ServiceNow",
"service_type": "servicenow",
"is_native": true
} Вам также потребуется создать ключ API для использования подключением.
Пользователю необходимы привилегии кластера manage_api_key, manage_connector и write_connector_secrets для программированного создания ключей API.
Чтобы создать ключ API для подключения:
-
Запустите следующую команду, заменив значения там, где указано. Обратите внимание на значения
idиencodedиз ответа:resp = client.security.create_api_key( name="my-connector-api-key", role_descriptors={ "my-connector-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": False } ] } }, ) print(resp)const response = await client.security.createApiKey({ name: "my-connector-api-key", role_descriptors: { "my-connector-connector-role": { cluster: ["monitor", "manage_connector"], indices: [ { names: [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*", ], privileges: ["all"], allow_restricted_indices: false, }, ], }, }, }); console.log(response);POST /_security/api_key { "name": "my-connector-api-key", "role_descriptors": { "my-connector-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": false } ] } } } -
Используйте значение
encodedдля хранения секрета подключения и обратите внимание на значениеidиз ответа:resp = client.perform_request( "POST", "/_connector/_secret", headers={"Content-Type": "application/json"}, body={ "value": "encoded_api_key" }, ) print(resp)const response = await client.transport.request({ method: "POST", path: "/_connector/_secret", body: { value: "encoded_api_key", }, }); console.log(response);POST _connector/_secret { "value": "encoded_api_key" } -
Используйте ключ API
idи секрет подключенияidдля обновления подключения:resp = client.connector.update_api_key_id( connector_id="my_connector_id>", api_key_id="API key_id", api_key_secret_id="secret_id", ) print(resp)const response = await client.connector.updateApiKeyId({ connector_id: "my_connector_id>", api_key_id: "API key_id", api_key_secret_id: "secret_id", }); console.log(response);PUT /_connector/my_connector_id>/_api_key_id { "api_key_id": "API key_id", "api_key_secret_id": "secret_id" }
Подробную информацию обо всех доступных API-методах для подключений см. в документации по API Elasticsearch.
Использование
Чтобы использовать это подключение в Elastic Cloud, см. Управляемые подключения Elastic.
Для дополнительных операций см. Пользовательский интерфейс подключений в Kibana
Совместимость
Подключение ServiceNow совместимо со следующими версиями ServiceNow:
- ServiceNow "Tokyo"
- ServiceNow "San Diego"
- ServiceNow "Rome"
- ServiceNow "Utah"
- ServiceNow "Vancouver"
- ServiceNow "Washington"
- ServiceNow "Xanadu"
Настройка
Для настройки подключения необходимы следующие поля конфигурации:
- URL ServiceNow
- URL хоста экземпляра ServiceNow.
- Имя пользователя
- Имя пользователя учетной записи, используемой для ServiceNow.
- Пароль
- Пароль учетной записи, используемой для ServiceNow.
- Список служб, разделенных запятыми
-
Список служб, разделенных запятыми, для получения данных из ServiceNow. Если значение равно
*, подключение будет получать данные из списка основных служб, предоставляемых ServiceNow:- Пользователь
- Инцидент
- Затребованный элемент
- База знаний
-
Если вы настроили пользовательскую службу, значение
*по умолчанию не будет получать данные из основных служб выше. В этом случае вам необходимо явно указать эти имена служб.Значение по умолчанию равно
*. Примеры: -
User, Incident, Requested Item, Knowledge, Change request -
*
- Включить безопасность на уровне документа
- Ограничить доступ к документам на основе разрешений пользователя. См. Безопасность на уровне документа для получения более подробной информации.
Документы и синхронизации
Все службы и записи, к которым пользователь имеет доступ, будут индексироваться в соответствии с предоставленными настройками. Подключение синхронизирует следующие типы объектов ServiceNow:
- Записи
- Вложения
- Содержимое файлов размером более 10 МБ не будет извлечено. (Управляемые подключения могут использовать локальную службу извлечения, чтобы обрабатывать большие двоичные файлы.)
- Разрешения по умолчанию не синхронизируются. См. Безопасность на уровне документа для получения более подробной информации.
Типы синхронизации
Полные синхронизации поддерживаются по умолчанию для всех подключений.
Это подключение также поддерживает инкрементные синхронизации.
Безопасность на уровне документа
Безопасность на уровне документа (DLS) гарантирует, что идентичности и разрешения, установленные в ServiceNow, сохраняются в Elasticsearch. Это позволяет ограничивать и персонализировать доступ к документам, который имеют пользователи и группы в этом индексе. Синхронизация управления доступом гарантирует, что эти метаданные остаются актуальными в ваших документах Elasticsearch.
Подключение ServiceNow поддерживает роли для списков управления доступом (ACL) для включения безопасности на уровне документа в Elasticsearch. Для служб по умолчанию подключения используют следующие роли для поиска пользователей, имеющих доступ к документам.
| Служба | Роли |
|---|---|
Пользователь |
|
Инцидент |
|
Затребованный элемент |
|
База знаний |
|
Запрос на изменение |
|
Для служб, отличных от этих значений по умолчанию, подключение итерируется по спискам управления доступом с помощью операций read и находит соответствующие роли для этих служб.
Подключение ServiceNow применяет контроль доступа на уровне службы (таблицы). Это означает, что документы в данной таблице ServiceNow используют одни и те же настройки контроля доступа. Пользователи, имеющие разрешение на таблицу, могут получить доступ ко всем документам из этой таблицы в Elasticsearch.
Подключение ServiceNow не поддерживает скриптированные и условные разрешения.
Правила синхронизации
Основные правила синхронизации одинаковы для всех подключений и доступны по умолчанию.
Расширенные правила синхронизации
Необходима полная синхронизация для того, чтобы правила расширенной синхронизации вступили в силу.
Правила расширенной синхронизации определяются через фрагмент JSON DSL, специфичный для источника.
В следующих разделах приведены примеры правил расширенной синхронизации для этого коннектора.
Индексирование документа на основе номера инцидента для службы инцидентов
[
{
"service": "Incident",
"query": "numberSTARTSWITHINC001"
}
] Индексирование документа на основе состояния активности пользователя для службы пользователей
[
{
"service": "User",
"query": "active=False"
}
] Индексирование документа на основе имени автора для службы знаний
[
{
"service": "Knowledge",
"query": "author.nameSTARTSWITHSystem Administrator"
}
] Известные проблемы
Для данного коннектора известных проблем нет. См. Известные проблемы для списка известных проблем, влияющих на все коннекторы.
Устранение неполадок
См. Устранение неполадок.
Безопасность
См. Безопасность.
Извлечение контента
См. Извлечение контента.
Коннектор с самостоятельным управлением
Ссылка на просмотр подключение самостоятельного подключения
Доступность и предварительные условия
Подключение к ServiceNow было представлено в версии Elastic 8.9.0. Это подключение доступно как самостоятельное подключение. Для использования этого подключения в качестве самостоятельного подключения необходимо выполнить все требования к самостоятельным подключениям.
Создание подключения к ServiceNow
Использование пользовательского интерфейса
Для создания нового подключения к ServiceNow:
- В пользовательском интерфейсе Kibana перейдите на страницу Поиск → Содержание → Подключения из главного меню или используйте поле глобального поиска.
- Следуйте инструкциям для создания нового самостоятельного подключения ServiceNow.
Использование API
Вы можете использовать Elasticsearch API для создания подключения для создания нового самостоятельного подключения к ServiceNow.
Например:
resp = client.connector.put(
connector_id="my-{service-name-stub}-connector",
index_name="my-elasticsearch-index",
name="Content synced from {service-name}",
service_type="{service-name-stub}",
)
print(resp) const response = await client.connector.put({
connector_id: "my-{service-name-stub}-connector",
index_name: "my-elasticsearch-index",
name: "Content synced from {service-name}",
service_type: "{service-name-stub}",
});
console.log(response); PUT _connector/my-servicenow-connector
{
"index_name": "my-elasticsearch-index",
"name": "Content synced from ServiceNow",
"service_type": "servicenow"
} Вам также потребуется создать ключ API для использования подключения.
Пользователю необходимы привилегии кластера manage_api_key, manage_connector и write_connector_secrets для программированного создания ключей API.
Для создания ключа API для подключения:
-
Выполните следующую команду, заменив указанные значения. Обратите внимание на значения
encodedиз ответа:resp = client.security.create_api_key( name="connector_name-connector-api-key", role_descriptors={ "connector_name-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": False } ] } }, ) print(resp)const response = await client.security.createApiKey({ name: "connector_name-connector-api-key", role_descriptors: { "connector_name-connector-role": { cluster: ["monitor", "manage_connector"], indices: [ { names: [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*", ], privileges: ["all"], allow_restricted_indices: false, }, ], }, }, }); console.log(response);POST /_security/api_key { "name": "connector_name-connector-api-key", "role_descriptors": { "connector_name-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": false } ] } } } - Обновите файл
config.ymlс значением API-ключаencoded.
Обратитесь к документации API Elasticsearch для получения подробной информации обо всех доступных API-методах подключения.
Использование
Для использования этого подключения как самостоятельного подключения используйте процесс настраиваемого подключения.
Дополнительные операции см. в разделе об использовании.
Совместимость
Подключение к ServiceNow совместимо со следующими версиями ServiceNow:
- ServiceNow "Tokyo"
- ServiceNow "San Diego"
- ServiceNow "Rome"
- ServiceNow "Utah"
- ServiceNow "Vancouver"
- ServiceNow "Washington"
- ServiceNow "Xanadu"
Настройка
При использовании процесса самостоятельного подключения изначально эти поля будут использовать значения по умолчанию, заданные в коде источника подключения. Они заданы в определении функции get_default_configuration.
Эти настраиваемые поля будут отображаться с соответствующими метками в пользовательском интерфейсе Kibana. После подключения вы сможете обновить эти значения в Kibana.
Для настройки подключения требуются следующие поля конфигурации:
-
url - URL-адрес хоста экземпляра ServiceNow.
-
username - Имя пользователя для входа в ServiceNow.
-
password - Пароль учетной записи, используемой для ServiceNow.
-
services -
Список служб для получения данных из ServiceNow, разделенный запятыми. Если значение равно
*, подключение будет получать данные из списка основных служб, предоставляемых ServiceNow:- Пользователь
- Инцидент
- Запрошенный элемент
- Знания
-
Если вы настроили пользовательскую службу, значение
*по умолчанию не будет получать данные из вышеперечисленных основных служб. В этом случае вам необходимо явно указать эти имена служб.Значение по умолчанию —
*. Примеры: -
User, Incident, Requested Item, Knowledge, Change request -
*
-
retry_count - Количество попыток повторной обработки после неудачного запроса к ServiceNow. Значение по умолчанию —
3. -
concurrent_downloads - Количество одновременных загрузок для получения содержимого вложений. Это ускоряет извлечение содержимого вложений. Значение по умолчанию —
10. -
use_text_extraction_service - Требует отдельной развертки службы локального извлечения текста Elasticsearch. Требует, чтобы настройки конвейера приема отключали извлечение текста. Значение по умолчанию —
False. -
use_document_level_security - Ограничение доступа к документам на основе разрешений пользователя. Подробнее см. в разделе о безопасности на уровне документов.
Документы и синхронизация
Все службы и записи, к которым имеет доступ пользователь, будут индексироваться в соответствии с предоставленными настройками. Подключение синхронизирует следующие типы объектов ServiceNow:
- Записи
- Вложения
- Содержимое файлов размером более 10 МБ не будет извлекаться. Используйте локальный сервис извлечения Elasticsearch для обработки больших бинарных файлов.
- Разрешения по умолчанию не синхронизируются. Необходимо включить безопасность на уровне документов. В противном случае все индексированные документы в развертывании Elasticsearch будут доступны всем пользователям с доступом к этому развертыванию Elasticsearch.
Типы синхронизации
Полная синхронизация поддерживается по умолчанию для всех подключений.
Это подключение также поддерживает инкрементную синхронизацию.
Безопасность на уровне документов
Безопасность на уровне документов (DLS) обеспечивает сохранение идентификаторов и разрешений, установленных в ServiceNow, в Elasticsearch. Это позволяет ограничивать и персонализировать доступ пользователей и групп к документам в этом индексе. Синхронизация управления доступом гарантирует, что эти метаданные остаются актуальными в документах Elasticsearch.
Подключение ServiceNow поддерживает роли для списков управления доступом (ACL) для включения безопасности на уровне документов в Elasticsearch. Для служб по умолчанию подключения используют следующие роли для поиска пользователей, имеющих доступ к документам.
| Служба | Роли |
|---|---|
Пользователь |
|
Инцидент |
|
Запрошенный элемент |
|
Знания |
|
Запрос изменения |
|
Для служб, отличных от этих значений по умолчанию, коннектор итерируется по средствам контроля доступа с операциями read и находит соответствующие роли для этих служб.
Коннектор ServiceNow применяет контроль доступа на уровне службы (таблицы). Это означает, что документы в заданной таблице ServiceNow используют одинаковые настройки контроля доступа. Пользователи с разрешением на таблицу могут получить доступ ко всем документам из этой таблицы в Elasticsearch.
Коннектор ServiceNow не поддерживает скриптовые и условные разрешения.
Развертывание с помощью Docker
Вы можете развернуть коннектор ServiceNow как самодостаточный коннектор с помощью Docker. Следуйте этим инструкциям.
Шаг 1: Загрузка файла конфигурации образца
Загрузите файл конфигурации образца. Вы можете загрузить его вручную или выполнить следующую команду:
curl https://raw.githubusercontent.com/elastic/connectors/main/config.yml.example --output ~/connectors-config/config.yml
Не забудьте обновить значение аргумента --output, если имя вашей директории отличается или вы хотите использовать другое имя файла конфигурации.
Шаг 2: Обновление файла конфигурации для вашего самодостаточного коннектора
Обновите файл конфигурации следующими настройками, чтобы соответствовать вашей среде:
-
elasticsearch.host -
elasticsearch.api_key -
connectors
Если вы запускаете службу коннектора по отношению к Docker-изображению Elasticsearch и Kibana, ваш файл конфигурации будет выглядеть так:
# When connecting to your cloud deployment you should edit the host value
elasticsearch.host: http://host.docker.internal:9200
elasticsearch.api_key: <ELASTICSEARCH_API_KEY>
connectors:
-
connector_id: <CONNECTOR_ID_FROM_KIBANA>
service_type: servicenow
api_key: <CONNECTOR_API_KEY_FROM_KIBANA> # Optional. If not provided, the connector will use the elasticsearch.api_key instead Использование elasticsearch.api_key является рекомендуемым методом аутентификации. Однако вы также можете использовать elasticsearch.username и elasticsearch.password для аутентификации с вашим экземпляром Elasticsearch.
Примечание: Вы можете изменить другие значения конфигурации по умолчанию, просто раскомментировав определенные настройки в файле конфигурации и изменив их значения.
Шаг 3: Запуск Docker-изображения
Запустите Docker-изображение со службой коннектора с помощью следующей команды:
docker run \ -v ~/connectors-config:/config \ --network "elastic" \ --tty \ --rm \ docker.elastic.co/enterprise-search/elastic-connectors:8.17.3 \ /app/bin/elastic-ingest \ -c /config/config.yml
Обратитесь к DOCKER.md в репозитории elastic/connectors для получения более подробной информации.
Найдите все доступные Docker-изображения в официальном репозитории.
У нас также есть быстрый старт самодостаточного варианта с помощью Docker Compose, так что вы можете сразу запустить все необходимые службы: Elasticsearch, Kibana и службу коннекторов. Обратитесь к этому README в репозитории elastic/connectors для получения дополнительной информации.
Правила синхронизации
Основные правила синхронизации идентичны для всех коннекторов и доступны по умолчанию.
Расширенные правила синхронизации
Для того, чтобы расширенные правила синхронизации вступили в силу, требуется полная синхронизация.
Расширенные правила синхронизации определяются с помощью специфичного для источника фрагмента JSON DSL.
В следующих разделах приведены примеры расширенных правил синхронизации для этого коннектора.
Индексирование документа на основе номера инцидента для службы инцидентов
[
{
"service": "Incident",
"query": "numberSTARTSWITHINC001"
}
] Индексирование документа на основе состояния активности пользователя для службы пользователей
[
{
"service": "User",
"query": "active=False"
}
] Индексирование документа на основе имени автора для службы знаний
[
{
"service": "Knowledge",
"query": "author.nameSTARTSWITHSystem Administrator"
}
] Конечный тест
Фреймворк коннектора позволяет операторам запускать функциональные тесты на реальном источнике данных. Обратитесь к тестированию коннекторов для получения более подробной информации.
Для выполнения конечного тестирования коннектора ServiceNow выполните следующую команду:
$ make ftest NAME=servicenow
Генерировать отчеты производительности с помощью следующего флага: PERF8=yes. Изменить размер набора тестовых данных между SMALL, MEDIUM и LARGE с помощью аргумента DATA_SIZE=. По умолчанию он установлен на MEDIUM.
Пользователям не нужно иметь работающий экземпляр Elasticsearch или источник ServiceNow для запуска этого теста. Docker Compose управляет полным набором среды разработки.
Известные проблемы
Для этого коннектора нет известных проблем. Обратитесь к Известные проблемы для списка известных проблем, влияющих на все коннекторы.
Поиск и устранение неполадок
См. Поиск и устранение неполадок.
Безопасность
См. Безопасность.
Извлечение содержимого
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/es-connectors-servicenow.html