You need to enable JavaScript to run this app.
导航
权限模型
最近更新时间:2025.10.29 10:28:56首次发布时间:2022.12.22 10:16:16
复制全文
我的收藏
有用
有用
无用
无用

ByteHouse 遵循 RBAC 模型设计了权限模型,支持单集群和多集群权限管理。ByteHouse 权限管理支持通过角色、行为用户授予权限,实现对集群中的数据库、表、列、索引、视图等数据资源的灵活访问控制。本文介绍了 ByteHouse 权限模型的基本概念和架构设计。

基础概念

在一个 ByteHouse 集群内,权限模型涉及以下 5 个概念:

  • 数据对象(Data Object):数据库内的实体。对于 ByteHouse 而言,数据对象包括以下实体: 数据库(Database),数据表(Table),列(Column),索引(Index),视图(View),投影(Projection)等。
  • 用户(User):一个用户对应一组用户名与密码,用于建立数据库的连接。
  • 角色(Role):角色即权限的集合。角色管理能够实现对项目中某个角色的用户批量授权,减少重复、繁杂的授权操作。 一个角色可以赋予多个用户。
  • 权限(Privilege):表达是否允许用户对于数据对象的增(Insert)、删(Drop)、改(Alter)、查(Select)等操作的抽象策略。
  • 行策略(Row Policy):一种用于控制数据访问的安全策略。允许对表中的数据行施加条件,以便控制不同用户可以访问哪些数据行。这种行级别的安全策略可以用来保护敏感数据,确保只有符合特定条件的用户才能访问某些数据行。

权限模型

ByteHouse 基于 ClickHouse 社区的默认权限体系构建了自己的权限模型,包含了单集群和多集群模型。ClickHouse 社区的默认权限体系为 RBAC 模型,支持用户(User)、角色(Role)、权限(Privilege)、实体(Data Object)四元组的相互关联,通过 RevokeGrant 语法进行互联操作,实现权限的分配和调整。ByteHouse 在 ClickHouse 权限模型的基础上构建了多集群模型,支持通过为用户赋予跨集群的角色和权限,实现跨集群的数据统一管控,提升权限管控效率的同时,细化权限管控粒度,满足不同场景的权限管控需求。

单集群模型

多集群模型

在单个集群下,ByteHouse 企业版的权限模型如下,支持将直接为用户赋予权限,也支持通过角色为用户赋予权限。
在需要管理多个用户和多个角色时,

  • 系统管理员可以通过一个角色为多个用户同时授予相同权限,减少重复授权工作。
  • 系统管理员也可以为一个用户授予多个角色权限,此时该用户的权限为多个角色权限的并集。

Image

多集群模型实现了跨集群用户权限管理。系统管理员可在每个集群中基于数据对象关联的权限创建角色,授予给同集群的不同用户,同一用户可以存在于不同的集群。
用户作为跨集群的实体,支持在不同集群被授予不同的角色,获取对应权限,从而实现跨集群的权限管理。管理员需先为用户配置至少一个可使用的集群范围,随后基于集群为用户直接授予权限或通过角色赋权。直接为用户授予权限后,用户会自动加入当前集群。
角色为集群维度下的实体。ByteHouse 提供的角色中,System Admin 作为超级管理,具有跨集群权限,可管理租户中的所有集群。其他角色(Cluster Admin、Data Engineer、Query User、自定义角色)为集群内角色,无跨集群权限。
权限是指某个集群内数据对象的权限,无法跨集群。
Image

注意

  • 通过控制台对用户进行修改密码操作时,将影响用户所在的每一个集群。
  • 请勿在集群层修改当前集群的用户密码,否则会导致用户无法通过控制台对该集群下的表进行增、删、改、查的操作。

默认角色与自定义角色

ByteHouse 为您提供了默认角色和自定义角色,默认角色包含 4 种,分别为 System Admin、Cluster Admin、Data Engineer、Query User,不同的角色的权限不同。同时,您也可以创建自定义角色,自定义角色名称及权限,自定义角色名称不能与默认角色重名。

自定义角色

Query User

Data Engineer

Cluster Admin

System Admin

角色简介

用户自定义角色

仅可查询数据的只读角色

可操作数据的角色

可操作整个集群的角色

可操作整个 ByteHouse GUI 的角色

角色级别

集群内角色

集群内角色

集群内角色

集群内角色

跨集群角色

库表权限

默认无,支持用户自定义库表权限范围

默认只有 Default 库的读权限。

默认有 Default 库的读写权限。

默认有集群内所有库表的读写权限

默认有租户下所有集群所有库表的读写权限

资源权限/控制台功能

数据管理

角色管理、角色授权

用户管理、用户授权、角色管理、角色授权

数据导入

查看

查看

查看、编辑

查看、编辑

查看、编辑

数据查询

查看、查询

查看、查询

查看、查询

查看、查询

查看、查询

集群管理

查看

查看

查看

查看、集群管理

查看、集群管理

用户类型

ByteHouse 的用户可细分为主用户、子用户、系统管理员、非管理员用户、系统用户。

用户类型

定义

用户默认权限与授权操作说明

用户

主用户与子用户统称用户。一个用户对应一个用户名与密码。

通用描述,请参见主用户和子用户权限和授权说明区分使用。

主用户

火山引擎主账号对应的用户,一个火山账号只有一个主用户。

该用户拥有 ByteHouse 所有服务的访问权限,可在所属租户下创建子用户并分配特定的权限。
主用户权限配置请参见用户管理

子用户

火山引擎账号主用户在 ByteHouse 中创建的用户。

