Справочник подключения Elastic Salesforce
Подключение Elastic Salesforce — это подключение для источников данных Salesforce.
Справочник управляемого подключения Elastic
Просмотреть справку управляемого подключения Elastic
Доступность и предварительные требования
Этот коннектор доступен в Elastic Cloud как управляемый коннектор начиная с версии 8.12.0. Для использования этого коннектора, выполните все требования к коннекторам с самостоятельным управлением.
Совместимость
Этот коннектор совместим со следующими системами:
- Salesforce
- Salesforce Sandbox
Создание коннектора Salesforce
Использование интерфейса
Чтобы создать новый коннектор Salesforce:
- В интерфейсе Kibana перейдите на страницу Поиск → Содержимое → Коннекторы в главном меню или используйте поле глобального поиска.
- Следуйте инструкциям для создания нового нативного коннектора Salesforce.
Для дополнительных операций см. Интерфейс коннекторов в Kibana.
Использование API
Вы можете использовать API Elasticsearch создания коннектора для создания нового нативного коннектора Salesforce.
Например:
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-salesforce-connector
{
"index_name": "my-elasticsearch-index",
"name": "Content synced from Salesforce",
"service_type": "salesforce",
"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 Elasticsearch для получения подробной информации обо всех доступных API коннекторов.
Использование
Для использования этого коннектора в качестве коннектора с самостоятельным управлением используйте рабочий процесс Коннектор в интерфейсе Kibana.
Для дополнительных операций см. использование коннекторов.
Для аутентификации с Salesforce необходимо создать приложение Salesforce, подключенное к Salesforce, с включенным OAuth2.0.
Создание приложения Salesforce, подключенного к Salesforce
Коннектор Salesforce аутентифицируется с Salesforce через приложение, подключенное к Salesforce. Следуйте официальной документации Salesforce по настройке подключенного приложения для потока OAuth 2.0 Client Credentials.
При создании подключенного приложения в разделе API (Включить настройки OAuth) убедитесь, что следующие настройки включены:
- Включить настройки OAuth
-
Включить для потока Device Flow
- URL обратного вызова должен быть тестовым URL обратного вызова Salesforce,
https://test.salesforce.com/services/oauth2/success
- URL обратного вызова должен быть тестовым URL обратного вызова Salesforce,
- Требовать секрет для потока Web Server Flow
- Требовать секрет для потока Refresh Token Flow
- Включить поток Client Credentials Flow
Все остальные параметры должны быть отключены. Наконец, в разделе Выбранные OAuth-разрешения включите следующие OAuth-разрешения:
- Управление данными пользователя через API (api)
- Выполнение запросов в любое время (refresh_token, offline_access)
Требования к администратору Salesforce
По умолчанию коннектор Salesforce требует разрешений глобального администратора для доступа к данным Salesforce. Разверните раздел ниже, чтобы узнать, как создать пользовательский пользователь Salesforce с минимальными разрешениями.
Создание пользовательского пользователя Salesforce с минимальными разрешениями
Создав пользовательский профиль с достаточными разрешениями в меню Настройка, можно исключить требование роли системного администратора для извлечения данных из Salesforce.
Чтобы создать новый профиль:
- В меню Настройка Salesforce перейдите к Администрирование ⇒ Пользователи ⇒ Профили.
- Создайте новый профиль.
-
Выберите
Read OnlyилиStandard Userиз раскрывающегося списка Существующий профиль. Назовите профиль и сохраните его.По умолчанию пользователи
Read OnlyилиStandard Userимеют право на чтение всех стандартных объектов. - Откройте созданный профиль для редактирования. В разделе Разрешения на объекты назначьте как минимум
Readдоступ к стандартным объектам и настраиваемым объектам, которые вы хотите импортировать в Elasticsearch. -
Убедитесь, что созданный профиль имеет как минимум
Readдоступ для следующих стандартных объектов:- Account
- Campaign
- Case
- Contact
- EmailMessage
- Lead
- Opportunity
-
User
Если вы используете расширенные правила синхронизации, вам потребуется назначить
Readдоступ для этого конкретного объекта в профиле.
- Перейдите к Пользователи ⇒ Профили и назначьте созданный профиль пользователю.
-
Перейдите к Подключенные приложения, выберите ваше приложение, а затем выберите Изменить политики. Назначьте поток клиентских учетных данных пользователю с пользовательским профилем в Salesforce.
Теперь коннектор можно настроить для этого профиля пользователя, чтобы извлечь все записи объектов, без необходимости роли системного администратора.
Настройка
Для настройки этого коннектора требуются следующие параметры:
- Домен (обязательно)
- Домен вашей учетной записи Salesforce. Это домен, который отображается в вашем URL Salesforce. Например, если ваш URL Salesforce —
foo.my.salesforce.com, то ваш домен —foo. Если вы используете Salesforce Sandbox, ваш URL будет содержать дополнительный домен и будет похож наfoo.sandbox.my.salesforce.com. В этом случае ваш домен будетfoo.sandbox. - Идентификатор клиента (обязательно)
- Идентификатор клиента, сгенерированный вашим подключенным приложением. Документация Salesforce иногда также называет его ключом потребителя
- Секрет клиента (обязательно)
- Секрет клиента, сгенерированный вашим подключенным приложением. Документация Salesforce иногда также называет его секретом потребителя.
- Включить безопасность на уровне документа
-
Переключатель для включения безопасности на уровне документа (DLS). Необязательно, по умолчанию выключено. См. раздел DLS для получения дополнительной информации, включая способ установки различных типов разрешений Salesforce.
При включении:
- Полные синхронизации будут извлекать списки управления доступом для каждого документа и сохранять их в поле
_allow_access_control. - Синхронизации управления доступом будут извлекать списки управления доступом пользователей и сохранять их в отдельном индексе.
- Полные синхронизации будут извлекать списки управления доступом для каждого документа и сохранять их в поле
Нахождение идентификатора клиента и секрета клиента
Идентификатор клиента и секрет клиента не отображаются автоматически после создания подключенного приложения. Вы можете найти их, выполнив следующие действия:
- Перейдите в Настройки
- Перейдите к Инструменты платформы > Приложения > Управление приложениями
- Нажмите на треугольник рядом с вашим приложением и выберите Просмотр
- После загрузки страницы нажмите Управление данными потребителя
Ваш идентификатор клиента и секрет клиента теперь должны быть видны в верхней части страницы.
Безопасность на уровне документа (DLS)
Безопасность на уровне документа (DLS) позволяет ограничить доступ к документам на основе разрешений пользователя. Эта функция доступна по умолчанию для подключения Salesforce и поддерживает как стандартные, так и пользовательские объекты.
Salesforce позволяет пользователям устанавливать разрешения следующим образом:
- Профили
- Наборы разрешений
- Группы наборов разрешений
Для получения руководства ознакомьтесь с этими видео-уроками по настройке разрешений Salesforce.
Для импорта любых стандартных или пользовательских объектов пользователи должны убедиться, что объекту предоставлено разрешение Read. Это можно сделать, используя любой из следующих методов настройки разрешений.
Настройка разрешений с помощью профилей
Обратитесь к документации Salesforce для настройки разрешений через профили.
Настройка разрешений с помощью наборов разрешений
Обратитесь к документации Salesforce для настройки разрешений через наборы разрешений.
Настройка разрешений с помощью групп наборов разрешений
Обратитесь к документации Salesforce для настройки разрешений через группы наборов разрешений.
Назначение профилей, набора разрешений и групп наборов разрешений пользователю
После настройки разрешений назначьте профили, наборы разрешений или группы наборов разрешений пользователю. Выполните эти шаги в Salesforce:
- Перейдите к
Administrationв разделеUsers. - Выберите
Usersи выберите пользователя, которому необходимо установить разрешения. - Установите созданные ранее
Profile,Permission SetилиPermission Set Groups.
Правила синхронизации
Правила синхронизации базового типа идентичны для всех подключений и доступны по умолчанию. Для получения дополнительной информации прочитайте Типы правил синхронизации.
Расширенные правила синхронизации
Для применения расширенных правил синхронизации требуется полная синхронизация.
В следующем разделе описаны расширенные правила синхронизации для этого подключения. Расширенные правила синхронизации позволяют фильтровать данные в Salesforce перед индексированием в Elasticsearch.
Они принимают следующие параметры:
-
query: Запрос Salesforce для фильтрации документов. -
language: Язык запросов Salesforce. Допустимые значения — SOQL и SOSL.
Получение документов на основе указанного запроса и языка
Пример: Получение документов с помощью запроса SOQL
[
{
"query": "SELECT Id, Name FROM Account",
"language": "SOQL"
}
] Пример: Получение документов с помощью запроса SOSL.
[
{
"query": "FIND {Salesforce} IN ALL FIELDS",
"language": "SOSL"
}
] Получение стандартных и пользовательских объектов с помощью запросов SOQL и SOSL
Пример: Получение документов для стандартных объектов через SOQL и SOSL запрос.
[
{
"query": "SELECT Account_Id, Address, Contact_Number FROM Account",
"language": "SOQL"
},
{
"query": "FIND {Alex Wilber} IN ALL FIELDS RETURNING Contact(LastModifiedDate, Name, Address)",
"language": "SOSL"
}
] Пример: Получение документов для пользовательских объектов через SOQL и SOSL запрос.
[
{
"query": "SELECT Connector_Name, Version FROM Connector__c",
"language": "SOQL"
},
{
"query": "FIND {Salesforce} IN ALL FIELDS RETURNING Connectors__c(Id, Connector_Name, Connector_Version)",
"language": "SOSL"
}
] Получение документов со стандартными и пользовательскими полями
Пример: Получение документов со всеми стандартными и пользовательскими полями для объекта Account.
[
{
"query": "SELECT FIELDS(ALL) FROM Account",
"language": "SOQL"
}
] Пример: Получение документов со всеми пользовательскими полями для объекта Connector.
[
{
"query": "SELECT FIELDS(CUSTOM) FROM Connector__c",
"language": "SOQL"
}
] Пример: Получение документов со всеми стандартными полями для объекта Account.
[
{
"query": "SELECT FIELDS(STANDARD) FROM Account",
"language": "SOQL"
}
] Документы и синхронизации
Подключение синхронизирует следующие объекты Salesforce:
- Accounts
- Campaigns
- Cases
- Contacts
- Content Documents (файлы, загруженные в Salesforce)
- Leads
- Opportunities
Подключение не будет импортировать объекты, к которым у него нет разрешения на запрос.
- Контент из файлов размером более 10 МБ не будет извлечен. (Самостоятельно управляемые подключения могут использовать службу локального извлечения для обработки больших двоичных файлов.)
- Разрешения по умолчанию не синхронизируются. Необходимо включить безопасность на уровне документа. В противном случае, все документы, индексированные в Elastic Deployment, будут видны всем пользователям с доступом к этому развертыванию.
Типы синхронизации
Полные синхронизации поддерживаются по умолчанию для всех подключений.
Это подключение также поддерживает инкрементные синхронизации.
Извлечение содержимого
Подключение будет извлекать Content Documents из вашего источника Salesforce, если они соответствуют следующим критериям:
- Прикреплены к одному или нескольким синхронизированным объектам
- Имеют тип файла, который может быть извлечен
Это означает, что подключение не будет импортировать Content Documents, которые не прикреплены к поддерживаемому объекту Salesforce. Список поддерживаемых типов объектов см. в документах и синхронизациях.
Если один Content Document прикреплен к нескольким поддерживаемым объектам, для него будет создан только один документ Elastic. Этот документ сохранит ссылки на каждый объект, к которому он был подключен, в поле related_ids.
Дополнительную информацию об извлечении содержимого см. в разделе об извлечении содержимого.
Известные проблемы
-
Функция DLS является "уровневой", а не "документальной"
DLS Salesforce, добавленная в 8.13.0, не учитывает конкретные разрешения доступа к определенным объектам Salesforce. Вместо этого, если данный пользователь/группа может получить доступ к любым объектам данного типа (
Case,Lead,Opportunityи т.д.), этот пользователь/группа появится в списке\_allow_access_controlдля всех объектов этого типа. Более подробную информацию см. в https://github.com/elastic/connectors/issues/3028.Список известных проблем всех подключений см. в разделе о проблемах подключений.
Безопасность
См. раздел о безопасности подключений.
Фреймворк и исходный код
Это подключение создано с помощью фреймворка Elastic для подключений.
Просмотрите исходный код этого подключения (ветка 8.17, совместима с Elastic 8.17).
Ссылка на самостоятельно управляемое подключение
Справочник по подключению самостоятельного подключения
Доступность и предварительные требования
Это подключение доступно в виде самостоятельного самостоятельного подключения. Это самостоятельное подключение совместимо с версиями Elastic 8.10.0+. Для использования этого подключения выполните все требования к самостоятельным подключениям.
Совместимость
Это подключение совместимо со следующим:
- Salesforce
- Salesforce Sandbox
Создание подключения Salesforce
Использование интерфейса
Чтобы создать новое подключение Salesforce:
- В интерфейсе Kibana перейдите на страницу Поиск → Содержимое → Подключения в главном меню или используйте поле глобального поиска.
- Следуйте инструкциям, чтобы создать новое подключение Salesforce с самостоятельным управлением.
Использование API
Вы можете использовать Elasticsearch API для создания подключений для создания нового самостоятельного подключения Salesforce.
Например:
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-salesforce-connector
{
"index_name": "my-elasticsearch-index",
"name": "Content synced from Salesforce",
"service_type": "salesforce"
} Вам также потребуется создать ключ 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со значением ключа APIencoded.
Подробную информацию обо всех доступных API для подключений см. в документации API Elasticsearch.
Использование
Для использования этого подключения как самостоятельного подключения используйте рабочий процесс Подключение в интерфейсе Kibana.
Дополнительные операции см. в документации по работе с подключениями.
Для аутентификации с Salesforce необходимо создать приложение Salesforce с включенной OAuth2.0.
Создание приложения Salesforce
Подключение Salesforce аутентифицируется с Salesforce через приложение. Следуйте официальной документации Salesforce по настройке подключенного приложения для потока OAuth 2.0 с клиентом и секретом.
При создании приложения в разделе, озаглавленном API (Включить настройки OAuth), убедитесь, что следующие настройки включены:
- Включить настройки OAuth
-
Включить для потока Device Flow
- URL обратного вызова должен быть тестовым URL обратного вызова Salesforce,
https://test.salesforce.com/services/oauth2/success
- URL обратного вызова должен быть тестовым URL обратного вызова Salesforce,
- Требовать секрет для потока веб-сервера
- Требовать секрет для потока обновления токенов
- Включить поток Client Credentials
- Управление данными пользователя через API (api)
- Выполнение запросов в любое время (refresh_token, offline_access)
Требования к администратору Salesforce
По умолчанию для доступа к данным Salesforce требуется право глобального администратора подключения Salesforce. Разверните раздел ниже, чтобы узнать, как создать пользователь Salesforce с минимальными правами.
Создание пользователь Salesforce с минимальными правами
Создав пользовательский профиль с достаточными правами в меню «Настройка», вы можете убрать требование роли системного администратора для извлечения данных из Salesforce.
Чтобы создать новый профиль:
- В меню «Настройка» Salesforce перейдите в Администрирование ⇒ Пользователи ⇒ Профили.
- Создайте новый профиль.
-
Выберите
Read OnlyилиStandard Userиз раскрывающегося списка Существующий профиль. Назовите профиль и сохраните его.По умолчанию пользователи
Read OnlyилиStandard Userимеют право чтения для доступа ко всем стандартным объектам. - Откройте созданный профиль для редактирования. В разделе Разрешения на объекты назначьте хотя бы
Readдоступ к стандартным объектам и пользовательским объектам, которые вы хотите импортировать в Elasticsearch. -
Убедитесь, что недавно созданный профиль имеет как минимум
Readдоступ к следующим стандартным объектам:- Account
- Campaign
- Case
- Contact
- EmailMessage
- Lead
- Opportunity
-
User
Если используется расширенные правила синхронизации, вам нужно назначить
Readдоступ к этому конкретному объекту в профиле.
- Перейдите в Пользователи ⇒ Профили и назначьте новый профиль пользователю.
-
Перейдите в Подключенные приложения, выберите ваше приложение, а затем выберите Изменить политики. Назначьте поток с клиентскими учетными данными пользователю с пользовательским профилем в Salesforce.
Теперь подключение может быть настроено для этого пользовательского профиля, чтобы извлекать все записи объектов, без необходимости роли системного администратора.
Развертывание с помощью Docker
Самостоятельные подключения выполняются на вашей собственной инфраструктуре.
Вы можете развернуть подключение Salesforce как самостоятельное подключение с помощью 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: salesforce
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.
Настройка
Для настройки этого соединителя требуется следующая информация:
-
domain(обязательно) - Домен вашей учетной записи Salesforce. Это поддомен, который отображается в вашем URL Salesforce. Например, если ваш URL Salesforce —
foo.my.salesforce.com, то ваш домен будетfoo. Если вы используете Salesforce Sandbox, ваш URL будет содержать дополнительный поддомен и будет выглядеть примерно так:foo.sandbox.my.salesforce.com. В этом случае ваш домен будетfoo.sandbox. -
client_id(обязательно) - Идентификатор клиента, сгенерированный подключенным приложением. В документации Salesforce это иногда также называется ключом потребителя
-
client_secret(обязательно) - Секрет клиента, сгенерированный подключенным приложением. В документации Salesforce это иногда также называется секретом потребителя.
-
use_document_level_security -
Переключатель для включения защиты на уровне документа (DLS). Необязательно, по умолчанию отключено. Дополнительную информацию, включая способы настройки различных типов разрешений Salesforce, см. в разделе DLS.
При включении:
- Полные синхронизации будут извлекать списки управления доступом для каждого документа и сохранять их в поле
_allow_access_control. - Синхронизации управления доступом будут извлекать списки управления доступом пользователей и сохранять их в отдельном индексе.
- Полные синхронизации будут извлекать списки управления доступом для каждого документа и сохранять их в поле
Нахождение идентификатора и секрета клиента
Идентификатор и секрет клиента не отображаются автоматически после создания подключенного приложения. Вы можете найти их, выполнив следующие действия:
- Перейдите в Настройка
- Перейдите в Инструменты платформы > Приложения > Управление приложениями
- Щелкните треугольник рядом с вашим приложением и выберите Просмотреть
- После загрузки страницы нажмите Управлять данными потребителя
Теперь идентификатор и секрет клиента должны быть видны в верхней части страницы.
Защита на уровне документа (DLS)
Защита на уровне документа (DLS) позволяет ограничить доступ к документам на основе разрешений пользователя. Эта функция доступна по умолчанию для соединителя Salesforce и поддерживает как стандартные, так и пользовательские объекты.
Salesforce позволяет пользователям задавать разрешения следующим образом:
- Профили
- Наборы разрешений
- Группы наборов разрешений
Для получения руководства обратитесь к этим видеоурокам о настройке разрешений Salesforce.
Для извлечения любого стандартного или пользовательского объекта пользователи должны убедиться, что объекту предоставлено, по крайней мере, разрешение Read. Это можно сделать, используя любой из перечисленных методов настройки разрешений.
Настройка разрешений с помощью профилей
Обратитесь к документации Salesforce для настройки разрешений через профили.
Настройка разрешений с помощью набора разрешений
Обратитесь к документации Salesforce для настройки разрешений через наборы разрешений.
Настройка разрешений с помощью группы наборов разрешений
Обратитесь к документации Salesforce для настройки разрешений через группы наборов разрешений.
Назначение профилей, наборов разрешений и групп наборов разрешений пользователю
После настройки разрешений назначьте профили, наборы разрешений или группы наборов разрешений пользователю. Выполните эти шаги в Salesforce:
- Перейдите к
Administrationв разделеUsers. - Выберите
Usersи выберите пользователя, которому нужно установить разрешения. - Установите созданные ранее
Profile,Permission SetилиPermission Set Groups.
Правила синхронизации
Базовые правила синхронизации одинаковы для всех соединителей и доступны по умолчанию.
Для получения дополнительной информации ознакомьтесь с правилами синхронизации.
Расширенные правила синхронизации
Для применения расширенных правил синхронизации требуется полная синхронизация.
В следующем разделе описаны расширенные правила синхронизации для этого соединителя. Расширенные правила синхронизации позволяют фильтровать данные в Salesforce *до* индексирования в Elasticsearch.
Они принимают следующие параметры:
-
query: Запрос Salesforce для фильтрации документов. -
language: Язык запросов Salesforce. Допустимые значения: SOQL и SOSL.
Извлечение документов на основе указанного запроса и языка
Пример: Извлечение документов с помощью запроса SOQL
[
{
"query": "SELECT Id, Name FROM Account",
"language": "SOQL"
}
] Пример: Извлечение документов с помощью запроса SOSL.
[
{
"query": "FIND {Salesforce} IN ALL FIELDS",
"language": "SOSL"
}
] Извлечение стандартных и пользовательских объектов с помощью запросов SOQL и SOSL
Пример: Извлечение документов для стандартных объектов с помощью запросов SOQL и SOSL.
[
{
"query": "SELECT Account_Id, Address, Contact_Number FROM Account",
"language": "SOQL"
},
{
"query": "FIND {Alex Wilber} IN ALL FIELDS RETURNING Contact(LastModifiedDate, Name, Address)",
"language": "SOSL"
}
] Пример: Извлечение документов для пользовательских объектов с помощью запросов SOQL и SOSL.
[
{
"query": "SELECT Connector_Name, Version FROM Connector__c",
"language": "SOQL"
},
{
"query": "FIND {Salesforce} IN ALL FIELDS RETURNING Connectors__c(Id, Connector_Name, Connector_Version)",
"language": "SOSL"
}
] Извлечение документов со стандартными и пользовательскими полями
Пример: Извлечение документов со всеми стандартными и пользовательскими полями для объекта Account.
[
{
"query": "SELECT FIELDS(ALL) FROM Account",
"language": "SOQL"
}
] Пример: Извлечение документов со всеми пользовательскими полями для объекта Connector.
[
{
"query": "SELECT FIELDS(CUSTOM) FROM Connector__c",
"language": "SOQL"
}
] Пример: Извлечение документов со всеми стандартными полями для объекта Account.
[
{
"query": "SELECT FIELDS(STANDARD) FROM Account",
"language": "SOQL"
}
] Документы и синхронизации
Соединитель синхронизирует следующие объекты Salesforce:
- Accounts
- Campaigns
- Cases
- Contacts
- Content Documents (файлы, загруженные в Salesforce)
- Leads
- Opportunities
Соединитель не будет извлекать объекты, для запроса к которым у него нет разрешений.
- Содержимое файлов размером более 10 МБ по умолчанию не будет извлечено. Используйте службу извлечения локального содержимого для обработки больших бинарных файлов.
- Разрешения по умолчанию не синхронизируются. Вы должны включить защиту на уровне документа. В противном случае все индексированные документы в развертывании Elastic будут видны всем пользователям с доступом к этому развертыванию Elastic.
Типы синхронизации
Полные синхронизации поддерживаются по умолчанию для всех соединителей.
Этот соединитель также поддерживает инкрементные синхронизации.
Извлечение содержимого
Соединитель будет извлекать документы Content Documents из вашего источника Salesforce, если они соответствуют следующим критериям:
- Прикреплены к одному или нескольким синхронизированным объектам
- Имеют тип файла, который можно извлечь
Это означает, что соединитель не будет обрабатывать какие-либо документы содержимого, которые у вас есть и которые не присоединены к поддерживаемому объекту Salesforce. См. документы и синхронизации для списка поддерживаемых типов объектов.
Если один документ содержимого прикреплен к нескольким поддерживаемым объектам, для него будет создан только один документ Elastic. Этот документ сохранит ссылки на каждый объект, к которому он был подключен, в поле related_ids.
См. извлечение содержимого для получения более подробной информации об извлечении содержимого.
Известные проблемы
-
Функция DLS является "уровневой" (type-level), а не "документной" (document-level)
Salesforce DLS, добавленный в 8.13.0, не поддерживает специфические контролы доступа к конкретным объектам Salesforce. Вместо этого, если данный пользователь/группа может получить доступ к любым объектам заданного типа (
Case,Lead,Opportunityи т.д.), этот пользователь/группа будет отображаться в списке\_allow_access_controlдля всех объектов этого типа. См. https://github.com/elastic/connectors/issues/3028 для получения более подробной информации.Обратитесь к известным проблемам соединителей для получения списка известных проблем для всех соединителей.
Безопасность
См. безопасность соединителей.
Фреймворк и исходный код
Этот соединитель построен с использованием фреймворка соединителей Elastic.
Просмотрите исходный код этого соединителя (ветка 8.17, совместимая с Elastic 8.17).
© 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-salesforce.html