You need to enable JavaScript to run this app.
导航
权限模型
最近更新时间:2025.05.13 10:01:58首次发布时间:2022.12.22 10:16:16
我的收藏
有用
有用
无用
无用

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

基础概念

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

  • 数据对象(Data Object):数据库内的实体。对于 ByteHouse 而言,数据对象包括以下实体: 数据库(Datebase),数据表(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 的服务。
为子用户配置权限请参见子用户管理

系统管理员

具有“system_admin”角色的用户。

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

非管理员用户

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

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

系统用户

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

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

授权操作指引

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