Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.17] ›Ввод контента с помощью коннекторов Elastic ›Справочные материалы по коннекторам

Справочник по коннектору Elastic для SharePoint Online

Ищете коннектор SharePoint Server? См. справочную информацию по SharePoint Server.

Коннектор Elastic для SharePoint Online — это коннектор для Microsoft SharePoint Online.

Этот коннектор написан на Python с использованием фреймворка коннекторов Elastic.

Просмотреть исходный код этого коннектора (ветка 8.17, совместимая с Elastic 8.17).

Выберите справочник по коннектору

Вы используете управляемый коннектор в Elastic Cloud или самостоятельный коннектор? Разверните документацию в зависимости от метода развертывания.

Справочник по управляемому коннектору Elastic

Просмотр справки по управляемому коннектору Elastic
Доступность и предварительные требования

Этот коннектор доступен в качестве управляемого коннектора в версиях Elastic, начиная с 8.9.0 и выше. Чтобы использовать этот коннектор напрямую в Elastic Cloud, выполните все требования к управляемым коннекторам.

Для этого коннектора требуется подписка. Ознакомьтесь с требованиями к этому функционалу в разделе Elastic Search на странице подписок Elastic Stack.

Использование

Чтобы использовать этот коннектор в качестве управляемого коннектора, см. управляемые коннекторы Elastic.

Для дополнительных операций см. Интерфейс коннекторов в Kibana.

Предварительные требования для SharePoint
Создание приложения SharePoint OAuth

Прежде чем вы сможете настроить коннектор, необходимо создать приложение OAuth в платформе SharePoint Online. Ваш коннектор будет аутентифицироваться в SharePoint как зарегистрированное приложение/клиент OAuth. В процессе вы получите значения (client ID, tenant ID и client secret), которые вам понадобятся для этапа настройки в Kibana.

Для начала войдите в SharePoint Online и перейдите в панель администратора. Убедитесь, что вы вошли в систему как учетная запись Azure Portal службы.

Выполните следующие действия:

  • Войдите в https://portal.azure.com/ и щелкните Azure Active Directory.
  • Найдите Регистрации приложений и нажмите Новая регистрация.
  • Присвойте вашему приложению имя, например, "Search".
  • Пока оставьте поле URI перенаправления пустым.
  • Зарегистрируйте приложение.
  • Запишите Идентификатор приложения (клиента) и Идентификатор каталога (арендатора).
  • Создайте сертификат и закрытый ключ. Это можно сделать, например, выполнив команду openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout azure_app.key -out azure_app.crt. Храните оба в безопасном месте.
  • Найдите Сертификаты, перейдя в Данные учетных данных клиента: Сертификаты и секреты.
  • Выберите Загрузить сертификат
  • Загрузите созданный ранее сертификат: azure_app.crt
  • Настройте разрешения, которые приложение OAuth затребует от учетной записи службы Azure Portal.

    • Перейдите в Разрешения API и нажмите Добавить разрешение.
    • Добавьте разрешения для приложений до тех пор, пока список не будет выглядеть следующим образом:

      Graph API
      - Sites.Selected
      - Files.Read.All
      - Group.Read.All
      - User.Read.All
      
      Sharepoint
      - Sites.Selected

      Если значение конфигурации Comma-separated list of sites установлено в * или пользователь включил переключатель Enumerate all sites, для коннектора требуется разрешение Sites.Read.All.

  • Предоставить согласие администратора по ссылке Grant Admin Consent с экрана разрешений.
  • Сохраните имя арендатора (т.е. имя домена) платформы Azure.

Коннектор требует разрешений для приложения. Он не поддерживает делегированные разрешения (области).

Коннектор использует Graph API (стабильная версия v1.0 API) по возможности для извлечения данных из SharePoint Online. В случаях, когда сущности недоступны через Graph API, коннектор использует REST API SharePoint.

Разрешения SharePoint

Microsoft прекращает поддержку Azure Access Control Service (ACS). Это затрагивает конфигурацию разрешений:

  • Арендаторы, созданные после 1 ноября 2024 года: Требуется аутентификация с помощью сертификата.
  • Арендаторы, созданные до 1 ноября 2024 года: Аутентификация на основе секретов должна быть перенесена на аутентификацию с помощью сертификата до 2 апреля 2026 года.
Аутентификация с помощью сертификата

Этот метод аутентификации не требует дополнительной настройки, кроме создания и загрузки сертификатов в приложение OAuth.

Аутентификация с помощью секрета

Этот метод применим только для арендаторов, созданных до 1 ноября 2024 года. Этот метод будет полностью прекращен 2 апреля 2026 года.

Обратитесь к следующей документации для настройки разрешений SharePoint.

  • Чтобы установить DisableCustomAppAuthentication в значение false, подключитесь к SharePoint с помощью PowerShell и выполните set-spotenant -DisableCustomAppAuthentication $false
  • Для назначения полных разрешений арендатору в SharePoint Online перейдите к URL-адресу арендатора в вашем браузере. URL-адрес имеет следующий формат: https://<office_365_admin_tenant_URL>/_layouts/15/appinv.aspx. Это откроет страницу центра администрирования SharePoint.

    • В поле Идентификатор приложения введите идентификатор приложения, который вы записали ранее, и нажмите Поиск. Имя приложения отобразится в поле «Название».
    • В поле Домен приложения введите <tenant_name>.onmicrosoft.com
    • В поле XML-запрос разрешений приложения введите следующую строку XML:

      <AppPermissionRequests AllowAppOnlyPolicy="true">
      <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
      <AppPermissionRequest Scope="http://sharepoint/social/tenant" Right="Read" />
      </AppPermissionRequests>
