Аутентификация по паролю
Пользователи ADQM могут быть аутентифицированы по паролю. Поддерживаются следующие методы аутентификации по паролю, которые отличаются тем, как пароль хранится на сервере ADQM и передается во время соединения:
-
sha256_password — ADQM хранит хеш пароля, вычисленный по алгоритму SHA-256. Для дополнительной защиты можно использовать соль (SALT) — случайную строку, добавляемую в начало или конец пароля перед тем, как передать его в хеш-функцию.
-
double_sha1_password — ADQM хранит пароль в виде хеша, вычисленного по алгоритму double SHA-1 (для совместимости с MySQL).
-
plaintext_password — пароль хранится в незашифрованном виде. Поскольку этот метод является небезопасным, используйте его только если соединение с ADQM защищено шифрованием SSL.
-
no_password — пользователь может подключаться к ADQM без пароля.
Пароль пользователя назначается при выполнении запроса CREATE USER
/ALTER USER
или через конфигурационный файл users.xml.
Установка паролей пользователей
sha256_password
Чтобы использовать алгоритм SHA-256 для хеширования пароля пользователя, можно указать его одним из следующих способов:
-
назначить пароль в виде строки — ADQM автоматически вычислит хеш для введенной строки с помощью алгоритма SHA-256 и сохранит его;
-
передать в ADQM хеш, предварительно получив его для строки пароля.
Указать строку пароля
Используйте один из следующих запросов, чтобы назначить пароль пользователю в виде строки:
CREATE USER <user_name> IDENTIFIED WITH sha256_password BY '<user_password>';
CREATE USER <user_name> IDENTIFIED BY '<user_password>'
При выполнении этих запросов ADQM добавит произвольное значение SALT к введенному паролю пользователя, захеширует получившееся значение и сохранит хеш и значение SALT.
Запрос:
CREATE USER andrew IDENTIFIED BY 'qwerty';
Вывод на экран:
CREATE USER andrew IDENTIFIED WITH sha256_hash BY 'E422256F5E13AB9C590BAFE5A91592BCF2417E8F992D1C74B9CF138C4D3646FF' SALT '1EE6C0E7CA2F95253F6F0A5C2855AB4D7C00F55AB0BA83E5AB0ED505F168CC06' Query id: e1de17ec-74fb-4b0a-ad25-e5ef2199d727 Ok. 0 rows in set. Elapsed: 0.001 sec.
Чтобы подключаться к ADQM от имени этого пользователя, необходимо указать заданный пароль:
$ clickhouse-client --user andrew --password qwerty
Указать хеш строки пароля
Чтобы назначить пароль пользователю в виде хеша, используйте следующий запрос:
CREATE USER <user_name> IDENTIFIED WITH sha256_hash BY '<hash>';
Если при вычислении хеша использовалась соль, хеш и соль передаются в запрос следующим образом:
CREATE USER <user_name> IDENTIFIED WITH sha256_hash BY '<hash>' SALT '<salt>';
Сгенерируйте хеш для строки qwerty
:
$ PASSWORD="qwerty"; echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
Вывод на экран (первая строка — пароль, вторая — хеш):
qwerty 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5
При создании учетной записи пользователя передайте сгенерированный хеш:
CREATE USER alex IDENTIFIED WITH sha256_hash BY '65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5';
Убедитесь, что можно подключиться к ADQM от имени созданного пользователя, используя пароль qwerty
:
$ clickhouse-client --user alex --password qwerty
Указать хеш SHA-256 можно также через конфигурационный файл users.xml, поместив его в элемент password_sha256_hex
:
<users>
<user_name>
<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>
<!-- Other settings -->
</user_name>
</users>
double_sha1_password
Чтобы использовать алгоритм double SHA-1 для хеширования пароля пользователя, можно:
-
указать пароль в виде строки — ADQM автоматически вычислит хеш для введенной строки с помощью алгоритма double SHA-1 и сохранит его;
-
передать в ADQM хеш, предварительно получив его для строки пароля.
Указать строку пароля
Используйте следующий запрос, чтобы назначить пользователю пароль в виде строки:
CREATE USER <user_name> IDENTIFIED WITH double_sha1_password BY '<user_password>';
При выполнении этого запроса ADQM вычисляет хеш для введенной строки по алгоритму double SHA-1 и сохраняет этот хеш.
Запрос:
CREATE USER john IDENTIFIED WITH double_sha1_password BY 'qwerty';
Вывод на экран:
CREATE USER john IDENTIFIED WITH double_sha1_hash BY 'AA1420F182E88B9E5F874F6FBE7459291E8F4601' Query id: 7441ff9b-d349-4c29-a687-61612da40323 Ok. 0 rows in set. Elapsed: 0.001 sec.
Теперь пользователь john
может подключаться к ADQM, используя заданный пароль:
$ clickhouse-client --user john --password qwerty
Указать хеш строки пароля
Чтобы назначить пароль в виде хеша, используйте следующий запрос:
CREATE USER <user_name> IDENTIFIED WITH double_sha1_hash BY '<hash>';
Сгенерируйте хеш для строки qwerty
:
$ PASSWORD="qwerty"; echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
Вывод на экран (первая строка — пароль, вторая — хеш):
qwerty AA1420F182E88B9E5F874F6FBE7459291E8F4601
При создании учетной записи пользователя передайте сгенерированный хеш следующим образом:
CREATE USER mary IDENTIFIED WITH double_sha1_hash BY 'AA1420F182E88B9E5F874F6FBE7459291E8F4601';
Убедитесь, что подключиться к ADQM от имени пользователя mary
можно, используя пароль qwerty
:
$ clickhouse-client --user mary --password qwerty
Двойной хеш SHA-1 можно также определить для пользователя в конфигурационном файле users.xml. Для этого нужно поместить хеш в элемент password_double_sha1_hex
:
<users>
<user_name>
<password_double_sha1_hex>AA1420F182E88B9E5F874F6FBE7459291E8F4601</password_double_sha1_hex>
<!-- Other settings -->
</user_name>
</users>
plaintext_password
Пароль пользователя сохранится в ADQM в текстовом виде, если назначить его одним из следующих способов.
-
Использовать выражение
IDENTIFIED WITH plaintext_password
в запросеCREATE USER
:CREATE USER <user_name> IDENTIFIED WITH plaintext_password BY '<user_password>';
-
Указать пароль с помощью элемента
password
в конфигурационном файле users.xml:<users> <user_name> <password>user_password</password> <!-- Other settings --> </user_name> </users>
Если оставить элемент
password
пустым, пользователь сможет подключаться в ADQM без пароля:<users> <user_name> <password></password> <!-- Other settings --> </user_name> </users>
ВНИМАНИЕ
Хранить пароли пользователей в незашифрованном виде не рекомендуется.
|
no_password
Пользователя ADQM без пароля также можно создать одним из следующих запросов:
CREATE USER <user_name>;
CREATE USER <user_name> IDENTIFIED WITH no_password;
Поле auth_type
таблицы system.users для пользователя будет содержать значение no_password
(в отличие от пользователя, для которого задан пустой элемент password
в файле users.xml — в этом случае auth_type
возвращает plaintext_password
).
Изменение паролей пользователей
Чтобы изменить пароль для существующего пользователя, выполните запрос ALTER USER
:
ALTER USER <user_name>
[NOT IDENTIFIED | IDENTIFIED {[WITH {no_password | plaintext_password | sha256_password | sha256_hash | double_sha1_password | double_sha1_hash}]
BY {'<password>' | '<hash>'}}];
Измените пароль пользователя mary
, выполнив следующий запрос:
ALTER USER mary IDENTIFIED WITH sha256_password BY 'test';
ADQM сгенерирует хеш для нового пароля, добавив к нему произвольную строку SALT:
ALTER USER mary IDENTIFIED WITH sha256_hash BY 'FDBC16CDEBD27426D53E8EF5AC17A02894CB195C3F213009913E5827228A7049' SALT '48F8DEDC2E1818BE4888553B8A55B2705F1E98494CB0387A36D6F89F06DF745B' Query id: 6adb558b-3370-4829-9a60-f8264d366a00 Ok. 0 rows in set. Elapsed: 0.001 sec.
Теперь, чтобы подключаться к ADQM от имени пользователя mary
, нужно использовать новый пароль test
:
$ clickhouse-client --user mary --password test
Изменить пароль пользователя можно также поменяв значение соответствующего элемента (password_sha256_hex
, password_double_sha1_hex
или password
) для пользователя в файле users.xml.
Изменение пароля пользователя default
По умолчанию ADQM создает аккаунт пользователя default
без пароля. Назначить или изменить для него пароль можно через интерфейс ADCM. Для этого зайдите в конфигурационные настройки сервиса ADQMDB (ADQM cluster → Services → ADQMDB → Primary Configuration), введите и подтвердите пароль в секции Configuration → Default user and policy settings, нажмите Save и выполните действие Reconfig and restart для сервиса ADQMDB.