Аутентификация и пароли

В YTsaurus пользователь может аутентифицироваться в системе с помощью пароля. Его может изменить администратор или сам пользователь — через страницу изменения пароля или команду set-user-password в YTsaurus CLI.

Выбор имени пользователя

При аутентификации по токену токен подтверждает личность пользователя. Имя пользователя, переданное клиентом отдельно, не заменяет токен: RPC-прокси проверяет, что оно совпадает с пользователем, которому принадлежит токен, и при несовпадении возвращает ошибку Manually specified and authenticated users mismatch.

Переменная окружения YT_USER не является общей настройкой всех клиентов. Её поддержка зависит от клиентской библиотеки и способа подключения.

В таблице описана обычная пользовательская аутентификация.

Клиент или способ подключения Поддержка YT_USER Как выбирается пользователь
CLI yt и Python API с HTTP-прокси Не поддерживается HTTP-прокси определяет пользователя по токену.
Python API с RPC- или native-драйвером Не поддерживается Для явного имени используйте опцию config["driver_user_name"]. При работе через RPC имя должно совпадать с пользователем токена.
Java API ytsaurus-client Поддерживается, если в builder не передан setAuth Клиент использует YT_USER, а если переменная не задана — значение системного свойства Java user.name (System.getProperty("user.name")). Если локальное имя не совпадает с логином в YTsaurus, задайте YT_USER явно.
C++ API yt/cpp/mapreduce Не поддерживается Пользователя определяет токен.
C++ NApi, GetClientOptionsFromEnv Поддерживается только этим способом создания опций Непустое значение YT_USER записывается в TClientOptions::User. Если переменная не задана или пуста, поле остаётся незаданным; системное имя пользователя не используется. RPC-прокси может определить пользователя по токену, а native-подключение требует явного пользователя.

Чтобы проверить, от имени какого пользователя CLI выполняет запросы, настройте прокси и токен, затем запросите имя у сервера:

$ id -un
<local-login>
$ export YT_PROXY=<cluster-name>
$ yt whoami
<your-YT-login>

Команда yt whoami не использует YT_USER. В показанном HTTP-сценарии результат соответствует пользователю, аутентифицированному по токену, и может отличаться от локального имени пользователя.

Установка и смена пароля

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

Администратору не требуется вводить текущий пароль ни при первой установке пароля, ни при последующих его изменениях. Пользователю требуется ввести текущий пароль для его изменения.

Как работает команда set-user-password

Администратор создаёт пользователя oleg и устанавливает ему пароль cone.

$ yt create user --attr '{name=oleg}'
$ yt set-user-password oleg
New password: <interactive typing>
Retype new password: <interactive typing>

Пользователь может сменить пароль на cube командой set-user-password.

$ yt set-user-password oleg
Current password for oleg: <interactive typing>
New password: <interactive typing>
Retype new password: <interactive typing>

Примечание

Все пароли запрашиваются интерактивно без отображения в терминале для обеспечения безопасности. Его надо ввести повторно для подтверждения.

Управление токенами

Для работы с YTsaurus через CLI или через API пользователю нужны токены. Для управления токенами в CLI используйте команды issue-token, revoke-token и list-user-tokens.

Внимание

Управление токенами требует пароля пользователя, но изменение пароля пользователя не приводит к отзыву его токенов. При смене пароля можно изменять токены постепенно.

Если пароль пользователя скомпрометирован, стоит не только изменить пароль, но и отозвать все токены.

issue-token

Команда issue-token выпускает новый токен для пользователя. В отличие от пароля, у пользователя может быть несколько активных токенов для плавного процесса замены одного на другой.

Пользователю oleg выпустили токен ytct-2c59-56daecdff8dd45d2561a8679acf5. Как и в случае команды set-user-password, пользователю нужно ввести пароль (запрашивается интерактивно), администратор же пароль пользователя вводить не должен.

$ yt issue-token oleg
Current password for oleg: <interactive typing>
ytct-2c59-56daecdff8dd45d2561a8679acf5

list-user-tokens

Командой list-user-tokens можно посмотреть информацию об активных токенах пользователя — она вернет sha256-хеши токенов, YTsaurus не сохраняет токены пользователей.

$ yt list-user-tokens oleg
Current password for oleg: <interactive typing>
["87a5d9406ccf6a42cca510d86e43b20e2943aa7ade7e9129f4f4f947e1b02574"]

$ echo -n 'ytct-2c59-56daecdff8dd45d2561a8679acf5' | sha256sum
87a5d9406ccf6a42cca510d86e43b20e2943aa7ade7e9129f4f4f947e1b02574  -

revoke-token

Команда revoke-token отзывает токен пользователя.

Чтобы отозвать токен, укажите его sha256-хеш флагом --token-sha256.
Если флаг не указан, значение токена будет запрошено интерактивно.

Пароль всегда запрашивается интерактивно. --token-sha256 позволяет использовать результат команды list-user-tokens для отзыва конкретных токенов.

$ yt revoke-token oleg --token-sha256 87a5d9406ccf6a42cca510d86e43b20e2943aa7ade7e9129f4f4f947e1b02574
Current password for oleg: <interactive typing>
$ yt revoke-token oleg
Current password for oleg: <interactive typing>
Token to revoke: <interactive typing>
$ yt list-user-tokens oleg
Current password for oleg: <interactive typing>
[]
Предыдущая
Следующая