Назначение разрешений Sites.Selected

Для настройки разрешений Sites.Selected выполните следующие действия в портале Azure Active Directory. Эти разрешения обеспечивают точный контроль доступа к определенным сайтам SharePoint.

  1. Войдите в портал Azure Active Directory.
  2. Перейдите в Регистрации приложений и найдите приложение, созданное для коннектора.
  3. В разделе Разрешения API нажмите Добавить разрешение.
  4. Выберите Microsoft Graph > Разрешения для приложений, а затем добавьте Sites.Selected.
  5. Нажмите Предоставить согласие администратора, чтобы утвердить разрешение.

Обратитесь к официальной документации Microsoft для управления разрешениями в Azure AD.

Для назначения доступа к определенным сайтам SharePoint с использованием Sites.Selected:

  1. Используйте Microsoft Graph Explorer или PowerShell для назначения доступа.
  2. Для получения идентификатора сайта выполните следующий запрос Graph API:

    GET https://graph.microsoft.com/v1.0/sites?select=webUrl,Title,Id&$search="<Name of the site>*"

    Это вернет id сайта.

  3. Используйте id для назначения доступа на чтение или запись:

    POST https://graph.microsoft.com/v1.0/sites/<siteId>/permissions
    {
        "roles": ["read"], // or "write"
        "grantedToIdentities": [
            {
                "application": {
                    "id": "<App_Client_ID>",
                    "displayName": "<App_Display_Name>"
                }
            }
        ]
    }

При использовании поля конфигурации Comma-separated list of sites убедитесь, что указанные сайты соответствуют тем, которым было предоставлено разрешение Sites.Selected в SharePoint. Если поле Comma-separated list of sites установлено в * или переключатель Enumerate all sites включен, коннектор попытается получить доступ ко всем сайтам. Это требует более широких разрешений, которые не поддерживаются с Sites.Selected.

Разрешения API Graph

Microsoft рекомендует использовать API Graph для всех операций с SharePoint Online. API Graph хорошо документирован и более эффективен при извлечении данных, что помогает избежать ограничений по скорости. Обратитесь к политикам ограничений скорости Microsoft для получения дополнительной информации.

Вот краткое описание того, почему мы используем эти разрешения API Graph:

  • Sites.Selected используется для извлечения сайтов и их метаданных
  • Files.Read.All используется для извлечения хранилищ сайтов и файлов в этих хранилищах
  • Groups.Read.All используется для извлечения групп для разрешений на уровне документов
  • User.Read.All используется для извлечения информации о пользователе для разрешений на уровне документов

Из-за того, как разработан API Graph, эти разрешения являются «все или ничего» — в настоящее время невозможно ограничить доступ к этим ресурсам.

Совместимость

Этот коннектор совместим с SharePoint Online.

Настройка

Используйте следующие поля конфигурации для настройки коннектора:

Идентификатор клиента
Идентификатор клиента для учетной записи Azure, на которой размещен экземпляр SharePoint Online.
Название клиента
Название клиента для учетной записи Azure, на которой размещен экземпляр SharePoint Online.
Идентификатор клиента
Идентификатор клиента для аутентификации с SharePoint Online.
Способ аутентификации
Способ аутентификации для подключения к SharePoint Online и API Rest. secret устарел, и рекомендуется использовать certificate.
Значение секрета
Значение секрета для аутентификации с SharePoint Online, если выбран Способ аутентификации: secret.
Содержимое файла сертификата
Содержимое файла сертификата, если выбран Способ аутентификации: certificate.
Содержимое файла закрытого ключа
Содержимое файла закрытого ключа, если выбран Способ аутентификации: certificate.
Список сайтов, разделенный запятыми

Список имен или путей коллекций сайтов для извлечения из SharePoint. При перечислении всех сайтов эти значения должны быть имя сайтов. Используйте *, чтобы включить все доступные сайты. Примеры:

  • collection1
  • collection1,sub-collection
  • *

    Когда не перечисляются все сайты, эти значения должны быть путями (адрес URL после /sites/) сайтов. Примеры:

  • collection1
  • collection1,collection1/sub-collection
Перечислять все сайты?
Если включено, полный список всех сайтов будет извлечен из API в объёме и будет отфильтрован для соответствия настроенному списку имён сайтов. Если отключено, каждый путь в настроенном списке путей к сайтам будет извлекаться из API индивидуально. При отключении этого параметра * не является допустимым для Comma-separated list of sites. Включение этой конфигурации наиболее полезно при синхронизации большого количества (более total/200) сайтов. Это связано с тем, что при высоком объеме данных более эффективно извлекать сайты в объёме. При синхронизации меньшего количества сайтов отключение этой конфигурации может привести к улучшению производительности. Это связано с тем, что при малом объёме данных более эффективно извлекать только необходимые сайты.
Извлекать дочерние сайты настроенных сайтов?
Необходимо ли автоматически извлекать дочерние сайты настроенного сайта(ов). Этот параметр доступен только при отключенном перечислении всех сайтов (см. выше).
Включить безопасность на уровне документов

