更新时间:2022-09-27 GMT+08:00

权限机制

FusionInsight采用LDAP存储用户和用户组的数据;角色的定义信息保存在关系数据库中,角色和权限的对应关系则保存在组件侧。

FusionInsight使用Kerberos进行统一认证。

用户权限校验流程大致如下:

  1. 客户端(用户终端或FusionInsight组件服务)调用FusionInsight认证接口。
  2. FusionInsight使用登录用户名和密码,到Kerberos进行认证。
  3. 如果认证成功,客户端会发起访问服务端(FusionInsight组件服务)的请求。
  4. 服务端会根据登录的用户,找到其属于的用户组和角色。
  5. 服务端获得用户组拥有的所有权限和角色拥有的所有权限的并集。
  6. 服务端判断客户端是否有权限访问其请求的资源。

示例场景(RBAC):

HDFS中有三个文件fileA、fileB、fileC。

  • 定义角色roleA对fileA有读和写权限,角色roleB对fileB有读权限。
  • 定义groupA属于roleA;groupB属于roleB。
  • 定义userA属于groupA和roleB,userB属于GroupB。

当userA登录成功并访问HDFS时:

  1. HDFS获得useA属于的所有角色(roleB)。
  2. HDFS同时还会获得userA属于的所有用户组所属于的角色(roleA)。
  3. 此时,userA拥有roleA和roleB对应权限的并集。
  4. 因此对于fileA,则userA有读写权限;对fileB,有读权限;对于fileC,无任何权限。

同理userB登录后:

  1. userB只拥有roleB对应的权限。
  2. 对于fileA,则userB无权限;对fileB,有读权限;对于fileC,无任何权限。