本文以一个具体的企业作为示例,为您介绍在使用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 or SRE)需要管理 Bytehouse 实例,为其赋予 ByteHouseFullAccess 权限。
- 其他用户只需赋予 ByteHouseReadOnlyAccess 权限。
操作详情请参见用户管理。
- 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权限管控。