Включить безопасность на уровне документов (DLS). При включении полные и инкрементные синхронизации будут извлекать списки управления доступом для каждого документа и сохранять их в поле _allow_access_control. Синхронизации управления доступом будут извлекать списки управления доступом пользователей и сохранять их в отдельном индексе.

После включения станут доступны следующие переключатели разрешений на уровне гранул:

  • Извлекать разрешения на элементы хранилища: Включите этот параметр, чтобы извлечь разрешения, специфичные для элементов хранилища.
  • Извлекать уникальные разрешения на страницы: Включите этот параметр, чтобы извлечь уникальные разрешения на страницы. Если этот параметр отключен, страница унаследует разрешения от родительского сайта.
  • Извлекать уникальные разрешения на списки: Включите этот параметр, чтобы извлечь уникальные разрешения на списки. Если этот параметр отключен, список унаследует разрешения от родительского сайта.
  • Извлекать уникальные разрешения на элементы списка: Включите этот параметр, чтобы извлечь уникальные разрешения на элементы списка. Если этот параметр отключен, элемент списка унаследует разрешения от родительского сайта.

    Если оставлено пустым, будет использовано значение по умолчанию true для этих переключателей разрешений на уровне гранул. Обратите внимание, что эти настройки могут увеличить время синхронизации.

Документы и синхронизации

Коннектор синхронизирует следующие типы объектов SharePoint:

  • Сайты (и подсайты)
  • Списки
  • Элементы списка и содержимое вложений
  • Библиотеки документов и содержимое вложений (включая веб-страницы)
  • Содержимое файлов размером более 10 МБ не будет извлекаться. (Самоуправляемые коннекторы могут использовать локальную службу извлечения для обработки больших файлов двоичных данных.)
  • Разрешения по умолчанию не синхронизируются. Включите безопасность на уровне документов (DLS) для синхронизации разрешений.

Делаем содержимое веб-частей страниц сайта SharePoint поиском

Если вы используете веб-части на страницах сайта SharePoint и хотите сделать это содержимое доступным для поиска, вам необходимо обратиться к официальной документации.

Мы рекомендуем установить isHtmlString в True для всех веб-частей, которые должны быть доступны для поиска.

Ограничения
  • В настоящее время коннектор не синхронизирует содержимое сайтов, связанных с Teams.
Правила синхронизации

Базовые правила синхронизации идентичны для всех коннекторов и доступны по умолчанию. Для получения дополнительной информации ознакомьтесь с типами правил синхронизации.

Расширенные правила синхронизации

Для применения расширенных правил синхронизации необходима полная синхронизация.

В этом разделе описаны расширенные правила синхронизации для этого коннектора. Расширенные правила синхронизации определяются через JSON-фрагмент DSL, специфичный для источника.

Расширенные правила для коннектора SharePoint Online позволяют вам избежать извлечения и синхронизации устаревших данных, которые могут быть не актуальны для поиска.

Пример:

{
	"skipExtractingDriveItemsOlderThan": 60
}

Это правило не будет извлекать содержимое элементов хранилища (файлы в библиотеках документов), которые не изменялись в течение 60 дней или более.

Ограничения правил синхронизации с инкрементными синхронизациями

Изменение правил синхронизации после того, как содержимое SharePoint Online уже было проиндексировано, может привести к непредсказуемым результатам при использовании инкрементных синхронизаций.

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

Для предотвращения этих проблем выполните полную синхронизацию после изменения правил синхронизации (базовые или расширенные).

Давайте рассмотрим несколько примеров, где инкрементные синхронизации могут привести к несогласованным данным в вашем индексе.

Пример: добавлено ограниченное базовое правило синхронизации после полной синхронизации

Представьте, что ваше хранилище SharePoint Online содержит следующие элементы хранилища:

/Documents/Report.doc
/Documents/Spreadsheet.xls
/Presentations/Q4-2020-Report.pdf
/Presentations/Q4-2020-Report-Data.xls
/Personal/Documents/Sales.xls

После синхронизации все эти элементы хранилища будут сохранены в вашем индексе Elasticsearch. Давайте добавим базовое правило синхронизации, фильтрующее файлы по их пути:

Exclude WHERE path CONTAINS "Documents"

Эти правила фильтрации исключат все файлы с «Документы» в их пути, оставив только файлы в директории /Presentations:

/Presentations/Q4-2020-Report.pdf
/Presentations/Q4-2020-Report-Data.xls

Если файлы не были изменены, инкрементальная синхронизация не получит информацию об изменениях из SharePoint Online и не сможет удалить какие-либо файлы, оставив индекс в том же состоянии, что и до синхронизации.

После полной синхронизации индекс будет обновлен, и файлы, исключенные правилами синхронизации, будут удалены.

Пример: удаление ограничительных базовых правил синхронизации после полной синхронизации

Представьте, что в SharePoint Online есть следующие элементы каталога:

/Documents/Report.doc
/Documents/Spreadsheet.xls
/Presentations/Q4-2020-Report.pdf
/Presentations/Q4-2020-Report-Data.xls
/Personal/Documents/Sales.xls

Перед выполнением синхронизации мы добавляем ограничительное базовое правило фильтрации:

Exclude WHERE path CONTAINS "Documents"

После полной синхронизации индекс будет содержать только файлы в каталоге /Presentations:

/Presentations/Q4-2020-Report.pdf
/Presentations/Q4-2020-Report-Data.xls

