ClickHouse это один из поддерживаемых плагинов для механизма секретов баз данных. Этот плагин генерирует учётные данные базы данных динамически на основе настроенных ролей для базы данных ClickHouse, а также поддерживает Static Roles.

Возможности

Имя плагинаИзменение Root учётной записиДинамические ролиСтатические ролиКастомизация имени пользователя
clickhouse-database-pluginДаДаДаДа

Установка

  1. Включите механизм секретов базы данных, если он ещё не включён:

    • Stronghold в DP
    • Stronghold в Linux
    $ d8 stronghold secrets enable database
    Success! Enabled the database secrets engine at: database/
    
    $ stronghold secrets enable database
    Success! Enabled the database secrets engine at: database/
    

    По умолчанию механизм секретов будет включаться на основе его имени. Чтобы включить механизм секретов по другому пути, используйте аргумент -path.

  2. Настройте Stronghold с помощью соответствующего плагина и информации о подключении:

    • Stronghold в DP
    • Stronghold в Linux
    d8 stronghold write database/config/my-clickhouse-database plugin_name="clickhouse-database-plugin" allowed_roles="my-role" connection_url="clickhouse://clickhouse-server.my:9000?username={{username}}&password={{password}}&secure=true&skip_verify=true" username="strongholduser" password="strongholdpass"
    stronghold write database/config/my-clickhouse-database plugin_name="clickhouse-database-plugin" allowed_roles="my-role" connection_url="clickhouse://clickhouse-server.my:9000?username={{username}}&password={{password}}&secure=true&skip_verify=true" username="strongholduser" password="strongholdpass"
  3. Настройте роль, которая сопоставляет имя в Stronghold SQL-запросом, выполняемым для создания учётной записи базы данных. В примере предполагается, что в кластере баз данных my_cluster создана роль readonly

    • Stronghold в DP
    • Stronghold в Linux
    $ d8 stronghold write database/roles/my-role db_name="my-clickhouse-database" creation_statements="CREATE USER '{{name}}' IDENTIFIED BY '{{password}}' ON CLUSTER 'my_cluster'; GRANT readonly TO '{{name}}' ON CLUSTER 'my_cluster'; SET DEFAULT ROLE readonly TO '{{name}}';" default_ttl="1h" max_ttl="24h"
    Success! Data written to: database/roles/my-role
    
    $ stronghold write database/roles/my-role db_name="my-clickhouse-database" creation_statements="CREATE USER '{{name}}' IDENTIFIED BY '{{password}}' ON CLUSTER 'my_cluster'; GRANT readonly TO '{{name}}' ON CLUSTER 'my_cluster'; SET DEFAULT ROLE readonly TO '{{name}}';" default_ttl="1h" max_ttl="24h"
    Success! Data written to: database/roles/my-role
    

Использование

После того как механизм секретов настроен и у пользователя/машины есть токен Stronghold с соответствующими правами, он может генерировать учётные данные.

  1. Сгенерируйте новую учётную запись, используя /creds и имя роли:

    • Stronghold в DP
    • Stronghold в Linux
    $ d8 stronghold read database/creds/my-role
    Key                Value
    ---                -----
    lease_id           database/creds/my-role/2f6a614c-4aa2-7b19-24b9-ad944a8d4de6
    lease_duration     1h
    lease_renewable    true
    password           SsnoaA-8Tv4t34f41baD
    username           v-strongholduse-my-role-x
    
    $ stronghold read database/creds/my-role
    Key                Value
    ---                -----
    lease_id           database/creds/my-role/2f6a614c-4aa2-7b19-24b9-ad944a8d4de6
    lease_duration     1h
    lease_renewable    true
    password           SsnoaA-8Tv4t34f41baD
    username           v-strongholduse-my-role-x
    

Дополнительные ресурсы