Аутентификация по паролю
Пользователи 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.
