首页 > 数据库 >OLAP系列之分析型数据库clickhouse权限控制(六)

OLAP系列之分析型数据库clickhouse权限控制(六)

时间:2023-08-19 12:33:05浏览次数:41  
标签:default cluster -- 数据库 查询 chun OLAP 权限 clickhouse

一、clickhouse权限管理

users.xml默认配置文件:

<?xml version="1.0"?>
<clickhouse>
    <profiles>
        <default>
            <load_balancing>random</load_balancing>
        </default>
    </profiles>
    
    <users>
        <default>
            <password></password>
            <networks>
                <ip>::/0</ip>
            </networks>
            <profile>default</profile>
            <quota>default</quota>
            <!-- <access_management>1</access_management> -->
        </default>
    </users>
    
    <quotas>
        <default>
            <!-- Limits for time interval. You could specify many intervals with different limits. -->
            <interval>
                <!-- Length of interval. -->
                <duration>3600</duration>
                <!-- No limits. Just calculate resource usage for time interval. -->
                <queries>0</queries>
                <errors>0</errors>
                <result_rows>0</result_rows>
                <read_rows>0</read_rows>
                <execution_time>0</execution_time>
            </interval>
        </default>
    </quotas>
</clickhouse>
users.xml

1.1 users.xml配置文件中设置权限

default权限默认过大需要做限制,可以限制IP或者设置密码

在配置文件中配置:/etc/clickhouse-server/users.xml

<?xml version="1.0"?>
<clickhouse>
    <profiles>
        <default>
            <load_balancing>random</load_balancing>
        </default>
        
        <!-- 配置只读权限 -->
        <r_read> <!-- 自己取名,下面引用> --
            <readonly>1</readonly>
            <allow_ddl>0</allow_ddl>
        </r_read>
        
        <!-- 配置写权限 -->
        <w_write>
            <load_balancing>random</load_balancing>
        </w_write>
        
        <!-- 权限全局配置 -->
        <readonly>
            <readonly>1</readonly>
        </readonly>

    </profiles>
    
    <users>
        <default>
            <!-- 明文密码或者加密密码,2选1就行 -->
            <password>123456</password>
            <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
            
            <!-- 网络访问限制:内网IP访问或者所有IP都可以访问 -->
            <networks>
                <ip>::/0</ip>
            </networks>
            <!-- 引用上面的权限管理和下面的资源管理 -->
            <profile>default</profile>
            <quota>default</quota>
            <!-- 是否开启sql驱动权限管理:0|1 ,sql命令赋权 -->
            <!-- <access_management>1</access_management> -->
        </default>
        
        <!-- 读 -->
        <r_read>
            <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
            <networks>
                <ip>::/0</ip>
            </networks>
            <profile>r_read</profile>
            <quota>default</quota>
            <!-- 允许看到的数据库,甚至可以只让用户查看表或者表的多少行 -->
            <allow_databases>
                <database>test</database>
            </allow_databases>
        </r_read>
        
        <!-- 写 -->
        <w_write>
            <password>123456</password>
            <networks>
                <ip>::/0</ip>
            </networks>            
            <profile>w_write</profile>
            <quota>default</quota>
        </w_write>
    </users>
    
    <!-- 该用户使用的资源限制 -->
    <quotas>
        <default>
            <!-- Limits for time interval. You could specify many intervals with different limits. -->
            <interval>
                <!-- Length of interval. -->
                <duration>3600</duration>
                <!-- No limits. Just calculate resource usage for time interval. -->
                <queries>0</queries>
                <errors>0</errors>
                <result_rows>0</result_rows>
                <read_rows>0</read_rows>
                <execution_time>0</execution_time>
            </interval>
        </default>
    </quotas>
</clickhouse>

1.2 sql方式赋权

第一步:在users.xml中将default的赋值权限管理开通
<access_management>1</access_management>

第二步:sql命令创建用户、角色、授权角色给用户
-- 创建用户 chun、明文明码:123456
create user if not exists chun on cluster my_cluster IDENTIFIED WITH plaintext_password BY '123456';

-- 创建角色 chun_role
create role if not exists chun_role on cluster my_cluster ;

-- 授权 test_db 库查询权限给 角色 chun_role
GRANT SELECT ON test_db.* TO chun_role on cluster my_cluster ;

-- 分配角色给用户 chun
GRANT chun_role TO chun on cluster my_cluster ;
-- 登录
clickhouse-client --host 127.0.0.1 --user chun --password 123456

-- 收回角色 chun_role 的查询权限 
REVOKE SELECT ON test_db.* FROM chun_role  on cluster my_cluster ;

二、 配置说明

查询权限是整个权限体系的第二层防护,它决定了一个用户能够执行的查询语句,查询权限可以分为以下四类:
    读权限:包括SELECT、EXISTS、SHOW和DESCRIBE查询。
    写权限:包括INSERT和OPTIMIZE查询。
    设置权限:包括SET查询。
    DDL权限:包括CREATE、DROP、ALTER、RENAME、ATTACH、DETACH和TRUNCATE查询

