clickhouse 访问控制

ClickHouse 访问控制

20.4 版本以前的clickhouse需要修改配置文件并重启来修改用户的账号密码和权限。配置文件在/etc/clickhouse-server/users.xml
20.4 版本以后支持SQL的方式设置访问控制,同时支持配置文件的方式。建议使用SQL的方式管理账号密码和权限。

一、配置profile

profile 类似于角色,先定义好不同权限的角色,后面定义用户权限的时候直接绑定角色。

<yandex>
    <profile>
        <default>
            <max_memory_usage>10000000000</max_memory_usage>
            <use_uncompressed_cache>0</use_uncompressed_cache>
            <load_balancing>random</load_balancing>
        </default>
        <readonly>
            <readonly>1</readonly>
        </readonly>
    </profile>
</yandex>

以上是系统默认定义的两个profile,也就是两个role。
一个profile名为default,我们也可以根据需求自定义profile。我们限制了这个profile 单次查询所能使用的最大内存、关闭了使用未压缩的缓存、查询时候使用随机的方式选择一个shard的一个replica 进行查询。
一个profile名为readonly,我们限制它的权限为只读

二、配置用户

<yandex>
    <profile>
    ......
    </profile>
    <users>
        <default>
            <password></password>
            <networks>
                <ip>::/0</ip>
            </networks>
            <profile>default</profile>
            <quota>default</quota>
        </default>
    </users>
        <migu>
    <password_double_sha1_hex>xxxxxx</password_double_sha1_hex>
</yandex>

其中,密码的设置方式建议按照配置文件中介绍使用以下命令生成

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

三、使用SQL-DRIVEN 管理账号密码

开启default账号的access_management
按照配置文件users.xml 介绍,配置profile段的 access_management 参数,表示User can create other users and grant rights to them。也就是可以用这个用户登录,然后使用SQL语句管理其他账号

<users>
    <default>
        ......
        <access_management>1</access_management>
    </default>
</users>

创建管理员角色和账号

>>> clickhouse-client -h 192.168.1.128 
:) create role admin_user_account 
:) grant all on *.* to admin_user_account with grant option 
:) create user admin@'%' identified with sha256_password BY 'FeCW7T9'
:) grant admin_user_account to admin
:) exit

使用新创建的账号登录测试

>>> clickhouse-client -h 192.168.1.128 -u admin --password FeCW7T9
:) create user amber@'%' identified with sha256_password by 'FeCW7T8'
:) grant all on *.*  to amber

关闭default账号的sql-driven
因为默认情况下分布式表查询的时候会使用defaut账号访问各个shard的replica。测试环境换了操作简便,我这里仍然保留default 账号且无密码。仅关闭了default账号的 access_management 。使得default账号登录之后不能执行账号管理相关的操作。

<users>
    <default>
        ......
        <access_management>0</access_management>
    </default>
</users>

重启 clickhouse-server

>>> sudo systemctl restart clickhouse-server

每个clickhouse-server存储的是同质的数据,因此每个clickhouse-server都需要执行修改账号的操作,创建相同的账号密码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值