Перейти к содержанию

LUNA PLATFORM v.5.30.0#

Изменения

  • Добавлен новый механизм для реализации ролевой модели в LP 5. Он предоставляет возможность создать аккаунты с определённой зоной видимости данных и выпускать для них токены с разграничением прав на доступ к ресурсам LP в рамках аккаунта, для которого создан токен.

    Теперь для большинства запросов требуется обязательное наличие аккаунта, кроме запросов, не предполагающих авторизации.

    Все аккаунты, созданные с помощью сервиса Admin будут автоматически мигрированы. Для сохранения возможности работы с ранее созданными с помощью заголовка "Luna-Account-Id" данными нужно создать новый аккаунт, указав при создании использованный ранее "account_id". Для сервиса Backport 3 необходимо отдельно запустить скрипт миграции.

    См. подробное описание о новой системе авторизации и о миграции аккаунтов ниже или в разделе "Аккаунты, токены и способы авторизации" руководства администратора.

    Аккаунты

    Аккаунт необходим для разграничения областей видимости объектов для конкретного пользователя. Каждый созданный аккаунт имеет свой собственный уникальный идентификатор "account_id". Все данные аккаунтов сохраняются в БД сервиса Accounts под этим идентификатором.

    Аккаунт можно создать с помощью POST запроса "create account" к сервису API, либо с помощью запроса "register account" к сервису Admin, либо с помощью пользовательского интерфейса Admin. При создании аккаунта необходимо указать следующие данные: login (email), password и account type (тип аккаунта).

    Тип аккаунта определяет, какие данные доступны пользователю. Существует три типа аккаунтов:

    • user — тип аккаунта, с помощью которого можно создавать объекты и использовать только данные своего аккаунта.
    • advanced_user — тип аккаунта, для которого доступны права, аналогичные "user", а также есть доступ к данным всех аккаунтов. Доступ к данным других аккаунтов означает возможность получать данные (запросы GET), проверять их наличие (запросы HEAD) и выполнять запросы на сравнение по данным других аккаунтов.
    • admin — тип аккаунта, для которого доступны права, аналогичные "advanced_user", а также есть доступ к сервису Admin (см. "Сервис Admin" ниже)

    С помощью заголовка "Luna-Account-Id" в запросе "create account" можно задать желаемый идентификатор аккаунта. Также его необходимо использовать в случае, если необходимо сохранить возможность работы с данными, созданными в версиях LP до 5.30.0 (см. "Миграция аккаунтов с предыдущих сборок LP 5" ниже).

    Токены

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

    Токен и все его разрешения сохраняются в БД и привязываются к аккаунту по параметру "account_id".

    При создании токена доступно задание следующих параметров:

    • expiration_time – время окончания действия токена в формате RFC 3339. Можно указать бесконечное время действия токена с помощью значения "null"
    • permissions – разрешения, которые доступны пользователю
    • visibility_area – видимость токеном данных других аккаунтов (см. раздел "Просмотр данных других аккаунтов" в руководстве администратора)

    См. список всех разрешений и подробную информацию по токенам в разделе "Разрешения, задаваемые в токене" руководства администратора.

    Типы авторизации для доступа к ресурсам

    В LUNA PLATFORM доступно три типа авторизации:

    • BasicAuth. Авторизация по логину и паролю (задаются во время создания аккаунта).
    • BearerAuth. Авторизация по JWT токену (выдается после создания токена).
    • LunaAccountIdAuth. Авторизация по заголовку "Luna-Account-Id", в котором указывается сгенерированный после создания аккаунта "account_id" (данный способ был принят за основной до версии 5.30.0).

    Авторизация LunaAccountIdAuth имеет наименьший приоритет по сравнению с другими способами и может быть отключена с помощью настройки "ALLOW_LUNA_ACCOUNT_AUTH_HEADER" в секции "OTHER" настроек сервиса API в Configurator (по умолчанию включена). В спецификации OpenAPI заголовок "Luna-Account-Id" помечен словом Deprecated.

    Сервис Admin

    Аккаунтом по-прежнему можно управлять с помощью сервиса Admin. Пользовательский интерфейс сервиса был обновлен. Теперь диалог создания аккаунта содержит расширенный набор полей.

    Старый аккаунт администратора преобразован в аккаунт с типом "admin". Логин по умолчанию теперь root@visionlabs.ai вместо root.

    При установке с нуля для сервиса Admin больше не создается БД. Теперь данные аккаунтов хранятся в БД Accounts (см. ниже "Миграция БД Admin").

    Миграция аккаунтов с предыдущих сборок LP 5

    Ранее аккаунт создавался с помощью ресурса "/accounts" сервиса Admin или пользовательского интерфейса сервиса Admin.

    Все аккаунты, созданные до текущей версии будут автоматически мигрированы при обновлении на актуальную версию. Аккаунту администратора будет присвоен тип "admin", а аккаунтам, создаваемым при запросе к ресурсу "/accounts" будет присвоен тип "advanced_user". В качестве логина и пароля будет использован почтовый адрес. Имя организации будет записано в поле "description".

    Также ранее можно было выполнять запросы к сервисам LP 5 с помощью указания идентификатора "account_id" в заголовке "Luna-Account-Id". Для того, чтобы сохранить возможность работы с данными, созданными ранее с помощью указания идентификатора "account_id" в заголовке "Luna-Account-Id", необходимо в запросе создания аккаунта "create account" указать "login", "password", "account_type" и старый идентификатор "account_id" в заголовке "Luna-Account-Id" запроса. Таким образом, старый "account_id" привяжется к создаваемому аккаунту.

    Миграция БД Admin

    Ранее данные об аккаунтах хранились в БД Admin.

    Если LP разворачивается впервые, то будет создана БД Accounts с которой взаимодействует сервис Accounts. Если LP обновляется с версии 5.28.0 и меньшей, то БД Admin будет преобразована для работы с аккаунтами, а сервис Admin больше не будет взаимодействовать с базой данных Admin.

    В руководство по обновлению LP 5 с предыдущей версии добавлен раздел "Преобразование БД Admin", а также раздел "Создание аккаунта с помощью сервиса API", где приведен пример CURL-запроса для создания нового аккаунта и миграции аккаунта, если его "account_id" использовался в заголовке "Luna-Account-Id" без создания аккаунта в сервисе Admin.

    Миграция аккаунтов с предыдущих версий Backport 3

    При обновлении с предыдущей версии Backport 3 для миграции аккаунтов нужно дополнительно запустить скрипт миграции после миграции базы данных Backport 3 (см. раздел "Миграция аккаунтов и токенов" в руководстве по обновлению LP 5 с предыдущей версии).

    Миграция аккаунтов с LP 3.3.8

    При обновлении с LUNA PLATFORM 3.3.8 миграция аккаунтов будет выполнена при запуске скрипта "start_migration.py" (см. раздел "Описание скрипта миграции" в руководстве по миграции с LUNA PLATFORM 3.3.8).

    Миграция аккаунтов с LP 4.5.4

    При обновлении с LUNA PLATFORM 4.5.4 миграция аккаунтов выполняется аналогично описанию из пунктов "Миграция аккаунтов с предыдущих сборок LP 5" и "Миграция БД Admin" выше. В руководство по миграции с LUNA PLATFORM 4.5.4 добавлен раздел "Преобразование БД Admin", а также раздел "Создание аккаунта с помощью сервиса API", где приведен пример CURL-запроса для создания нового аккаунта и миграции аккаунта, если его "account_id" использовался в заголовке "Luna-Account-Id" без создания аккаунта в сервисе Admin.

    Сервис Backport 4

    В API Backport 4 добавлена возможность авторизации по логину и паролю (BasicAuth) и по индентификатору аккаунта (LunaAccountIdAuth). Авторизация по токену (BearerAuth) невозможна.

    Для сервиса User Interface 4 теперь используется авторизация по логину и паролю (параметр "BASIC_AUTH" в .env-файле) вместо "account_id" (параметр "LUNA_ACCOUNT_ID" в .env-файле). Логин и пароль нужно указывать в формате login:password в Base64.

  • Количество получаемых и удаляемых лиц, задач, обработчиков, событий и настроек LP, задаваемых в параметрах "page_size" различных ресурсов и сервисов, увеличено с 100 до 1000.

  • Обновлена обработка входящих URL-адресов в запросе на создание задачи Estimator с ZIP-архивом в качестве источника изображений. Eсли в указанном URL-адресе содержится адрес сервиса API, заданный в новой настройке "EXTERNAL_LUNA_API_ADDRESS" в сервисе Configurator, объекты будут загружаться с помощью сервиса Image Store напрямую, а не отправлять запрос в сервис API с последующим перенаправлением в сервис Image Store.

  • В настройки сервисов Handlers и Tasks добавлена новая секция "EXTERNAL_LUNA_API_ADDRESS", предназначенная для корректной обработки ссылок на объекты, созданные с помощью ресурсов "/images" и "/objects" в сервисе API. В данной секции задается адрес и версия API сервиса API.

    Если в качестве входных данных для ресурсов "/detector", "handlers/{handler_id}/events", "/iso", "/sdk" и "verifiers/{verifier_id}/verification" указывается URL-адрес и версия сервиса API объекта типа "images", совпадающие с адресом и версией API из секции "EXTERNAL_LUNA_API_ADDRESS" сервиса Handlers, то данные объекты будут загружаться с помощью сервиса Image Store напрямую, а не отправлять запрос в сервис API с последующим перенаправлением в сервис Image Store.

    Если параметре "content" > "source" > "reference" ресурса "/tasks/estimator" указывается URL-адрес и версия сервиса API до объекта типа "object" (ZIP-архив), совпадающие с адресом и версией API из секции "EXTERNAL_LUNA_API_ADDRESS" сервиса Tasks, то данный объект будет загружаться с помощью сервиса Image Store напрямую, а не отправлять запрос в сервис API с последующим перенаправлением в сервис Image Store.

    Пример формата: http://10.15.3.144:5000/6/images/141d2706-8baf-433b-82eb-8c7fada847da, где значение http://10.15.3.144:5000 должно совпадать со значением из настройки "origin", а значение 6 должно совпадать со значением настройки api_version секции "EXTERNAL_LUNA_API_ADDRESS".

    Для избежания ошибок необходимо настроить данную секцию в настройках Handlers или Tasks перед использованием URL-адресов до объектов типа "objects" или "images" в качестве источника входных данных.

  • Обновлены библиотеки вендора для HASP ключа и HASP утилита.

    Теперь вместо библиотек haspvlib_x86_64_111186.so и haspvlib_111186.so используются библиотеки haspvlib_x86_64_30147.so и haspvlib_30147.so, а вместо HASP утилиты aksusbd-8.23-1.x86_64.rpm используется утилита aksusbd-8.43-1.x86_64.rpm.

    При обновлении на новую сборку LP требуется удалить старые библиотеки и утилиту HASP и установить новые. Сервис Licenses не запустится, если использована утилита и библиотеки предыдущих версий.

    Требуется обратиться в техническую поддержку для перевыпуска ключа LUNA PLATFORM 5.

Исправленные ошибки

  • Исправлена ошибка, при которой на запрос к ресурсу "4/healthcheck" возвращалась ошибка "Internal server error" при отключенном сервисе Tasks в секции ADDITIONAL_SERVICES_USAGE сервиса Configurator.

  • Исправлена ошибка, при которой на запрос к ресурсу "/luna_sys_info" возвращалась ошибка "Internal server error", если в лицензионном файле отсутствовала функция выполнения проверок изображений на соответствие стандартам в ресурсах "/iso", "/detector", "/handlers" и "/verifiers".

  • Исправлена ошибка в спецификации OpenAPI, при которой в схемах ответа на запросы "get task result" и "generate events" отображался тип Nullable для некоторых порогов "face_quality".