GrantForge

    Поисковые движки

    Apache Solr

    Установка и настройка плагина сервиса Solr, подключение к одному или нескольким узлам, вход по basic-аутентификации или JSON Web Token, поиск коллекций и их путей запросов и управление тем, кто что может запрашивать, обновлять и администрировать.

    Плагин Solr находит коллекции и пути запросов внутри них и управляет политиками доступа к тому, что решает Solr: запросам, обновлению, чтению и изменению схем и конфигураций, администрированию коллекций и кластера. Идентификатор плагина и тип сервиса — solr. Плагин сервиса работает в сервере GrantForge; политики применяет агент Solr, установленный в узлах.

    Интеграционные тесты Testcontainers в репозитории охватывают узлы SolrCloud версий Solr 9.8.1, 9.10.1, 9.11.0 и 10.0.0; это не означает сертификацию всех остальных версий.

    Установка

    Дистрибутив содержит плагин в plugins/solr. Убедитесь в Управление платформой → Плагины, что solr включён; после обновления заново просканируйте каталог плагинов. Плагин обращается к узлам через HTTP-клиент JDK из SolrJ 9.11 в отдельном загрузчике классов.

    Добавление сервиса данных

    1. Откройте Права на данные → Сервисы данных, добавьте сервис и выберите Apache Solr (solr).
    2. Укажите базовый URL одного узла или нескольких.
    3. Выберите, как входит пользователь для поиска, введите его учётные данные, проверьте подключение и сохраните сервис. Проверка входит в систему и описывает кластер: версию Solr, работает ли он в режиме SolrCloud и сколько в нём коллекций.

    Пользователь для поиска позволяет GrantForge находить ресурсы; он не связан с пользователями, которые выполняют запросы и обновления. Успешная проверка подключения не означает, что доступ уже подчиняется политикам.

    Параметр Назначение
    solr.urls Обязательный: базовый URL узла, например https://solr1.example.com:8983/solr; несколько через запятую, по очереди, если узел недоступен
    authentication none (по умолчанию), basic или jwt
    username, password basic: пользователь для поиска и его пароль; пароль хранится в зашифрованном виде
    token jwt: JSON Web Token пользователя для поиска; хранится в зашифрованном виде
    javax.net.ssl.trustStore, javax.net.ssl.trustStorePassword, javax.net.ssl.trustStoreType https: хранилище доверенных сертификатов на сервере GrantForge, по которому проверяются сертификаты узлов, его пароль и тип, по умолчанию PKCS12; пусто — хранилище JVM
    timeout Сколько может длиться запрос, по умолчанию 30000, диапазон 1..600000 миллисекунд

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

    Что видит пользователь для поиска

    Список коллекций — это право Solr collection-admin-read, а пути запросов коллекции берутся из её конфигурации, config-read. Выдайте их пользователю для поиска в собственных правилах Solr или, после установки агента, admin_read на кластере и config_read на коллекциях. Пути коллекций, которые пользователь для поиска видеть не может, в подсказки не попадают. У узла без SolrCloud вместо коллекций есть ядра (cores), и плагин показывает их как коллекции.

    Ресурсы и типы доступа

    Уровень Сопоставление Типы доступа
    collection Шаблон, с учётом регистра; имя коллекции query, update, schema_read, schema_edit, config_read, config_edit, admin_collection
    path Шаблон, с учётом регистра; внутри коллекции; путь запроса, например /select, /export или /update/json query, update, schema_read, schema_edit, config_read, config_edit
    cluster Единственное значение, * health, metrics, admin_read, security, admin
    Тип доступа Права Solr Включает
    query read: поиск, получение, экспорт —
    update update —
    schema_read, schema_edit schema-read, schema-edit schema_edit включает schema_read
    config_read, config_edit config-read, config-edit config_edit включает config_read
    admin_collection collection-admin-read и collection-admin-edit запросов Collections API, называющих коллекцию: создание, перезагрузка, резервное копирование, удаление и т. п. query, update, schema_edit, config_edit
    health, metrics health, metrics-read —
    admin_read collection-admin-read всего кластера, core-admin-read, zk-read, filestore-read, package-read, а также чтение конфигурации и схемы узлов health, metrics
    security security-read, security-edit —
    admin Всё admin_read, security, admin_collection

    Запрос к коллекции решается на коллекции и на коллекции с её путём запроса, и запрет на любом из них отклоняет его; так политика может разрешить коллекцию и запретить её обработчик /export или разрешить обновление только через /update*. Запросу к нескольким коллекциям нужна каждая из них. Внутри коллекции путь запроса — это обработчик, которому Solr передаёт запрос, в именовании Solr.

    Запросу Collections API, называющему коллекции параметром name или collection, нужен admin_collection на каждой из них; поэтому политика на team-* позволяет команде создавать коллекции, имя которых начинается с team-, перезагружать, копировать и удалять их, но никакие другие. Запрос, не называющий ни одной, например список всех коллекций, относится к кластеру. admin на кластере даёт всё, как собственное право Solr all. В значениях политик * соответствует любой последовательности символов, а ? — одному символу. Редактор политик подсказывает коллекции и пути запросов коллекций, названных в политике.

    Адреса клиентов

    Элемент политики может действовать только для некоторых клиентов: его условие Адреса клиентов (ip-range) принимает адреса и диапазоны, например 10.1.0.0/16 или 2001:db8::/32. Имена хостов не разрешаются. За обратным прокси клиентом считается прокси, если агент ему не доверяет; если доверяет, клиент — это последний адрес в X-Forwarded-For, добавленный не доверенным прокси, так что клиент не может выдать себя за произвольный адрес.

    Пример политик

    Пусть в кластере есть коллекции sales и hr. Создайте в одном сервисе данных такие включённые политики доступа:

    Ресурсы Правило
    collection=sales Разрешить query группе analysts
    collection=sales, path=/export Запретить query пользователю alice
    collection=sales, path=/update* Разрешить update пользователю ingest
    collection=team-* Разрешить admin_collection группе search-team
    cluster=* Разрешить metrics и health пользователю monitoring
    collection=hr Разрешить query группе hr-staff из 10.0.0.0/8
    cluster=* Разрешить admin группе solr-admins

    Когда агент применит новый снимок, участники analysts запрашивают sales, а alice — всё, кроме обработчика экспорта; ingest обновляет sales через обработчики обновления и не может её запрашивать; участники search-team создают и администрируют свои коллекции team-; monitoring читает метрики и состояние; участники hr-staff запрашивают hr только из внутренней сети; участники solr-admins могут всё.

    Применение политик

    Плагин сервиса управляет политиками и находит ресурсы. Для их применения нужен агент Solr в каждом узле. Развёртывание и проверки описаны в агенте Solr.

    Связанные руководства

    Редактировать эту страницу на GitHub