该用户创建时默认不具备任何 ByteHouse 集群的访问权限,需要主用户分配特定的权限策略之后,普通用户通过主用户分配的子用户密码登录并使用 ByteHouse 的服务。
为子用户配置权限请参见子用户管理

数据库用户

数据库级别用户。

该用户创建时默认不具备任何 ByteHouse 数据库的权限,需要管理员为其分配特定的角色或授予数据权限,数据库用户可通过的管理员设置的数据库用户名和密码登录并使用 ByteHouse 的服务。
创建数据库用户及为数据库用户配置权限请参见数据库用户管理

系统管理员

具有“system_admin”角色的用户。

该用户为超级管理员,可管控 ByteHouse 全部功能,系统默认创建。
您可通过 ByteHouse 控制台>权限管理>用户路径,查看用户列表中系统管理员列标记为“”的用户。

非管理员用户

未被授予 “system_admin” 角色的用户。

该用户的权限需由系统管理员授予,不同用户的权限不同,可联系系统管理员配置,配置操作详见子用户管理
您可通过 ByteHouse 控制台>权限管理>用户路径,查看用户列表中系统管理员列标记为“”的用户。
创建后,系统管理员可为非管理员统一配置部分控制台功能使用权限,详情请参见非管理员用户管理

系统用户

DBA 用户,ByteHouse 引擎配置用户。

该用户仅用于系统内部通信,仅在用户列表中展示,无需操作。一个火山引擎账号只有一个 DBA 用户,但每个集群里的密码会不同。
您可通过 ByteHouse 控制台>权限管理>用户路径,在用户列表中搜索 dba 查看。

支持授予的库表权限说明

ByteHouse 企业版支持直接为用户或角色授予数据权限,具体权限的详情说明如下:

权限

说明

TRUNCATE

授予用户清空指定数据库/表/外表/视图/物化视图中的所有数据的权限(仅删除数据,保留表结构)。

ALTER

修改数据权限。

  • ALTER:仅支持为数据库授予该权限,授予指定数据库中所有表/外表/视图/物化视图的修改权限。ALTER 权限也包含了以下 ALTER TABLE、ALTER VIEW、ALTER DELETE、ALTER UPDATE 权限。
  • ALTER TABLE:授予用户指定表/外表的修改权限。
  • ALTER VIEW:授予用户指定视图/物化视图的修改权限。
  • ALTER DELETE:授予用户从指定数据库/表/外表/视图/物化视图中删除数据的权限。
  • ALTER UPDATE:授予用户为指定数据库/表/外表/视图/物化视图更新数据的权限。

CREATE

创建数据资源。

  • CREATE:仅支持为数据库授予该权限,授予用户创建数据库/表/外表/视图/物化视图的权限。CREATE 权限也支持以下 CREATE DATABASE、CREATE TABLE、CREATE VIEW、CREATE TEMPORARY TABLE 权限。
  • CREATE DATABASE:授予用户创建数据库的权限。
  • CREATE TABLE:授予用户在指定数据库中创建表/外表的权限。
  • CREATE VIEW:授予用户在指定数据库中创建视图/物化视图的权限。
  • CREATE TEMPORARY TABLE:仅支持为数据库设置该权限,授予用户在指定数据库中创建临时表的权限。授予时,数据库需选择为 ALL。
  • CREATE DICTIONARY:授予用户在指定数据库中创建字典的权限。

DROP

删除数据。

  • DROP:授予用户创建数据库/表/外表/视图/物化视图的权限。DROP 权限也支持以下 DROP DATABASE、DROP TABLE、DROP VIEW 权限。
  • DROP DATABASE:授予用户删除指定数据库的权限。
  • DROP TABLE:授予用户在指定数据库中删除表/外表的权限。
  • DROP VIEW:授予用户在指定数据库中删除视图/物化视图的权限。
  • DROP DICTIONARY:授予用户删除指定数据库中字典的权限。

SHOW

查看数据信息。

  • SHOW:授予用户查看数据库/表/外表/视图/物化视图的权限。
  • SHOW TABLES:仅支持为数据库设置该权限,授予用户查看指定数据库中表/外表/视图/物化视图的权限,授予用户执行 SHOW TABLESEXISTS <table>CHECK <table> 查询的权限。
  • SHOW COLUMNS:授予查看指定数据库/表/外表/视图/物化视图中列结构的权限,授予用户执行 SHOW CREATE TABLEDESCRIBE 查询的权限。
  • SHOW DICTIONARIES:授予查看指定数据库中字典的权限,授予用户执行 SHOW CREATE DICTIONARY 查询的权限。

注意

当用户具备某一库表的任意一项其他权限时,将自动被授予 SHOW 权限。

SYSTEM

  • SYSTEM:仅支持为数据库设置该权限,为用户授予执行系统级操作的权限,详情请参考社区文档
  • SYSTEM CONSUME:为用户授予消费 Kafka 表的权限。

SELECT

授予用户数据库/表/外表/视图/物化视图/列的检索权限。

INSERT

授予用户向指定数据库/表/外表/视图/物化视图/列的插入权限。

自定义

您可按需添加自定义权限,该权限需与 ByteHouse 支持的 SQL 语句对应。

MYSQL

授予用户在指定数据库中创建 MySQL 外表的权限。授予时,数据库需选择为 ALL,同时授予 MYSQL 和 CREATE 权限。

MANAGE

授予用户管理用户自定义函数(User Defined Function,UDF)的权限,包括创建、编辑、删除 UDF 权限。

dictGet

授予用户使用 dictGet 函数查询字典数据的权限。

权限操作指引

不管使用者是谁,进行权限管控的原则都是「最小权限分配」原则:只分配该用户活动需要的必要权限。