1 前言
在数据库中正确管理对象(如数据库、表等)的权限非常重要,但却又常被人忽视,往往涉及到权限问题、碰到麻烦时,才会后悔当时没有认真对待权限管理。因此这篇文章将以非常火爆的SnowFlake数据仓库为例,简明扼要地讲解权限管理的重要概念和常用命令。建议点赞收藏,日后回顾使用!
2 SnowFlake权限控制框架
SnowFlake有两种权限控制模型:
-
Discretionary Access Control (DAC),自主访问控制:每一个对象(Object)有一个所有者(Owner),所有者能授予他人不同的权限。
-
Role-based Access Control (RBAC),基于角色的访问控制:访问权限由角色(Role)控制,角色可以分配给不同的用户(User)。
在SnowFlake里,有一些重要的概念帮助理解权限控制:
-
Securable object,安全对象,一个可以被授予特定权限的实体,如果没有权限,则对象的访问会被禁止。
-
Role,角色,一个可以接受权限的实体,角色又可以被分配给用户,同时角色也可以分配给其他角色,构成不同的角色阶层。
-
Privilege,权限:针对对象的访问控制水平。通过设置不同的权限,可以控制方位水平的粒度。
-
User,用户,能够被SnowFlake识别的身份,可以是人或者程序。
在SnowFlake里,关于安全对象的权限控制如下图所示。访问安全对象可以通过向角色赋予权限,即是把权限分配给了其他的角色或者对象。另外,每个安全对象有一个所有者,其可以授予其他角色权限。
SnowFlake权限控制示意图
3 常用的命令
基本了解SnowFlake