После этого мы можем удалить правило фильтрации и выполнить инкрементальную синхронизацию. Если с файлами не произошло никаких изменений, инкрементальная синхронизация не будет отражать эти изменения в индексе Elasticsearch, так как SharePoint Online не будет сообщать об изменениях в элементах. Только полная синхронизация включит элементы, которые ранее игнорировались правилом синхронизации.

Пример: особый случай правил синхронизации расширенного типа

Правила синхронизации расширенного типа могут применяться для ограничения документов, для которых будет извлечено содержимое. Например, можно установить правило, чтобы документы, которым более 180 дней, не имели извлеченного содержимого.

Однако существует особый случай. Представьте документ, которому 179 дней, и его содержимое извлечено и индексировано в Elasticsearch. Через 2 дня этому документу будет 181 день. Поскольку этот документ уже был обработан, он не будет изменён. Поэтому содержимое не будет удалено из индекса после инкрементальной синхронизации.

В этой ситуации, если вы хотите, чтобы старые документы были удалены, вам необходимо вручную очистить индекс. Например, вы можете вручную запустить запрос Elasticsearch, который удаляет содержимое элементов каталога, которым более 180 дней:

resp = client.update_by_query(
    index="INDEX_NAME",
    conflicts="proceed",
    query={
        "bool": {
            "filter": [
                {
                    "match": {
                        "object_type": "drive_item"
                    }
                },
                {
                    "exists": {
                        "field": "file"
                    }
                },
                {
                    "range": {
                        "lastModifiedDateTime": {
                            "lte": "now-180d"
                        }
                    }
                }
            ]
        }
    },
    script={
        "source": "ctx._source.body = ''",
        "lang": "painless"
    },
)
print(resp)
const response = await client.updateByQuery({
  index: "INDEX_NAME",
  conflicts: "proceed",
  query: {
    bool: {
      filter: [
        {
          match: {
            object_type: "drive_item",
          },
        },
        {
          exists: {
            field: "file",
          },
        },
        {
          range: {
            lastModifiedDateTime: {
              lte: "now-180d",
            },
          },
        },
      ],
    },
  },
  script: {
    source: "ctx._source.body = ''",
    lang: "painless",
  },
});
console.log(response);
POST INDEX_NAME/_update_by_query?conflicts=proceed
{
  "query": {
    "bool": {
      "filter": [
        {
          "match": {
            "object_type": "drive_item"
          }
        },
        {
          "exists": {
            "field": "file"
          }
        },
        {
          "range": {
            "lastModifiedDateTime": {
              "lte": "now-180d"
            }
          }
        }
      ]
    }
  },
  "script": {
    "source": "ctx._source.body = ''",
    "lang": "painless"
  }
}
Безопасность на уровне документа

Безопасность на уровне документа (DLS) позволяет ограничить доступ к документам на основе разрешений пользователя. Эта функция доступна по умолчанию для этого коннектора.

Обратитесь к настройкам на этой странице, чтобы узнать, как включить DLS для этого коннектора.

Обратитесь к DLS в приложениях поиска, чтобы узнать, как импортировать данные из SharePoint Online с включённой DLS при создании приложения поиска.

Извлечение содержимого
Извлечение содержимого по умолчанию

Служба извлечения содержимого по умолчанию работает на основе стандартной конвейерной линии обработки в Enterprise Search. (См. Конвейерные линии обработки для индексов поиска.)

См. Извлечение содержимого.

Локальное извлечение содержимого (для больших файлов)

Самостоятельный коннектор SharePoint Online поддерживает извлечение содержимого больших файлов (> 100 МБ). Это требует:

  • Самостоятельное развертывание службы Elastic Text Extraction Service.
  • Отключение извлечения текста в настройках конвейерной линии обработки по умолчанию.

Дополнительную информацию см. в разделе о локальном извлечении содержимого.

Известные проблемы
  • Неудачная синхронизация документов из-за ограничений файлов и папок SharePoint

    SharePoint имеет ограничения на количество файлов и папок, которые могут быть синхронизированы. Вы можете столкнуться с ошибкой, подобной следующей, записанной в теле документов, которые не удалось синхронизировать: The file size exceeds the allowed limit. CorrelationId: fdb36977-7cb8-4739-992f-49878ada6686, UTC DateTime: 4/21/2022 11:24:22 PM

    Дополнительную информацию об этих ограничениях см. в документации SharePoint.

    • Синхронизация большого количества файлов

      Коннектор не сможет загрузить файлы из папок, которые содержат более 5000 файлов. Порог списка (по умолчанию 5000) — это ограничение, которое предотвращает операции с высоким влиянием на производительность среды SharePoint Online.

      Решение: Уменьшите размер пакета, чтобы избежать этой проблемы.

    • Синхронизация больших файлов

      SharePoint имеет ограничения на размер файлов, но они настраиваются.

      Решение: Увеличьте лимит размера файла. Дополнительную информацию см. в документации SharePoint.

    • Счётчик удалённых документов не обновляется во время инкрементальных синхронизаций

      Если включена настройка Enumerate All Sites?, инкрементальные синхронизации могут не работать как ожидается. Документы элементов каталога, которые были удалены между инкрементальными синхронизациями, могут не быть распознаны как удалённые.

      Решение: Выключите Enumerate All Sites? и настройте полные пути к сайтам для всех необходимых сайтов.

Список известных проблем всех коннекторов см. в разделе о известных проблемах.

