更新时间:2025-12-11 GMT+08:00
分享

配置Hive对接LakeFormation授权管理

LakeFormation数据湖权限支持配置数据库、数据表、函数等维度的权限。云服务管理员可针对不同的管理对象配置不同IAM用户组的权限,统一对数据湖资源进行管理。

MRS集群对接LakeFormation后,LakeFormation服务中的相关数据湖权限策略及角色信息会自动同步至MRS Ranger,对于MRS集群内的用户, 可通过关联至对应Ranger角色后获取对应资源的访问权限。

本示例描述了在LakeFormation数据湖中新创建了数据表后,如何为Hive组件配置资源授权、OBS路径授权的相关访问权限。

  • 用户可通过LakeFormation管理控制台对数据湖内的资源进行统一权限管理,对于IAM用户/用户组,也可以通过关联LakeFormation服务的细粒度权限策略进行特性权限场景的授权。当湖内数据资源较多时,建议通过LakeFormation管理控制台对数据湖内的资源进行统一权限管理。
  • 关于LakeFormation服务详细的权限配置说明及授权的权限类型,可参考配置LakeFormation元数据权限章节。
  • 对接LakeFormation后,对OBS路径的授权仅支持在LakeFormation上进行操作。

前提条件

  • LakeFormation实例运行正常,数据库、数据表、数据权限等页面加载正常。
  • 集群已启用Kerberos认证(安全模式),且运行正常,包含Guardian、Ranger、Hive等服务。
  • MRS已与LakeFormation实例对接成功,并重新下载安装了集群客户端,例如安装目录为“/opt/client”。
  • 已登录MRS集群的FusionInsight Manager界面添加人机用户“testuser”,加入hadoop、hive用户组,用户创建成功后初始化密码。

