Управление пользователями из командной строки

Команда prostore user создает, изменяет и удаляет пользователей Tengri напрямую в каталоге метаданных, без подключения к работающему серверу. Она нужна, когда войти в систему нельзя или неудобно: при первоначальной настройке, при потере доступа администратора, для массовых операций из скриптов.

В остальных случаях пользователями удобнее управлять через SQL (CREATE USER, ALTER USER, DROP USER) или раздел настроек веб-интерфейса.

Командная строка работает с каталогом от имени администратора и не проверяет привилегии. Любой, кто может ее запустить с доступом к каталогу, может создать администратора или сменить его пароль. Ограничьте доступ к серверам Tengri и к базе данных каталога.

Подключение к каталогу

Каждая команда требует строку подключения к каталогу метаданных. Ее можно передать параметром --catalog-uri или переменной окружения TNGRI_CATALOG_URI (TENGRI_CATALOG_URI тоже принимается):

export TNGRI_CATALOG_URI=postgresql://prostore:prostore@<IP_КАТАЛОГА>:5432/prostore
prostore user list

Это та же строка, что используется при запуске сервера, см. Настройка параметров через переменные окружения.

Команды

Команда Назначение

list

Вывести список пользователей.

create

Создать пользователя.

edit

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

delete

Безвозвратно удалить пользователя.

mint-recovery

Выпустить токен восстановления доступа.

Список пользователей

prostore user list

Выводит имя, дату создания и пул по умолчанию для каждого пользователя, включая встроенных служебных пользователей (см. Встроенные пользователи). ИИ-агенты в список не входят.

Создание пользователя

Параметр Описание

--username

Имя пользователя. Обязательный.

--password

Пароль для входа по паролю.

--pool

Пул вычислителей по умолчанию.

--sso-idp

Поставщик SSO, через которого пользователь будет входить.

--sso-subject-id

Идентификатор пользователя у поставщика SSO (NameID). Без него вход через SSO не работает.

Пользователь с паролем:

prostore user create --username alice --password '<пароль>' --pool default

Пользователь, который входит только через SSO:

prostore user create --username bob \
  --sso-idp corp-saml \
  --sso-subject-id bob@example.com

Новый пользователь получает те же стандартные права, что и пользователь, созданный через SQL.

Если не задан ни пароль, ни SSO, пользователь создается, но войти не сможет — команда предупредит об этом. Способ входа можно добавить позже командой edit.

Правила сложности паролей из парольной политики (см. Парольная политика и защита доступа) к паролям, заданным из командной строки, не применяются. Кроме того, пароль, заданный при создании, не попадает в историю паролей и не отсчитывает срок действия — это происходит только при смене пароля командой edit или средствами SQL.

Изменение пользователя

Команда edit меняет только переданные параметры, остальное остается как было.

Параметр Описание

--username

Пользователь, которого нужно изменить. Обязательный.

--rename

Новое имя пользователя. Права при этом не переносятся, см. предупреждение ниже.

--password

Новый пароль. Включает вход по паролю и снимает блокировку учетной записи.

--pool

Новый пул по умолчанию. Пустая строка '' снимает пул.

--active / --inactive

Разрешить или запретить вход в учетную запись.

--enable-password / --disable-password

Включить или выключить вход по паролю, не меняя сам пароль. Включить можно только если пароль уже задан.

--enable-sso / --disable-sso

Включить или выключить вход через SSO.

--sso-idp

Назначить или сменить поставщика SSO.

--sso-subject-id

Назначить или сменить идентификатор пользователя у поставщика SSO.

--ldap-idp, --ldap-principal

Связать пользователя с учетной записью LDAP. Указываются вместе.

--enable-ldap / --disable-ldap

Включить или выключить вход через LDAP. Пока он включен, вход по паролю выключен.

--unlink-ldap

Снять связь с LDAP и вернуть вход по паролю.

Параметры LDAP требуют мастер-ключ в переменной окружения TNGRI_MASTER_KEY. Порядок связывания и включения входа через LDAP описан в разделе о связывании через командную строку.

Типовые действия

Сбросить пароль и разблокировать учетную запись после серии неудачных входов:

prostore user edit --username alice --password '<новый пароль>'

Запретить вход, не удаляя пользователя:

prostore user edit --username alice --inactive

Перевести пользователя с пароля на SSO:

prostore user edit --username alice \
  --sso-idp corp-saml --sso-subject-id alice@example.com \
  --enable-sso --disable-password

Переименование из командной строки не переносит роли и привилегии пользователя: они остаются закрепленными за старым именем. Переименованный пользователь теряет свои права, а новый пользователь, созданный со старым именем, получит их. Переименовывайте пользователей командой SQL ALTER USER <имя> RENAME TO <новое имя> — она переносит права.

Смена пароля снимает и блокировку после неудачных входов, и запрет входа, заданный --inactive. Чтобы сменить пароль заблокированного пользователя и оставить его заблокированным, передайте оба параметра в одной команде:

prostore user edit --username alice --password '<новый пароль>' --inactive

Удаление пользователя

prostore user delete --username alice

Удаление безвозвратно: вместе с пользователем удаляются его токены API, секреты, история паролей и выданные ему права. Команда запрашивает подтверждение; параметр --yes пропускает его, например в скриптах.

Если пользователя нужно лишь временно отключить, используйте edit --inactive.

Выпуск токена восстановления

prostore user mint-recovery --username admin

Команда выводит токен один раз; сохраните его вне Tengri. Как и когда им пользоваться, описано в чек-листе восстановления доступа.

Встроенные пользователи

При каждом запуске сервер проверяет, что существуют встроенные пользователи: администратор admin и служебные пользователи подсистем — compaction, webapp, mcp, monkey, seed. Недостающие создаются заново.

Не переименовывайте и не удаляйте встроенных пользователей.

  • После следующего перезапуска на месте переименованного или удаленного admin появится новый admin с паролем по умолчанию.

  • Права администратора системы привязаны к имени admin: переименованная учетная запись их теряет.

  • Служебные пользователи будут созданы заново, а их подсистемы продолжат работать под новыми учетными записями.

Чтобы защитить учетную запись admin, смените ее пароль и выпустите для нее токен восстановления.