Устранение неполадок

См. Устранение неполадок.

Безопасность

См. Безопасность.

Самостоятельный коннектор

Просмотр справки по самоуправляемому соединителю
Доступность и предварительные условия

Этот соединитель доступен в качестве самоуправляемого самоуправляемого соединителя. Чтобы использовать этот соединитель как самоуправляемый соединитель, выполните все требования к самоуправляемым соединителям.

Для этого соединителя требуется подписка. Ознакомьтесь с требованиями к этой функции в разделе Elastic Search страницы подписки на Elastic Stack.

Использование

Чтобы использовать этот соединитель как самоуправляемый соединитель, см. Самоуправляемые соединители. Дополнительные операции см. в Интерфейсе соединителей в Kibana.

Предварительные условия для SharePoint
Создание приложения OAuth SharePoint

Прежде чем вы сможете настроить соединитель, необходимо создать приложение OAuth в платформе SharePoint Online. Ваш соединитель будет аутентифицироваться в SharePoint как зарегистрированное приложение/клиент OAuth. Во время этого процесса вы получите значения (client ID, tenant ID и client secret), которые понадобятся для этапа настройки в Kibana.

Для начала войдите в SharePoint Online и перейдите в свой административный щит. Убедитесь, что вы вошли как учетная запись Azure Portal службы.

Выполните следующие действия:

  • Войдите в https://portal.azure.com/ и перейдите к Azure Active Directory.
  • Найдите Регистрации приложений и нажмите Новая регистрация.
  • Присвойте приложению имя — например, "Поиск".
  • Пока оставьте поле URI перенаправления пустым.
  • Зарегистрируйте приложение.
  • Запишите Идентификатор приложения (клиента) и Идентификатор каталога (арендатора) для дальнейшего использования.
  • Создайте сертификат и закрытый ключ. Это можно сделать, например, выполнив команду openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout azure_app.key -out azure_app.crt. Сохраните оба файла в безопасном месте.
  • Найдите Сертификаты, перейдя в Служебные учетные данные: Сертификаты и секреты.
  • Выберите Загрузить сертификат
  • Загрузите сертификат, созданный на одном из предыдущих шагов: azure_app.crt
  • Настройте разрешения, которые приложение OAuth запросит у учетной записи службы Azure Portal.

    • Перейдите в Разрешения API и нажмите Добавить разрешение.
    • Добавьте разрешения приложения до тех пор, пока список не будет выглядеть следующим образом:

      Graph API
      - Sites.Selected
      - Files.Read.All
      - Group.Read.All
      - User.Read.All
      
      Sharepoint
      - Sites.Selected

      Если настройка Comma-separated list of sites установлена в * или пользователь включил переключатель Enumerate all sites, соединитель требует разрешения Sites.Read.All.

  • Предоставить согласие администратора, используя ссылку Grant Admin Consent с экрана разрешений.
  • Сохраните имя арендатора (т.е. доменное имя) платформы Azure.

Для соединителя требуются разрешения приложения. Он не поддерживает делегированные разрешения (области).

Соединитель использует API Graph (стабильный API v1.0), где это возможно, для получения данных из SharePoint Online. Когда сущности недоступны через API Graph, соединитель использует API SharePoint REST.

Разрешения SharePoint

Microsoft снял с поддержки Azure Access Control Service (ACS). Это влияет на конфигурацию разрешений: * Арендаторы, созданные после 1 ноября 2024 года: Требуется аутентификация по сертификату * Арендаторы, созданные до 1 ноября 2024 года: Аутентификация на основе секретов должна быть переведена на аутентификацию по сертификату к 2 апреля 2026 года

Аутентификация по сертификату

Для этого метода аутентификации не требуется дополнительная настройка, кроме создания и загрузки сертификатов в приложение OAuth.

Аутентификация по секрету

Этот метод применим только к арендаторам, созданным до 1 ноября 2024 года. Этот метод будет полностью удален 2 апреля 2026 года.

Для настройки разрешений SharePoint обратитесь к следующей документации.

  • Чтобы установить DisableCustomAppAuthentication в значение false, подключитесь к SharePoint с помощью PowerShell и выполните set-spotenant -DisableCustomAppAuthentication $false
  • Для назначения полных разрешений арендатору в SharePoint Online перейдите к URL-адресу арендатора в браузере. URL-адрес имеет следующий формат: https://<office_365_admin_tenant_URL>/_layouts/15/appinv.aspx. Это загрузит страницу административного центра SharePoint.

    • В поле Идентификатор приложения введите идентификатор приложения, который вы записали ранее, и нажмите Найти. Имя приложения отобразится в поле Заголовок.
    • В поле Домен приложения введите <tenant_name>.onmicrosoft.com
    • В поле Запрос разрешений приложения в XML введите следующую строку XML:

      <AppPermissionRequests AllowAppOnlyPolicy="true">
      <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
      <AppPermissionRequest Scope="http://sharepoint/social/tenant" Right="Read" />
      </AppPermissionRequests>
Предоставление разрешений Sites.Selected

Чтобы настроить разрешения Sites.Selected, выполните следующие действия в портале Azure Active Directory. Эти разрешения обеспечивают точный контроль доступа к определенным сайтам SharePoint.

  1. Войдите в портал Azure Active Directory.
  2. Перейдите к Регистрациям приложений и найдите приложение, созданное для соединителя.
  3. В разделе Разрешения API нажмите Добавить разрешение.
  4. Выберите Microsoft Graph > Разрешения приложения, затем добавьте Sites.Selected.
  5. Нажмите Предоставить согласие администратора, чтобы одобрить разрешение.

