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

Пользователи 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.

Изменение пароля пользователя default
Изменение пароля пользователя default
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней