更新时间:2024-09-04 GMT+08:00

MRS集群用户权限模型

基于角色的权限控制

MRS集群通过采用RBAC(role-based access control,基于角色的权限控制)方式对大数据系统进行权限管理,将系统中各组件零散的权限管理功能集中呈现和管理,对普通用户屏蔽掉了内部的权限管理细节,对管理员简化了权限管理的操作方法,提升权限管理的易用性和用户体验。

MRS集群权限模型由“用户-用户组-角色-权限”四类对象构成。

图1 权限模型
  • 权限

    由组件侧定义,允许访问组件某个资源的能力。不同组件针对自己的资源,有不同的权限。

    例如:

    • HDFS针对文件资源权限,有读、写、执行等权限。
    • HBase针对表资源权限,有创建、读、写等权限。
  • 角色

    组件权限的一个集合,一个角色可以包含多个组件的多个权限,不同的角色也可以拥有同一个组件的同一个资源的权限。

  • 用户组

    用户的集合,当用户组关联某个或者多个角色后,该用户组内的用户就将拥有这些角色所定义的组件权限。

    不同用户组可以关联同一个角色,一个用户组也可以不关联任何角色,该用户组原则上将不具有任何组件资源的权限。

    部分组件针对特定的默认用户组,系统默认赋予了部分权限。

  • 用户

    系统的访问者,每个用户的权限由该用户关联的用户组和角色所对应的权限构成,用户需要加入用户组或者关联角色来获得对应的权限。

基于策略的权限控制

Ranger组件通过PBAC(policy-based access control,基于策略的权限控制)方式进行权限管理,可对HDFS、Hive、HBase等组件进行更加细粒度的数据访问控制。

组件同时只支持一种权限控制机制,当组件启用Ranger权限控制策略后,通过FusionInsight Manager创建的角色中关于该组件的权限将失效(HDFS与Yarn的组件ACL规则仍将生效),用户需通过Ranger管理界面添加策略进行资源的赋权。

Ranger的权限模型由多条权限策略组成,权限策略主要由以下几方面组成:

  • 资源

    组件所提供的可由用户访问的对象,例如HDFS的文件或文件夹、Yarn中的队列、Hive中的数据库/表/列等。

  • 用户

    系统的访问者,每个用户的权限由该用户关联的策略来获得。LDAP中的用户、用户组、角色信息会周期性的同步至Ranger。

  • 权限

    策略中针对资源可配置各种访问条件,例如文件的读写,具体可以配置允许条件、拒绝条件以及例外条件等。

权限机制

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

MRS使用Kerberos进行统一认证。

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

  1. 客户端(用户终端或MRS组件服务)调用MRS认证接口。
  2. MRS使用登录用户名和密码,到Kerberos进行认证。
  3. 如果认证成功,客户端会发起访问服务端(MRS组件服务)的请求。
  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,无任何权限。