Обратитесь к официальной документации Microsoft для управления разрешениями в Azure AD.

Чтобы назначить доступ к определенным сайтам SharePoint с помощью Sites.Selected:

  1. Используйте Microsoft Graph Explorer или PowerShell для предоставления доступа.
  2. Для получения идентификатора сайта выполните запрос Graph API:

    GET https://graph.microsoft.com/v1.0/sites?select=webUrl,Title,Id&$search="<Name of the site>*"

    Это вернет id сайта.

  3. Используйте id для назначения разрешений чтения или записи:

    POST https://graph.microsoft.com/v1.0/sites/<siteId>/permissions
    {
        "roles": ["read"], // or "write"
        "grantedToIdentities": [
            {
                "application": {
                    "id": "<App_Client_ID>",
                    "displayName": "<App_Display_Name>"
                }
            }
        ]
    }

При использовании поля конфигурации Comma-separated list of sites убедитесь, что указанные сайты соответствуют сайтам, которым предоставлено разрешение Sites.Selected в SharePoint. Если поле Comma-separated list of sites установлено в * или переключатель Enumerate all sites включен, соединитель будет пытаться получить доступ ко всем сайтам. Это требует более широких разрешений, которые не поддерживаются с Sites.Selected.

Разрешения API Graph

Microsoft рекомендует использовать API Graph для всех операций с SharePoint Online. API Graph хорошо документирован и более эффективен при извлечении данных, что помогает избежать ограничения скорости. Обратитесь к политике ограничений скорости Майкрософт для получения дополнительной информации.

Вот краткое описание того, почему мы используем эти разрешения API Graph:

  • Sites.Selected используется для извлечения сайтов и их метаданных
  • Files.Read.All используется для извлечения сетевых дисков и файлов в этих дисках
  • Groups.Read.All используется для извлечения групп для разрешений на уровне документов
  • User.Read.All используется для извлечения информации о пользователях для разрешений на уровне документов

Из-за того, как разработан API Graph, эти разрешения являются «все или ничего» — в настоящее время невозможно ограничить доступ к этим ресурсам.

Совместимость

Этот коннектор совместим с SharePoint Online.

Настройка

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

Эти настраиваемые поля будут отображаться со своими соответствующими метками в пользовательском интерфейсе Kibana. После подключения вы сможете обновить эти значения в Kibana.

Используйте следующие поля конфигурации для настройки коннектора:

tenant_id
Идентификатор арендатора учетной записи Azure, на которой размещен экземпляр SharePoint Online.
tenant_name
Название арендатора учетной записи Azure, на которой размещен экземпляр SharePoint Online.
client_id
Идентификатор клиента для аутентификации с SharePoint Online.
auth_method
Метод аутентификации для подключения к SharePoint Online и API Rest. secret устарел, рекомендуется certificate.
secret_value
Значение секрета для аутентификации с SharePoint Online, если выбран auth_method: secret.
certificate
Содержимое файла сертификата, если auth_method: certificate.
private_key
Содержимое файла закрытого ключа, если auth_method: certificate.
site_collections

Список имен или путей коллекций сайтов для извлечения из SharePoint. При перечислении всех сайтов эти значения должны быть именами сайтов. Используйте * для включения всех доступных сайтов. Примеры:

  • collection1
  • collection1,sub-collection
  • *

    Если перечисление всех сайтов не используется, эти значения должны быть путями (URL после /sites/) сайтов. Примеры:

  • collection1
  • collection1,collection1/sub-collection
enumerate_all_sites

Если включено, полный список всех сайтов будет извлечен из API в пакете и будет отфильтрован для соответствия настроенному списку имен сайтов. Если отключено, каждый путь в настроенном списке путей сайтов будет извлекаться индивидуально из API. Включение этой конфигурации наиболее полезно при синхронизации большого количества (более total/200) сайтов. Это связано с тем, что при больших объемах пакетное извлечение сайтов более эффективно. При синхронизации меньшего количества сайтов отключение этой конфигурации может привести к улучшению производительности. Это связано с тем, что при малых объемах более эффективно извлекать только необходимые сайты.

При отключении * не является допустимой конфигурацией для Comma-separated list of sites.

fetch_subsites
Автоматически извлекать ли дочерние сайты настроенных сайтов. Этот параметр доступен только при отсутствии перечисления всех сайтов (см. выше).
use_text_extraction_service
Переключатель для включения локальной службы извлечения текста для документов. Требует отдельного развертывания службы Elastic Text Extraction Service. Требует, чтобы параметры конвейера приема отключали извлечение текста. Значение по умолчанию — False.
use_document_level_security

Переключатель для включения безопасности на уровне документов (DLS). При включении полные и инкрементные синхронизации будут извлекать списки управления доступом для каждого документа и хранить их в поле _allow_access_control. Синхронизации списков управления доступом будут извлекать списки управления доступом пользователей и хранить их в отдельном индексе.

