GrantForge

    Развёртывание и эксплуатация

    Обновление и миграция со старых версий

    Обновление между версиями 2.x и миграция учётных записей, ролей и меню из 1.x (AuthX / GrantForge 1.x).

    Обновление между версиями 2.x

    1. Сделайте резервную копию базы данных (а также plugins/ и configure/).
    2. Остановите сервис: bin/shutdown.sh.
    3. Замените старые lib/ и bin/ на соответствующие каталоги из дистрибутива новой версии.
    4. Запустите сервис: bin/startup.sh. Liquibase автоматически выполнит миграции базы данных новой версии, а проба готовности вернёт 200 только после их завершения.

    При обновлении кластера остановите все экземпляры до запуска новой версии, чтобы старая и новая версии никогда не читали и не записывали данные одновременно. Выпущенные миграции никогда не изменяются, и каждая версия проверяется на всех поддерживаемых базах данных по сценарию «обновление с предыдущей версии».

    Миграция с 1.x

    1.x хранит данные в другом наборе таблиц, и 2.x их не читает. Путь миграции: установите 2.x на новую базу данных и завершите инициализацию, остановите сервис, затем импортируйте учётные записи, роли и меню из старой базы данных в арендатора (tenant):

    # 先预演:只生成报告,不写入
    bin/import-legacy.sh --source-url jdbc:mysql://old-db:3306/authx --source-user authx --tenant default
    # 确认报告后正式导入
    bin/import-legacy.sh --source-url jdbc:mysql://old-db:3306/authx --source-user authx --tenant default --apply

    Обе команды записывают logs/legacy-import-report.json, в котором перечислено, что было (или будет) создано, что пропущено и почему, а также новые идентификаторы, соответствующие каждому объекту из старой системы. Поместите JDBC-драйвер старой базы данных в drivers/ и передайте пароль через GRANTFORGE_LEGACY_SOURCE_PASSWORD (если он не указан, скрипт запросит его). Повторный запуск импорта только достраивает недостающее.

    Правила импорта:

    • Учётные записи сохраняют исходные пароли, которые при первом входе автоматически перехешируются новым алгоритмом. Записи, нарушающие правила имени пользователя в 2.x (3–64 буквы, цифры или ._@-), без пароля или чьё имя уже занято другим арендатором, пропускаются.
    • Роли сохраняют имена; коды приводятся к нижнему регистру (GLY → gly).
    • Меню становятся ресурсами приложения legacy: меню с адресами, содержащими #, становятся группировками, остальные адреса — страницами, а меню под страницей — кнопками. Адрес меню и его HTTP-метод превращаются в API-ресурс api:<方法>:<路径>; адреса, заканчивающиеся на *, становятся <路径>/** и сопоставляются по сегментам пути, а не по символьным префиксам — каждый такой случай перечислен в отчёте для проверки.
    • Мигрируют только явные разрешения: в 1.x доступ к адресам, зарегистрированным как меню, имел любой пользователь, в 2.x — нет.

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