
# MRS集群用户权限模型
MRS集群通过采用RBAC（role-based access control，基于角色的权限控制）方式对大数据系统进行权限管理，将系统中各组件零散的权限管理功能集中呈现和管理，对普通用户屏蔽掉了内部的权限管理细节，对管理员简化了权限管理的操作方法，提升权限管理的易用性和用户体验。
#### 视频介绍
<video controls="controls" preload="none" id="object2713581131" class="idp-external-video" src="https://res-static.hc-cdn.cn/cloudbu-site/china/zh-cn/support/mrs-video/1726747298786672986.mp4" title="MRS集群用户权限管理介绍" poster="https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002316312268.jpg" height="300.0000" width="600.0000"></video>
#### 基于角色的权限控制
MRS集群权限模型由"用户－用户组－角色－权限"四类对象构成。
图1权限模型   
![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001965097889.png "点击放大")
- **权限**
  由组件侧定义，允许访问组件某个资源的能力。不同组件针对自己的资源，有不同的权限。
  例如：
  - 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获得userA属于的所有角色（roleB）。
2. HDFS同时还会获得userA属于的所有用户组所属于的角色（roleA）。
3. 此时，userA拥有roleA和roleB对应权限的并集。
4. 因此对于fileA，则userA有读写权限；对fileB，有读权限；对于fileC，无任何权限。
同理userB登录后：
1. userB只拥有roleB对应的权限。
2. 对于fileA，则userB无权限；对fileB，有读权限；对于fileC，无任何权限。
 
