本文以一个具体的企业作为示例,为您介绍在使用 ByteHouse 云数仓版时的权限管控实践,为您示例介绍 ByteHouse 权限管控的思路和原则。
示例场景
以下为示例的企业场景,企业有一位 ByteHouse 管理员,企业中有多个业务部门,部分中有多个 ByteHouse 用户。

示例中的企业各类部门/人员及其库表使用情况如下。
人员/部门 | 数据库 | 数据表 | 业务场景&最小权限范围 |
|---|
业务部门 A,部门下有多个用户 | user | - user.user_info
- user.access_info
| - 业务场景:部门 A 为业务运营团队,日常需查看产品的用户信息和用户运营触达数据表进行用户运营分析。
- 权限范围:部门 A 中的人员需具有 user_info、access_info 数据表的“读”权限。
|
业务部门 B,部门下有多个用户 | | - product.product_info
- bill.billing_info
| - 业务场景:部门 B 为产品团队,日常需查看产品使用数据和营收数据,用户分析改进产品。
- 权限范围:部门B中的人员需具 product.product_info、bill.billing_info 数据表的“读”权限。
|
ByteHouse 管理员 | 所有数据库 | 所有数据表 | - 业务场景:ByteHouse 管理员需管理维护所有数据表,包括表权限管理。
- 权限范围:ByteHouse 的所有权限。
|
权限管控实践
根据以上示例场景,本节为您介绍通过角色管理实现ByteHouse权限管控的最佳实践。
- 主账号创建 IAM 用户并授予 IAM 权限策略。
- 通过主账号在火山 IAM 中为 ByteHouse 管理员和各个业务部门中的用户创建子用户。
- ByteHouse 管理员(DBA 或 SRE)需要管理 ByteHouse 实例,为其赋予 ByteHouseFullAccess 权限。
- 其他用户只需赋予 ByteHouseReadOnlyAccess 权限。
操作详情请参见管理 IAM 用户。
- ByteHouse 管理员根据业务部门职责分工情况,将不同业务部门的数据完全隔离。
将业务部门 A、业务部门 B 分别授予不同 ByteHouse 环境权限,通过 ByteHouse 环境实现资源、数据等隔离。多环境管理详情请参见环境管理。 - ByteHouse 管理员为业务部门 A 用户授权。
- 在 ByteHouse 中新建一个“业务运营”角色,只对其授予 user_info、access info 库表的只读数据权限(select、show)。
- 然后将此角色授予部门A下的用户。
操作详情请参见角色管理。
- ByteHouse 管理员为业务部门 B 用户授权。
- 在 ByteHouse 中新建一个“产品经理”角色,只对其授予 product.product_info、bill.billing_info 库表的只读数据权限(select、show)。
- 然后将此角色授予部门 B 下的用户。
操作详情请参见角色管理。
通过以上权限管理即可实现本文实例场景下的 ByteHouse 权限管控。