
# 配置Hive对接LakeFormation授权管理
LakeFormation数据湖权限支持配置数据库、数据表、函数等维度的权限。云服务管理员可针对不同的管理对象配置不同IAM用户组的权限，统一对数据湖资源进行管理。
MRS集群对接LakeFormation后，LakeFormation服务中的相关数据湖权限策略及角色信息会自动同步至MRS Ranger，对于MRS集群内的用户， 可通过关联至对应Ranger角色后获取对应资源的访问权限。
本示例描述了在LakeFormation数据湖中新创建了数据表后，如何为Hive组件配置资源授权、OBS路径授权的相关访问权限。
![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
- 用户可通过LakeFormation管理控制台对数据湖内的资源进行统一权限管理，对于IAM用户/用户组，也可以通过关联LakeFormation服务的细粒度权限策略进行特定权限场景的授权。当湖内数据资源较多时，建议通过LakeFormation管理控制台对数据湖内的资源进行统一权限管理。
- 关于LakeFormation服务详细的权限配置说明及授权的权限类型，可参考[配置LakeFormation元数据权限](https://support.huaweicloud.com/usermanual-lakeformation/lakeformation_03_00014.html)章节。
- 对接LakeFormation后，对OBS路径的授权仅支持在LakeFormation上进行操作。
 
#### 前提条件
- 本章节内容仅适用于MRS 3.6.0及之后版本。
- LakeFormation实例运行正常，数据库、数据表、数据权限等页面加载正常。
- 集群已关闭Kerberos认证（普通模式），且运行正常，包含Guardian、Ranger、Hive等服务。
- MRS已与LakeFormation实例对接成功，并重新下载安装了集群客户端，例如安装目录为"/opt/client"。
- 已登录MRS集群的FusionInsight Manager界面添加人机用户"testuser"，加入hadoop、hive用户组，用户创建成功后初始化密码。
 
#### Hive对接LakeFormation后授权操作样例
1. 关闭Kerberos认证的集群（普通模式）默认关闭Ranger鉴权，需要参考以下步骤开启Hive的Ranger鉴权。 
   登录MRS集群Manager，选择"集群 \> 服务 \> Hive"，在右上角选择"更多 \> 启用Ranger鉴权"根据界面提示进行启用。
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 登录[LakeFormation管理控制台](https://console.huaweicloud.com/lake-formation/)。
3. 选择MRS集群对接的LakeFormation实例，在左侧导航栏选择"数据目录"，在Catalog列表中单击hive，在"数据库"页签中单击default，在"数据表"页签单击"创建"，编辑相关内容后单击"提交"。 
   - "表名称"填写"lf_orctb1"。
   
   - "表格格式"选择"HIVE"。
   
   - "数据源格式"选择"Orc"。
   
   - 单击"Schema"区域的"添加"： "名称"填"c1"，"类型"选择"int"；
     再次单击"添加"，新增一行，"名称"填"c2"，"类型"选择"int"；
     再次单击"添加"，新增一行，"名称"填"p1"，"分区键"选择"是"，"类型"选择"int"。
     
   
   
   其他参数根据实际需要配置或保持默认。
   
   
4. 登录MRS集群客户端所在节点，然后登录Hive Beeline命令行。 
   **cd /opt/client**
   **source bigdata_env**
   **beeline**
   
   
5. 执行如下SQL，读写LakeFormation上已存在的数据表。 
   **select \* from default.lf_orctb1;**
   **insert into lf_orctb1 values (1,1,1);**
   SQL执行失败，有Error提示用户缺少权限。
   
   
6. 在LakeFormation管理控制台，选择"数据权限 \> 角色"页面，单击"创建角色"，"角色名称"填写"testrole"，单击"确定"。
7. 对角色进行授权/取消授权，支持在LakeFormation页面授权。 
   进入"数据授权"页面，单击"授权"，编辑如下，将访问表所需的权限赋予"testrole"，单击"确定"。
   - 主体类型：选择"角色"。
   
   - 选择角色：下拉框选择刚创建的角色"testrole"。
   
   - 授权类型：选择"资源"。
   
   - Catalog：选择"hive"。
   
   - 数据库：下拉框选择"default"，选中后再选择表。
   
   - 表：下拉框选择"lf_orctb1"。
   
   - 权限：勾选"SELECT"、"UPDATE"。
   
   
   ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
   MRS对接LakeFormation仅支持role授权，对user/group授权将默认转为对同名role的权限操作，role需要提前在LakeFormation页面创建；
   
   
8. 如果创建的表为外表，类型为"EXTERNAL_TABLE"，需要执行该操作。否则请跳过该步骤。 
   进入"数据授权"页面，单击"授权"，编辑如下，将外表的OBS路径的读写权限赋予"testrole"，单击"确定"。
   - 主体类型：选择"角色"。
   
   - 选择角色：下拉框选择刚创建的角色"testrole"。
   
   - 授权类型：选择"路径"。
   
   - 路径：选择为外表的存储路径。
   
   - 权限：勾选"READ"、"WRITE"。
   
   
   
   
9. 检查MRS RangerAdmin上已同步角色和策略，并在对应Ranger角色上添加用户。 
   1. 使用**admin**用户登录MRS集群的FusionInsight Manager页面，选择"集群 \> 服务 \> Ranger"。
   
   2. 在Ranger服务概览，单击"RangerAdmin"进入Ranger Web UI界面。
   
   3. 单击"Hive"进入Hive权限插件，查看添加的策略是否已同步至Ranger。
   
   4. 进入"Settings"页面，单击"Roles"，查看添加的角色是否已同步。
   
   5. 为用户绑定角色，支持Ranger页面绑定。 单击"testrole"，在"Users"下"Select User"输入框中填入"testuser"，单击"Add Users"，然后单击"Save"保存退出。
      
   
   
   
   
10. 回到Hive客户端上，再次执行读写数据表的SQL，成功读取表内容并插入数据。 
    **beeline**
    **select \* from default.lf_orctb1;**
    **insert into lf_orctb1 values (1,1,1);**
    ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
    如果MRS RangerAdmin存在已添加的Role，LakeFormation支持添加同名角色并将权限策略同步至RangerAdmin上并绑定该Role。
    
    
 
#### Hive权限与LakeFormation权限对应关系
- HiveServer开启Ranger鉴权时，Hive权限与LakeFormation权限对应关系请参见下表。
  表1Hive与LakeFormation权限对应关系（开启Ranger鉴权） 
  | Hive权限 | LakeFormation权限                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 权限说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  |:---|:---|:---|
  | ALL    | ALL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | - 数据库：所有操作权限  - 表：所有操作权限                        |
  | ALTER  | ALTER                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | - 数据库：修改数据库  - 表：修改表                                  |
  | UPDATE | UPDATE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | - 数据库：无此权限  - 表：插入/覆盖表数据                              |
  | CREATE | CREATE_TABLE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | - 数据库：在数据库下建表  - 表：无此权限                           |
  | DROP   | DROP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | - 数据库：删除数据库  - 表：删除表                               |
  | SELECT | - 数据库：DESCRIBE、LIST_TABLE  - 表：DESCRIBE、SELECT   | - 数据库：查看元数据信息、查看数据库下的表  - 表：查看元数据信息、查询表数据   |
  | INSERT | INSERT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | - 数据库：无此权限  - 表：插入表数据                                  |
     
  

- HiveServer关闭Ranger鉴权时，Hive权限与LakeFormation权限对应关系请参见下表。 该部分内容仅MRS 3.6.0.1及之后版本集群支持。
  表2Hive与LakeFormation权限对应关系（关闭Ranger鉴权） 
  | Hive权限        | LakeFormation权限                                                                                                                                                                                                                                                                                                                                                  | 权限说明                                                                                                                                                                                                                                                                                                                                                                                                          |
  |:---|:---|:---|
  | ALL           | ALL                                                                                                                                                                                                                                                                                                                                                              | - 数据库：拥有库的SELECT、CREATE_TABLE权限  - 表：拥有表的SELECT、INSERT、DELETE权限                              |
  | CREATE        | CREATE_TABLE                                                                                                                                                                                                                                                                                                                                                     | - 数据库：在数据库下建表  - 表：无此权限                                                                         |
  | DELETE        | DELETE                                                                                                                                                                                                                                                                                                                                                           | - 数据库：无此权限  - 表：使用alter命令删除分区                                                                        |
  | SELECT        | - 数据库：DESCRIBE、LIST_TABLE  - 表：DESCRIBE、SELECT   | - 数据库：查看元数据信息、查看数据库下的表  - 表：查看元数据信息、查询表数据                                                 |
  | INSERT        | INSERT                                                                                                                                                                                                                                                                                                                                                           | - 数据库：无此权限  - 表：插入表数据、使用alter命令增加分区                                                              |
  | ADMIN         | 无                                                                                                                                                                                                                                                                                                                                                                | - 数据库：所有操作权限  - 表：所有操作权限   对接LakeFormation且关闭Ranger鉴权，将用户加到MRS默认的lake_formation_admin用户组后拥有ADMIN权限。 |
  | OWNER(库表的创建者) | OWNER(库表的创建者)                                                                                                                                                                                                                                                                                                                                                    | - 数据库：所有操作权限  - 表：所有操作权限                                                                |
     
  
 
#### 相关文档
对接LakeFormation后，支持通过调整Hive的配置参数，在Hive客户端查看数据库、数据表列表或者通过JDBC的getMetaData接口获取元数据信息时，仅显示当前用户有权限访问的数据库和表，其他未被授权的库表将不再展示，具体操作请参考[配置Hive对接LakeFormation支持show databases/tables鉴权](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_300800.html)。