Hive对接LakeFormation后授权操作样例

  1. 登录LakeFormation管理控制台
  2. 选择LakeFormation实例后进入数据表页面,“数据库”选择“default”,然后单击“创建表”,编辑相关内容后单击“提交”。

    • “表名称”填写“lf_orctb1”。
    • “所属数据库”选择“default”。
    • “数据源格式”选择“Orc”。
    • 单击“添加表字段”:

      “名称”填“c1”,“类型”选择“int”;单击加号,新增一行,“名称”填“c2”,“类型”选择“int”。

      单击“确定”。

    • 单击“添加分区键”:

      “名称”填“p1”,“类型”选择“int”。

      单击“确定”。

  3. 登录MRS集群客户端所在节点,然后登录Hive Beeline命令行。

    cd /opt/client

    source bigdata_env

    kinit testuser集群已启用Kerberos认证(安全模式)时执行该命令,未开启时请跳过)

    beeline

  4. 执行如下SQL,读写LakeFormation上已存在的数据表。

    select * from default.lf_orctb1;

    insert into lf_orctb1 values (1,1,1);

    SQL执行失败,有Error提示用户缺少权限。

  5. 在LakeFormation管理控制台,选择“数据权限 > 角色”页面,单击“创建角色”,“角色名称”填写“testrole”,单击“确定”。
  6. 对角色进行授权/取消授权,支持在LakeFormation页面授权与执行Hive GRANT/REVOKE SQL两种方式。

    方式一

    进入“数据授权”页面,单击“授权”,编辑如下,将访问表所需的权限赋予“testrole”,单击“确定”。

    • 主体类型:选择“角色”。
    • 选择角色:下拉框选择刚创建的角色“testrole”
    • 授权类型:选择“资源”
    • Catalog:选择“hive”
    • 数据库:下拉框选择“default”,选中后再选择表。
    • 表:下拉框选择“lf_orctb1”。
    • 操作类型:勾选“SELECT”、“UPDATE”。

    方式二(该方式仅MRS 3.5.0及之后版本支持)

    执行Hive grant/revoke SQL,进行权限操作。

    例如:对“testrole”角色授权“lf_orctb1”表的“SELECT”、“UPDATE”权限;

    GRANT SELECT, UPDATE ON TABLE lf_orctb1 TO ROLE testrole;

    取消“testrole”角色的“lf_orctb1”表“SELECT”、“UPDATE”权限;

    REVOKE SELECT, UPDATE ON TABLE lf_orctb1 FROM ROLE testrole;

    1. MRS对接LakeFormation仅支持role授权,对user/group授权将默认转为对同名role的权限操作,role需要提前在LakeFormation页面创建;
    2. 对接LakeFormation场景SQL语句授权时,数据库/表大小写不敏感,统一转为小写处理,user/group/role严格区分大小写;

  7. 如果创建的表为外表,类型为“EXTERNAL_TABLE”,需要执行该操作。否则请跳过该步骤。

    进入“数据授权”页面,单击“授权”,编辑如下,将外表的OBS路径的读写权限赋予“testrole”,单击“确定”。

    • 主体类型:选择“角色”。
    • 选择角色:下拉框选择刚创建的角色“testrole”
    • 授权类型:选择“路径”
    • 路径:选择为外表的存储路径。
    • 操作类型:勾选“READ”、“WRITE”。

  8. 检查MRS RangerAdmin上已同步角色和策略,并在对应Ranger角色上添加用户。

    1. 使用admin用户登录MRS集群的FusionInsight Manager页面,选择“集群 > 服务 > Ranger”。
    2. 在Ranger服务概览,单击“RangerAdmin”进入Ranger Web UI界面。
    3. 进入Ranger Web UI后单击右上角用户名后继续单击“Log Out”,然后再通过rangeradmin用户重新登录Ranger Web UI。如果为初次登录,需修改初始密码。

      初始密码可参考MRS集群用户账号一览表或联系集群管理员获取。

    4. 单击“Hive”进入Hive权限插件,查看添加的策略是否已同步至Ranger。
    5. 进入“Settings”页面,单击“Roles”,查看添加的角色是否已同步。
    6. 为用户绑定角色,支持Ranger页面绑定与Hive GRANT/REVOKE SQL两种方式。

      方式一:Ranger页面绑定。

      单击“testrole”,在“Users”下“Select User”输入框中填入“testuser”,单击“Add Users”,然后单击“Save”保存退出。

      方式二:使用rangeradmin用户认证,执行Hive GRANT/REVOKE SQL进行操作。(该方式仅MRS 3.5.0及之后版本支持)

      对“testuser”用户绑定“testrole”角色;

      GRANT testrole TO USER testuser;

      解绑“testuser”用户的“testrole”角色;

      REVOKE testrole FROM USER testuser;

  9. 回到Hive客户端上,再次执行读写数据表的SQL,成功读取表内容并插入数据。

    beeline

    select * from default.lf_orctb1;

    insert into lf_orctb1 values (1,1,1);

    如果MRS RangerAdmin存在已添加的Role,LakeFormation支持添加同名角色并将权限策略同步至RangerAdmin上并绑定该Role。

Hive权限与LakeFormation权限对应关系

该部分内容仅MRS 3.5.0及之后版本集群支持。

对接LakeFormation场景Hive GRANT/REVOKE SQL不支持Catalog、函数、路径授权,不支持describe与list_table/select单独授权,相关场景仍需要在LakeFormation实例的数据权限界面进行授权操作。

Hive权限与LakeFormation权限对应关系请参见表1

表1 Hive权限与LakeFormation权限对应关系

Hive权限

LakeFormation权限

权限说明

ALL

ALL

  • 数据库:所有操作权限
  • 表:所有操作权限

ALTER

ALTER

  • 数据库:修改数据库
  • 表:修改表

UPDATE

UPDATE

  • 数据库:无此权限
  • 表:插入/覆盖表数据

CREATE

CREATE_TABLE

  • 数据库:在数据库下建表
  • 表:无此权限

DROP

DROP

  • 数据库:删除数据库
  • 表:删除表

SELECT

  • 数据库:DESCRIBE、LIST_TABLE
  • 表:DESCRIBE、SELECT
  • 数据库:查看元数据信息、查看数据库下的表
  • 表:查看元数据信息、查询表数据

INSERT

INSERT

  • 数据库:无此权限
  • 表:插入表数据

相关文档