ClickHouse密碼設置加密

拒絕裸奔--ClickHouse用戶名密碼設置

 

 

大家都說大數據有價值,但是,有多少人給大數據加了鎖?

ClickHouse集羣,目前線上的都是裸奔,如果對方惡意請求數據,甚至刪掉某些數據,就悲劇了

Config概覽

  • 配置文件:user.xml
  • 核心配置3部分
    1. profile配置,最大內存、負載方式等(沒有特別關注,可見官方文檔)
    2. 配額設置,單個用戶最大能用的資源多少(沒有特別關注,可見官方文檔)
    3. 用戶設置,包括用戶名和密碼
      • 密碼有2種,一種是明文,一種是寫sha256sum的Hash值
      • 官方不建議直接寫明文密碼

我們的config文件

<?xml version="1.0"?>
<yandex>
    <profiles>
        <default>
            <max_memory_usage>10000000000</max_memory_usage>
            <use_uncompressed_cache>0</use_uncompressed_cache>
            <load_balancing>random</load_balancing>
        </default>

        <readonly>
            <max_memory_usage>10000000000</max_memory_usage>
            <use_uncompressed_cache>0</use_uncompressed_cache>
            <load_balancing>random</load_balancing>
            <readonly>1</readonly>
        </readonly>

    </profiles>

    <quotas>
        <!-- Name of quota. -->
        <default>
            <interval>
                <duration>3600</duration>
                <queries>0</queries>
                <errors>0</errors>
                <result_rows>0</result_rows>
                <read_rows>0</read_rows>
                <execution_time>0</execution_time>
            </interval>
        </default>
    </quotas>

    <users>
        <default>
            <password_sha256_hex>967f3bf355dddfabfca1c9f5cab39352b2ec1cd0b05f9e1e6b8f629705fe7d6e</password_sha256_hex>
            <networks incl="networks" replace="replace">
                <ip>::/0</ip>
            </networks>
            <profile>default</profile>
            <quota>default</quota>
        </default>

        <ck>
            <password_sha256_hex>967f3bf355dddfabfca1c9f5cab39352b2ec1cd0b05f9e1e6b8f629705fe7d6e</password_sha256_hex>
            <networks incl="networks" replace="replace">
                <ip>::/0</ip>
            </networks>
            <profile>readonly</profile>
            <quota>default</quota>
        </ck>
    </users>
</yandex>

配置解讀

  • 下圖定義了兩組設置,名字不同

  • 第二組增加了readonly選項

    Snip20171120_8

  • 下圖定義了2個用戶,爲了方便測試,用了同一個用戶名
  • ck用戶是read模式

Snip20171120_10

如何生成密碼

PASSWORD=$(base64 < /dev/urandom | head -c8);
echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'

6lYaUiFi
967f3bf355dddfabfca1c9f5cab39352b2ec1cd0b05f9e1e6b8f629705fe7d6e

權限驗證

默認用戶登陸(可以不用指定用戶名)

[email protected]:/data1/clickhouse  # clickhouse-client -h 127.0.0.1 -d gaopeng4 -m -u default --password 6lYaUiFi
ClickHouse client version 1.1.54289.
Connecting to database gaopeng4 at 127.0.0.1:9000 as user default.
Connected to ClickHouse server version 1.1.54289.

:) create database test1 ;       

CREATE DATABASE test1

Ok.

0 rows in set. Elapsed: 0.002 sec. 

:) ^C

ck用戶登陸

[email protected]:/data1/clickhouse  # clickhouse-client -h 127.0.0.1 -d gaopeng4 -m -u ck --password 6lYaUiFi     
ClickHouse client version 1.1.54289.
Connecting to database gaopeng4 at 127.0.0.1:9000 as user ck.
Connected to ClickHouse server version 1.1.54289.

:) create database test2 ;  

CREATE DATABASE test2

Received exception from server:
Code: 164. DB::Exception: Received from 127.0.0.1:9000. DB::Exception: Cannot execute query in readonly mode. 

0 rows in set. Elapsed: 0.014 sec. 

Update

  • 如果使用了分佈式表,需要在集羣的配置文件裏,增加分片的用戶名密碼

     

    Snip20171212_15.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章