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".