feat(clickhouse): добавлены роли и межнодовый секрет

- Зачем:
  - менти должен увидеть разделение доступа без состояния в томах.
- Что:
  - пользователи и роли объявлены файлом с паролями из окружения.
  - межшардовые запросы передают пользователя через общий секрет.
  - четыре допущения реализации подтверждены в ADR живыми замерами.
- Проверка:
  - make config-test, make smoke, make check-clickhouse, make check-services.
This commit is contained in:
2026-08-13 10:04:58 +03:00
parent 41d057252e
commit 790f7c1bb7
5 changed files with 92 additions and 10 deletions
+5 -1
View File
@@ -5,6 +5,11 @@
-->
<remote_servers>
<clickstream_cluster>
<!--
ClickHouse 26.3 передаёт с секретом пользователя-инициатора на
соседний шард; секрет сверяется на обеих нодах.
-->
<secret from_env="CLICKHOUSE_CLUSTER_SECRET"/>
<shard>
<internal_replication>true</internal_replication>
<replica>
@@ -33,4 +38,3 @@
<path>/clickhouse/task_queue/ddl</path>
</distributed_ddl>
</clickhouse>
+63
View File
@@ -0,0 +1,63 @@
<clickhouse>
<!--
Пользователи и роли объявлены файлом: повторный подъём стенда не хранит
доступ в томах. Пароли приходят из .env через Compose.
-->
<roles>
<etl_writer>
<grants>
<query>GRANT SELECT, INSERT, ALTER, CREATE TABLE, CREATE VIEW, DROP TABLE, DROP VIEW ON default.*</query>
<query>GRANT SELECT, INSERT, ALTER, CREATE TABLE, CREATE VIEW, DROP TABLE, DROP VIEW, CREATE DATABASE ON stg.*</query>
<query>GRANT SELECT, INSERT, ALTER, CREATE TABLE, CREATE VIEW, DROP TABLE, DROP VIEW, CREATE DATABASE ON ods.*</query>
<query>GRANT SELECT, INSERT, ALTER, CREATE TABLE, CREATE VIEW, DROP TABLE, DROP VIEW, CREATE DATABASE ON dds.*</query>
<query>GRANT SELECT, INSERT, ALTER, CREATE TABLE, CREATE VIEW, DROP TABLE, DROP VIEW, CREATE DATABASE ON dm.*</query>
<query>GRANT SELECT ON system.*</query>
<query>GRANT CLUSTER ON *.*</query>
<query>GRANT REMOTE ON *.*</query>
</grants>
</etl_writer>
<bi_reader>
<grants>
<query>GRANT SELECT ON dds.*</query>
<query>GRANT SELECT ON dm.*</query>
<query>GRANT SELECT ON system.settings</query>
</grants>
</bi_reader>
<analyst_reader>
<grants>
<query>GRANT SELECT ON stg.*</query>
<query>GRANT SELECT ON ods.*</query>
<query>GRANT SELECT ON dds.*</query>
<query>GRANT SELECT ON dm.*</query>
<query>GRANT SELECT ON system.settings</query>
</grants>
</analyst_reader>
</roles>
<users>
<etl>
<password from_env="CLICKHOUSE_ETL_PASSWORD"/>
<profile>default</profile>
<quota>default</quota>
<grants>
<query>GRANT etl_writer</query>
</grants>
</etl>
<bi>
<password from_env="CLICKHOUSE_BI_PASSWORD"/>
<profile>default</profile>
<quota>default</quota>
<grants>
<query>GRANT bi_reader</query>
</grants>
</bi>
<analyst>
<password from_env="CLICKHOUSE_ANALYST_PASSWORD"/>
<profile>default</profile>
<quota>default</quota>
<grants>
<query>GRANT analyst_reader</query>
</grants>
</analyst>
</users>
</clickhouse>