После включения будут доступны следующие переключатели для уточнения разрешений:

  • Извлечь разрешения на элементы диска: Включите этот параметр, чтобы извлечь разрешения на конкретный элемент диска.
  • Извлечь уникальные разрешения страниц: Включите этот параметр, чтобы извлечь уникальные разрешения на страницу. Если этот параметр отключен, страница унаследует разрешения от родительского сайта.
  • Извлечь уникальные разрешения списков: Включите этот параметр, чтобы извлечь уникальные разрешения на список. Если этот параметр отключен, список унаследует разрешения от родительского сайта.
  • Извлечь уникальные разрешения элементов списка: Включите этот параметр, чтобы извлечь уникальные разрешения на элемент списка. Если этот параметр отключен, элемент списка унаследует разрешения от родительского сайта.

    Если оставить пустым, будет использовано значение по умолчанию true для этих переключателей уточнения разрешений. Обратите внимание, что эти параметры могут увеличить время синхронизации.

Развертывание с помощью Docker

Вы можете развернуть коннектор SharePoint Online как коннектор собственной разработки с помощью 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: sharepoint_online
    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 для получения более подробной информации.

Документы и синхронизации

Коннектор синхронизирует следующие типы объектов SharePoint:

  • Сайты (и подсайты)
  • Списки
  • Элементы списка и вложения контента
  • Библиотеки документов и вложения контента (включая веб-страницы)

Поиск контента веб-частей SharePoint Site Pages

Если вы используете веб-части на страницах SharePoint Site Pages и хотите сделать этот контент доступным для поиска, вам необходимо обратиться к официальной документации.

Мы рекомендуем установить isHtmlString в значение True для всех веб-частей, которые должны быть доступны для поиска.

  • Контент из файлов размером более 10 МБ по умолчанию не будет извлечен. Используйте локальную службу извлечения контента для обработки больших двоичных файлов.
  • Разрешения по умолчанию не синхронизируются. Включите безопасность на уровне документов (DLS) для синхронизации разрешений.
Ограничения
  • Подключение не синхронизирует контент с сайтами, связанными с Teams.
Правила синхронизации

Основные правила синхронизации одинаковы для всех подключений и доступны по умолчанию. Дополнительную информацию можно найти в разделе Типы правил синхронизации.

Расширенные правила синхронизации

Для применения расширенных правил синхронизации требуется полная синхронизация.

В этом разделе описаны расширенные правила синхронизации для этого подключения. Расширенные правила синхронизации определяются с помощью JSON-фрагмента DSL, специфичного для источника.

Расширенные правила для подключения к SharePoint Online позволяют избежать извлечения и синхронизации устаревших данных, которые могут быть больше не актуальны для поиска.

Пример:

{
	"skipExtractingDriveItemsOlderThan": 60
}

Это правило не будет извлекать содержимое элементов хранилища (файлов в библиотеках документов), которые не изменялись в течение 60 дней или более.

Ограничения правил синхронизации с инкрементальными синхронизациями

Изменение правил синхронизации после индексации контента SharePoint Online может привести к непредвиденным результатам при использовании инкрементальных синхронизаций.

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

Чтобы избежать этих проблем, выполните полную синхронизацию после изменения правил синхронизации (основных или расширенных).

Давайте рассмотрим несколько примеров, где инкрементальные синхронизации могут привести к несогласованным данным в вашем индексе.

Пример: Добавление ограниченного основного правила синхронизации после полной синхронизации

Представьте, что хранилище SharePoint Online содержит следующие элементы хранилища:

/Documents/Report.doc
/Documents/Spreadsheet.xls
/Presentations/Q4-2020-Report.pdf
/Presentations/Q4-2020-Report-Data.xls
/Personal/Documents/Sales.xls

После синхронизации все эти элементы хранилища будут сохранены в вашем индексе Elasticsearch. Давайте добавим основное правило синхронизации, фильтрующее файлы по пути:

Exclude WHERE path CONTAINS "Documents"

Эти правила фильтрации исключат все файлы с "Documents" в пути, оставив только файлы в каталоге /Presentations:

/Presentations/Q4-2020-Report.pdf
/Presentations/Q4-2020-Report-Data.xls

Если файлы не были изменены, инкрементальная синхронизация не получит информацию об изменениях от SharePoint Online и не сможет удалить какие-либо файлы, оставив индекс в том же состоянии, что и до синхронизации.

После полной синхронизации индекс будет обновлен, и файлы, исключенные правилами синхронизации, будут удалены.

Пример: Удаление ограниченных основных правил синхронизации после полной синхронизации

Представьте, что хранилище SharePoint Online имеет следующие элементы хранилища:

/Documents/Report.doc
/Documents/Spreadsheet.xls
/Presentations/Q4-2020-Report.pdf
/Presentations/Q4-2020-Report-Data.xls
/Personal/Documents/Sales.xls

Перед выполнением синхронизации добавим ограниченное основное правило фильтрации:

Exclude WHERE path CONTAINS "Documents"

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

/Presentations/Q4-2020-Report.pdf
/Presentations/Q4-2020-Report-Data.xls

После этого мы можем удалить правило фильтрации и запустить инкрементальную синхронизацию. Если с файлами не произошло никаких изменений, инкрементальная синхронизация не отразит эти изменения в индексе Elasticsearch, так как SharePoint Online не сообщит о каких-либо изменениях в элементах. Только полная синхронизация включит элементы, ранее игнорируемые правилом синхронизации.

Пример: Специальный случай с расширенными правилами синхронизации

Расширенные правила синхронизации могут применяться для ограничения документов, для которых будет извлечено содержимое. Например, можно установить правило, чтобы документы старше 180 дней не извлекали содержимое.

