FusionInsight采用LDAP存储用户和用户组的数据;角色的定义信息保存在关系数据库中,角色和权限的对应关系则保存在组件侧。
FusionInsight使用Kerberos进行统一认证。
用户权限校验流程大致如下:
- 客户端(用户终端或FusionInsight组件服务)调用FusionInsight认证接口。
- FusionInsight使用登录用户名和密码,到Kerberos进行认证。
- 如果认证成功,客户端会发起访问服务端(FusionInsight组件服务)的请求。
- 服务端会根据登录的用户,找到其属于的用户组和角色。
- 服务端获得用户组拥有的所有权限和角色拥有的所有权限的并集。
- 服务端判断客户端是否有权限访问其请求的资源。
示例场景(RBAC ):
HDFS中有三个文件fileA、fileB、fileC。
-
定义角色roleA对fileA有读和写权限,角色roleB对fileB有读权限。
-
定义groupA属于roleA;groupB属于roleB。
-
定义userA属于groupA和roleB,userB属于GroupB。
当userA登录成功并访问HDFS时:
- HDFS获得useA属于的所有角色(roleB)。
- HDFS同时还会获得userA属于的所有用户组所属于的角色(roleA)。
- 此时,userA拥有roleA和roleB对应权限的并集。
- 因此对于fileA,则userA有读写权限;对fileB,有读权限;对于fileC,无任何权限。
同理userB登录后:
- userB只拥有roleB对应的权限。
- 对于fileA,则userB无权限;对fileB,有读权限;对于fileC,无任何权限。