2.1 readonly

读权限、写权限和设置权限均由此标签控制,它有三种取值:
当取值为0时,不进行任何限制(默认值) 当取值为1时,只拥有读权限(只能执行SELECT、EXISTS、SHOW和DESCRIBE) 当取值为2时,拥有读权限和设置权限(在读权限基础上,增加了SET查询)

2.2 allow_ddl

DDL权限由此标签控制,它有两种取值:

当取值为0时,不允许DDL查询。
当取值为1时,允许DDL查询(默认值)。

需要注意的是readonly和allow_ddl需要定义在用户使用的profiles角色中

 

参考资料:

clickhouse权限设置情况

标签:default,cluster,--,数据库,查询,chun,OLAP,权限,clickhouse
From: https://www.cnblogs.com/yangmeichong/p/17642328.html

相关文章

  • 开源数据库Mysql_DBA运维实战 (总结)
    开源数据库Mysql_DBA运维实战(总结)SQL语句都包含哪些类型DDLDCLDMLDQLYum安装MySQL的配置文件配置文件:/etc/my.cnf日志目录:/var/log/mysqld.log错误日志:/var/log/mysql/error.logMySQL的主从切换查看主从复制状态停止主数据库的写入操作记录当前二级制日志文件和位置更新从数据库......
  • Linux unixODBC 连接 MySQL数据库
    LinuxunixODBC连接MySQL数据库1.下载unixODBC及MySQLConnector/ODBC1.1unixODBC下载https://www.unixodbc.org/ 1.2MySQLConnector/ODBC下载https://downloads.mysql.com/archives/c-odbc/选择版本选择:5.3.132. 安装驱动安装unixODBCtar-zxvfunix......
  • 剖析MongoDB数据库:理解NoSQL设计模式、优化查询性能和数据安全性
    MongoDB是一个流行的NoSQL文档数据库,它使用JSON样式的文档存储数据。本文将对MongoDB进行剖析,包括NoSQL设计模式、优化查询性能和数据安全性。NoSQL设计模式文档数据库MongoDB采用文档数据库的设计模式,即将相关数据保存在单个文档中,而不是将其拆分成多个表。这种设计模式使得数......
  • Mysql数据库
     问题1:如何定位Mysql慢查询?分析:聚合查询、多表查询、表数据量过大、深度分页查询,导致页面加载慢、接口压测响应时间超过1s。答:A使用开源运维工具,比如Arthas、SkyWalking;B使用Mysql自带的慢查询日志,调试阶段使用; 问题2:SQL执行慢,是如何分析优化的呢?聚合查询,加临时表......
  • oracle转达梦数据库的一些坑
    oracle和达梦的一些函数使用有区别,比如OracleDMSelectDUMMYFromdualSelectIDFromdualto_ncharto_charNLS_UPPERNLS_UPPER达梦关键字比较多,使用时有可能冲突,可以使用以下方式屏蔽关键字,或者直接修改sql语句进行规避SF_SET_SYSTEM_PARA_VALUE('EXCLUDE......
  • 什么情况下数据库表索引会失效?
    什么情况下数据库表索引会失效?1.单独引用复合索引里非第⼀位置的索引列假如有INDEX(a,b,c),当条件为a或a,b或a,b,c时都可以使用索引,但是当条件为b,c时将不会使用索引。复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第⼀个字段,索引才会被使用。因此,在复合索引中索......
  • 亚信科技AntDB数据库连年入选《中国DBMS市场指南》代表厂商
    近日,全球权威ICT研究与顾问咨询公司Gartner发布了2023年《MarketGuideforDBMS,China》(即“中国DBMS市场指南”),该指南从市场份额、技术创新、研发投入等维度对DBMS供应商进行了调研。亚信科技是领先的数智化全栈能力提供商,作为国内最早一批投入数据库研发的企业,其自研的AISWare......
  • Python 矢量数据库和矢量索引:构建 LLM 应用程序
    推荐:使用NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景由于使用其硬件创建的生成式AI应用程序,Nvidia经历了显着的增长。另一项软件创新,矢量数据库,也正在乘着生成式人工智能的浪潮。开发人员正在向量数据库上用Python构建AI驱动的应用程序。通过将数据编码为向量,他们可以利......
  • 批量备份数据库日志且30天后自动删除该备份文件
    /********************************************批量备份数据库日志且30天后自动删除该备份文件*******************************************/DECLARE@backupfileVARCHAR(1024)DECLARE@filenameVARCHAR(1024)DECLARE@pathVARCHAR(1024)DECLARE@dbnameVARC......
  • Flowable 6.6.0版本中的数据库表解读 - ACT_ID篇
    本文将介绍Flowable6.6.0版本中以ACT_ID_开头的表,ID表示identity(组织机构),包含用户、权限、用户组。ACT_ID_GROUP这个表存储了组信息。字段名字段含义ID_主键IDREV_修订版本号NAME_组名称TYPE_组类型ACT_ID_INFO这个表存储了一些标识信息。......