Однако есть особый случай. Представьте документ, которому 179 дней, и его содержимое извлечено и индексировано в Elasticsearch. Через 2 дня этому документу будет 181 день. Поскольку этот документ уже был импортирован, он не будет изменён. Поэтому содержимое не будет удалено из индекса после инкрементальной синхронизации.

В этой ситуации, если вы хотите удалить старые документы, вам нужно будет вручную очистить индекс. Например, вы можете вручную запустить запрос Elasticsearch, удаляющий содержимое элементов хранилища старше 180 дней:

resp = client.update_by_query(
    index="INDEX_NAME",
    conflicts="proceed",
    query={
        "bool": {
            "filter": [
                {
                    "match": {
                        "object_type": "drive_item"
                    }
                },
                {
                    "exists": {
                        "field": "file"
                    }
                },
                {
                    "range": {
                        "lastModifiedDateTime": {
                            "lte": "now-180d"
                        }
                    }
                }
            ]
        }
    },
    script={
        "source": "ctx._source.body = ''",
        "lang": "painless"
    },
)
print(resp)
const response = await client.updateByQuery({
  index: "INDEX_NAME",
  conflicts: "proceed",
  query: {
    bool: {
      filter: [
        {
          match: {
            object_type: "drive_item",
          },
        },
        {
          exists: {
            field: "file",
          },
        },
        {
          range: {
            lastModifiedDateTime: {
              lte: "now-180d",
            },
          },
        },
      ],
    },
  },
  script: {
    source: "ctx._source.body = ''",
    lang: "painless",
  },
});
console.log(response);
POST INDEX_NAME/_update_by_query?conflicts=proceed
{
  "query": {
    "bool": {
      "filter": [
        {
          "match": {
            "object_type": "drive_item"
          }
        },
        {
          "exists": {
            "field": "file"
          }
        },
        {
          "range": {
            "lastModifiedDateTime": {
              "lte": "now-180d"
            }
          }
        }
      ]
    }
  },
  "script": {
    "source": "ctx._source.body = ''",
    "lang": "painless"
  }
}
Безопасность на уровне документов

Безопасность на уровне документов (DLS) позволяет ограничивать доступ к документам на основе разрешений пользователя. Эта функция доступна по умолчанию для этого подключения.

См. настройки на этой странице, чтобы узнать, как включить DLS для этого подключения.

См. DLS в приложениях поиска, чтобы узнать, как извлекать данные из SharePoint Online с включенной DLS при создании приложения поиска.

Извлечение контента
Извлечение контента по умолчанию

Служба извлечения контента по умолчанию основана на стандартной конвейерной линии импорта Enterprise Search. (См. Конвейеры импорта для индексов поиска.)

См. Извлечение контента.

Локальное извлечение контента (для больших файлов)

Самостоятельное подключение SharePoint Online поддерживает извлечение контента больших файлов (> 100 МБ). Для этого необходимо:

  • Самостоятельное развертывание службы Elastic Text Extraction Service.
  • Отключить извлечение текста в настройках конвейерной линии импорта по умолчанию.

Дополнительную информацию см. в разделе локального извлечения контента.

Тестирование по всему циклу

Фреймворк подключения позволяет операторам проводить функциональные тесты на реальном источнике данных. Дополнительную информацию см. в разделе тестирование подключений.

Для выполнения E2E-тестирования для подключения SharePoint Online выполните следующую команду:

$ make ftest NAME=sharepoint_online

Для более быстрых тестов добавьте флаг DATA_SIZE=small:

make ftest NAME=sharepoint_online DATA_SIZE=small
Известные проблемы
  • Проблемы с синхронизацией документов из-за ограничений файлов и папок SharePoint

    SharePoint имеет ограничения на количество файлов и папок, которые могут быть синхронизированы. Возможно, вы столкнётесь с ошибкой, подобной следующей, записанной в теле документов, которые не удалось синхронизировать: The file size exceeds the allowed limit. CorrelationId: fdb36977-7cb8-4739-992f-49878ada6686, UTC DateTime: 4/21/2022 11:24:22 PM

    Дополнительную информацию об этих ограничениях см. в документации SharePoint.

    • Синхронизация большого количества файлов

      Подключение не сможет загрузить файлы из папок, содержащих более 5000 файлов. Порог отображения списка (по умолчанию 5000) - это ограничение, предотвращающее операции с высокой производительностью на среде SharePoint Online.

      Решение: Уменьшите размер пакета, чтобы избежать этой проблемы.

    • Синхронизация больших файлов

      SharePoint имеет ограничения на размер файлов, но они настраиваются.

      Решение: Увеличьте ограничение размера файла. Дополнительную информацию см. в документации SharePoint.

    • Счётчик удалённых документов не обновляется при инкрементальных синхронизациях

      Если конфигурация Enumerate All Sites? включена, инкрементальные синхронизации могут работать не так, как ожидается. Документы элементов хранилища, которые были удалены между инкрементальными синхронизациями, могут не быть обнаружены как удалённые.

      Решение: Отключите Enumerate All Sites? и настройте полные пути к сайтам для всех необходимых сайтов.

Обратитесь к Известным проблемам для получения списка известных проблем всех соединителей.

Устранение неполадок

См. Устранение неполадок.

Безопасность

См. Безопасность.

© 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-sharepoint-online.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API