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

Для аутентификации пользователей в YTsaurus для пользователя может быть установлен пароль, при помощи которого пользователь получает доступ к системе. Пароль пользователя может быть изменён администратором системы или самим пользователем. Для управления паролем можно использовать страницу изменения пароля или команду set-user-password в YTsaurus CLI.

После создания пользователя пароль для него не установлен, поэтому первый пароль устанавливает администратор. Рассмотрим пример.

yt create user --attr '{name=oleg}'
yt set-user-password oleg --new-password cone

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

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

yt set-user-password oleg --current-password cone --new-password cube

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

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

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

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

yt issue-token oleg --password cone
"2c5956daecdff8dd45d2561a8679acf5"

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

При помощи команды list-user-tokens можно посмотреть список активных токенов пользователя.

yt list-user-tokens oleg --password cone
["87a5d9406ccf6a42cca510d86e43b20e2943aa7ade7e9129f4f4f947e1b02574"]

Важно, что YTsaurus не сохраняет токены пользователей, в частности, команда list-user-tokens возвращает не токены, а их sha256-хеши. Действительно,

echo -n '2c5956daecdff8dd45d2561a8679acf5' | sha256sum
87a5d9406ccf6a42cca510d86e43b20e2943aa7ade7e9129f4f4f947e1b02574  -

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

yt revoke-token oleg --token-sha256 87a5d9406ccf6a42cca510d86e43b20e2943aa7ade7e9129f4f4f947e1b02574  --password cube
yt revoke-token oleg --token 2c5956daecdff8dd45d2561a8679acf5  --password cube
yt list-user-tokens oleg --password cube
[]

Несмотря на то, что управление токенами требует пароля пользователя, изменения пароля пользователя не приводит к отзыву его токенов, что позволяет изменять токены постепенно при смене пароля. В случае, если пароль пользователя скомпрометирован, стоит не только изменить пароль, но и отозвать все токены.