TCHouse-X 作为一款强大的数据引擎产品,内置库、表等多种数据库对象。它提供权限管理功能,允许用户对 TCHouse-X 内的用户及角色的库表访问权限进行精细化管理。目前,TCHouse-X 支持基于角色的权限管理(RBAC)和基于用户的权限管理(UBAC),二者可组合使用、互为补充。
基于角色的权限管理(RBAC)
在 RBAC 模型中,权限不是直接分配给用户,而是通过角色间接分配:
1. 定义角色: 根据工作职能(例如:管理员、编辑、普通用户)创建不同的角色。
2. 分配权限给角色: 为每个角色分配其完成工作所需的权限集(例如:“dba”角色拥有“创建、修改库表”的权限)。
3. 分配角色给用户: 将一个或多个角色分配给用户。用户继承角色的所有权限。
4. 当用户的工作职责发生变化时,管理员只需要更改用户的角色分配,访问权限就会自动调整,无需逐一修改用户的上百条权限。
基于用户的权限管理(UBAC)
UBAC 是对 RBAC 的补充模型,权限直接分配给用户,适用于少量用户的特殊授权场景:
1. 绕过角色直接授权:管理员可以将库表权限直接授予指定用户,无需为其创建或绑定角色。
2. 权限合并生效:当用户同时拥有角色权限和直接授予的 UBAC 权限时,最终权限取两者并集。
3. 独立回收:回收用户角色不影响其 UBAC 权限,可单独回收或调整。
用户
角色
Catalog-Schema-Table(View) 三级权限管理机制
TCHouse-X 采用 Catalog-Schema-Table(View) 三级访问控制模型来组织数据权限。这种结构不仅提供了清晰的数据资产视图,更实现了基于角色的分级权限管理。所有权限均自上而下继承:Catalog 级别的授权将直接作用于其包含的所有 Schema 和 Table。
说明:
TCHouse-X 当前版本仅支持默认 Catalog,因此在权限配置界面无需手动选择。
三级权限结构详解
Catalog(数据目录)
TCHouse-X 实例中数据的集合。其权限类型有:
权限 | 权限分类 | 权限解释 |
ALL_PRIVILEGES | 数据目录权限 | 选中的 Catalog 及以下所有库、表的 ALL 权限 |
CreateSchema | 数据目录权限 | 在选中 Catalog 下创建 Schema |
UseSchema | 数据目录下任意库权限 | 使用选中 Catalog 下任意 Schema |
AlterSchema | 数据目录下任意库权限 | 修改选中 Catalog 下任意 Schema |
DropSchema | 数据目录下任意库权限 | 移除选中 Catalog 下任意 Schema |
CreateTable | 数据目录下任意库权限 | 在选中 Catalog 下任意 Schema 下创建表 |
SelectTable | 数据目录下任意表权限 | 读取选中 Catalog 下任意表的数据 |
AlterTable | 数据目录下任意表权限 | 修改选中 Catalog 下任意表的元数据 |
DropTable | 数据目录下任意表权限 | 移除选中 Catalog 下任意表 |
InsertTable | 数据目录下任意表权限 | 向选中 Catalog 下任意表插入数据 |
DeleteTable | 数据目录下任意表权限 | 从选中 Catalog 下任意表删除数据 |
Schema(数据库)
Schema 是 TCHouse-X 实例中的逻辑分组,相当于传统数据库中的“数据库(Database)”或“模式(Schema)”。它用于将相关的表、视图、函数等对象组织在一起。其权限类型有:
权限 | 权限分类 | 权限解释 |
ALL_PRIVILEGES | 数据库权限 | 选中的 Schema 及以下所有表的 ALL 权限 |
UseSchema | 数据库权限 | 使用选中 Schema |
AlterSchema | 数据库权限 | 修改选中 Schema 的元数据 |
DropSchema | 数据库权限 | 移除选中 Schema |
CreateTable | 数据库权限 | 在选中 Schema 下创建表 |
SelectTable | 数据库下任意表权限 | 读取选中 Schema 下任意表的数据 |
AlterTable | 数据库下任意表权限 | 修改选中 Schema 下任意表的元数据 |
DropTable | 数据库下任意表权限 | 移除选中 Schema 下任意表 |
InsertTable | 数据库下任意表权限 | 向选中 Schema 下任意表插入数据 |
DeleteTable | 数据库下任意表权限 | 从选中 Schema 下任意表删除数据 |
Table (数据表)
实际存储数据的最小单位(表),其作用有:
实际存储数据。
权限控制: 提供最细粒度的权限控制。可以对单个表授予精确的权限,其权限类型有:
权限 | 权限分类 | 权限解释 |
ALL_PRIVILEGES | 表权限 | 选中 Table/View 的 ALL 权限 |
SelectTable | 表权限 | 读取选中 Table/View 的数据 |
AlterTable | 表权限 | 修改选中 Table/View 元数据 |
DropTable | 表权限 | 移除选中 Table/View |
InsertTable | 表权限 | 向选中 Table 插入数据 |
DeleteTable | 表权限 | 从选中 Table 删除数据 |
View (数据表)
基于表定义的查询结果(视图),其作用有:
呈现数据。
权限控制: 提供最细粒度的权限控制。可以对视图授予精确的权限,其权限类型有:
权限 | 权限分类 | 权限解释 |
ALL_PRIVILEGES | 视图权限 | 选中 View 的 ALL 权限 |
SelectView | 视图权限 | 读取选中 View 的数据 |
AlterView | 视图权限 | 修改选中 View 元数据 |
DropTable | 视图权限 | 移除选中 View |