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

配置HetuEngine对接LakeFormation数据连接

配置LakeFormation数据连接操作及配置MRS集群组件的存算分离后,才可以正常使用HetuEngine对接LakeFormation统一的数据湖元数据及权限管理。

前提条件

  • LakeFormation实例运行正常,数据库、数据表、数据权限等页面加载正常。
  • 集群已启用Kerberos认证(安全模式),且运行正常,包含HetuEngine、Guardian、Ranger、Hive等服务。

约束与限制

本章节适用于MRS 3.5.0及以后版本。

配置HetuEngine对接LakeFormation步骤

  1. 获取Hive数据源集群的“hive-site.xml”、“hdfs-site.xml”和“core-site.xml”配置文件。

    1. 登录Hive数据源所在集群的FusionInsight Manager页面。
    2. 在“主页”右上方单击“下载客户端”,根据界面提示下载“完整客户端”文件到本地。
    3. 将下载的客户端文件压缩包解压,获取如下文件:
      • hive-site.xml:FusionInsight_Cluster_集群ID_Services_ClientConfig/Hive/config
      • core-site.xml:FusionInsight_Cluster_集群ID_Services_ClientConfig/HDFS/config
      • hdfs-site.xml:FusionInsight_Cluster_集群ID_Services_ClientConfig/HDFS/config

  2. 获取服务端Principal并修改“core-site.xml”文件。

    1. 打开“hive-site.xml”文件,搜索参数“hive.server2.authentication.kerberos.principal”,对应的值即为服务端Principal。
    2. 将“hive-site.xml”文件中的以下配置项和对应的值复制到“core-site.xml”中:
      <property>
      <name>lakeformation.project.id</name>
      <value>********</value>
      </property>
      <property>
      <name>lakeformation.instance.id</name>
      <value>********</value>
      </property>
      <property>
      <name>lakeformation.end.tenant.agency.name</name>
      <value>*********</value>
      </property>
      <property>
      <name>lakeformation.vpcep.ip</name>
      <value>https://********</value>
      </property>
    3. 在“core-site.xml”文件中添加“hive.metastore.warehouse.dir”配置项,值填写为LakeFormation配置中default数据库的路径,即配置LakeFormation实例章节获取的Hive数据目录下default数据库存储路径在OBS中的存储路径,例如“obs://lakeformation-test/hive/default”。
      <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>obs://lakeformation-test/hive/default</value>
      </property>

  3. 获取Hive数据源的代理用户的“user.keytab”和“krb5.conf”文件。

    1. 登录Hive数据源所在集群的FusionInsight Manager页面。选择“系统 > 权限 > 用户”。
    2. 选择对应的数据源用户,在“操作”列中选择“更多 > 下载认证凭据”,选择下载位置为“浏览器”。
    3. 从下载的文件中解压后获取“user.keytab”和“krb5.conf”文件。

  4. 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
  5. 在概览页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
  6. 选择“数据源”,单击“添加数据源”。在“添加数据源”页面填写参数。

    1. 配置“基本配置”,填写数据源名称,选择数据源类型“Hive”。
    2. 配置“Hive配置”,参数配置请参考表1
      表1 Hive配置

      参数

      描述

      取值样例

      开启数据源鉴权

      是否同时使用Hive数据源的权限策略进行鉴权。对接LakeFormation场景下,开启数据源鉴权即打开鉴权,开启数据源鉴权时,需在完成对接LakeFormation数据连接后参考为HetuEngine配置LakeFormation授权管理配置相关权限。

      hdfs-site文件

      在本地选择步骤 1获取的“hdfs-site.xml”配置文件,文件名固定。

      -

      core-site文件

      在本地选择步骤 2修改后的“core-site.xml”配置文件,文件名固定。

      -

      yarn-site文件

      无需添加。

      -

      krb5文件

      Kerberos认证用到的配置文件,在本地选择步骤 3获取的“krb5.conf”文件。

      krb5.conf

    3. 配置“Metastore配置”,参数配置请参考表2
      表2 Metastore配置

      参数

      描述

      取值样例

      Metastore URL

      数据源的Metastore的URL。对接LakeFormation场景时,固定写“thrift://127.0.0.1:80”即可,该配置不起实际作用。

      thrift://127.0.0.1:80

      开启Hudi重定向

      对接LakeFormation场景下不支持开启。

      安全认证机制

      安全模式集群默认为KERBEROS。

      KERBEROS

      服务端Principal

      meta访问metastore带域名的用户名,参数值为该数据源客户端“hive-site.xml”中“hive.server2.authentication.kerberos.principal”参数值。

      获取方法请参考步骤 2

      hive/hadoop.hadoop.com@HADOOP.COM

      客户端Principal

      开启安全模式时填写此参数。

      格式为:访问metastore的用户名@域名大写

      访问metastore的用户名就是步骤 3中获取的“user.keytab”文件所属的用户。

      说明:

      用户可登录FusionInsight Manager,选择“系统 > 权限 > 域和互信”,查看“本端域”参数,即为当前系统域名,如“HADOOP.COM”。

      hetuserver/hadoop.hadoop.com@HADOOP.COM

      keytab文件

      连接metastore用户名的keytab凭据文件,固定名称。在本地选择步骤 3获取的“user.keytab”文件。

      user.keytab

    4. 连接池配置。

      不支持开启连接池,“是否开启连接池”选择“否”。

    5. 自定义配置。
      单击“增加”,配置LakeFormation数据源自定义参数。
      表3 对接LakeFormation自定义参数

      参数

      描述

      取值

      hive.lakeformation.authentication.type

      对接LakeFormation的认证方式。仅支持“GUARDIAN”方式。

      GUARDIAN

      hive.metastore

      MetaStore类型。

      lakeformation

    6. 单击“确定”。

  7. 登录集群客户端所在节点,执行以下命令,切换到客户端安装目录并认证用户。

    cd /opt/client

    source bigdata_env

    kinit HetuEngine组件操作用户

  8. 执行以下命令,登录数据源的catalog。

    hetu-cli --catalog 数据源名称 --schema 数据库名 --tenant 租户名称

    例如执行以下命令:

    hetu-cli --catalog lakeformation_lf --schema default --tenant default

  9. 执行以下命令,可正常查看数据库表信息或不报错即表示连接成功。

    show tables;

为HetuEngine配置LakeFormation授权管理

LakeFormation鉴权场景包括SQL鉴权(引擎侧鉴权)和接口鉴权(调用元数据时LakeFormation鉴权)。接口鉴权请参考创建具有访问LakeFormation权限的委托赋权,确保委托用户LakeFormation具备接口操作权限。

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

当已完成HetuEngine对接LakeFormation数据连接后,开启数据源鉴权时需为HetuEngine组件配置相关访问权限。

  1. 在LakeFormation中添加鉴权角色。

    1. 登录LakeFormation管理控制台
    2. 在LakeFormation管理面上,进入“数据权限 > 角色”页面,单击“创建角色”,“角色名称”填写“hetu_test”,单击“确定”。

  2. 在Ranger为待鉴权用户添加角色,将HetuEngine内置用户设置为Admin。

    1. 使用Ranger管理员用户rangeradmin登录Ranger管理页面。
    2. 单击“Settings”,在“Users”页签的“Users”用户列表中,单击HetuEngine内置用户“hetuserver/hadoop.xxxx”,将“Select Role”设置为“Admin”,单击“Save”。
    3. 在“Roles”页签,单击在LakeFormation创建的角色名,如“hetu_test”,在“Users”项的“Select User”框中选择待鉴权的HetuEngine用户,例如hetutest,然后单击“Add Users”,单击“Save”。

  3. (如果HetuEngine服务启用了Ranger鉴权,则执行此步骤,否则跳过)在Ranger页面为对接LakeFormation的HetuEngine数据源catalog配置基础权限策略,

    1. 在Ranger管理页面首页中单击“TRINO”区域的“HetuEngine”。
    2. 在“Access”页签单击“Add New Policy”,添加HetuEngine权限控制策略。
    3. 参考如下设置HetuEngine权限控制策略。
    • 在“Policy Name”填写策略名称。
    • 在“Presto Catalog”填写要授权的资源所在的catalog,如“lakeformation_lf”。
    • 在“Select User”中填授权的Hetu用户hetutest。
    • 在“Permissions”中勾选“Select”。

    说明:

    此策略为基础策略,在配置其他LakeFormation策略前必须先确保配置了此策略。

  4. 在Ranger将对接LakeFormation的HetuEngine数据源catalog赋予权限。

    1. 在Ranger管理页面首页中单击“TRINO”区域的“HetuEngine”。
    2. 在“Access”页签单击“Add New Policy”,添加HetuEngine权限控制策略。
    3. 参考如下设置HetuEngine权限控制策略。
      • catalog:填写对接LakeFormation的HetuEngine数据源名称,例如“lakeformation_lf”。
      • schema、table、column:填写“*”。
      • Select User:选择“hetutest”。
      • Permissions:选择“All”。
    4. 单击“save”保存策略。

      Ranger鉴权和LakeFormation鉴权取交集,即需要同时满足Ranger权限和LakeFormation权限才可以鉴权通过,Ranger鉴权配置请参考HetuEngine基于Ranger权限管控

  5. 在LakeFormation对角色进行授权。

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

    • 主体类型:选择“角色”。
    • 选择角色:下拉框选择刚创建的角色“hetu_test”。
    • 授权类型:选择“资源”
    • Catalog:选择“hive”
    • 数据库、表、列等:参考表4,根据SQL语法鉴权的对象进行选择和配置。
    • 操作类型:参考表4
    表4 HetuEngine语法与权限对应关系

    HetuEngine语法

    SQL鉴权所需LakeFormation权限

    schema

    create schema

    Catalog:CREATE_DATABASE

    show schemas

    Catalog:LIST_DATABASE

    show create schema

    数据库:DESCRIBE

    drop schema

    • 数据库:DROP
    • 表:DROP

    alter schema set location/owner

    数据库:ALTER

    desc schema

    Catalog:LIST_DATABASE

    table

    create table

    数据库:CREATE_TABLE

    create table as select

    • 数据库:CREATE_TABLE
    • 源表:SELECT(或列:SELECT)

    show create table

    表:DESCRIBE

    select from table

    表:SELECT(或列:SELECT)

    insert into table

    • 表:INSERT
    • 表:SELECT(或列:SELECT)

    alter table

    表:ALTER

    alter table drop partition

    • 表:DELETE
    • 表:SELECT

    delete from table

    • 表:DELETE
    • 表:SELECT(如带WHERE条件)

    show tables

    数据库:LIST_TABLE

    drop table

    表:DROP

    show partitions

    表:SELECT

    truncate table

    表:DELETE

    desc table

    表:DESCRIBE

    comment

    表:ALTER

    view

    create view

    • 数据库:CREATE_TABLE
    • 源表:SELECT(或列:SELECT)

    drop view

    表:DROP

    alter view

    表:ALTER (视图)

    select from view

    表:SELECT(视图和源表)

    show views

    数据库:LIST_TABLE

    show create view

    表:DESCRIBE (视图)

    column

    show columns

    表:DESCRIBE

    select [column] from table

    表:SELECT(或列:SELECT)

    stats

    show stats

    表:SELECT(或列:SELECT)

    analyze

    • 表:INSERT
    • 表:SELECT(或列:SELECT)
    • 由于使用角色进行鉴权,表创建者具有所创建的表的所有权限。
    • LakeFormation属于数据源鉴权,无法对HetuEngine引擎所有操作进行控制,如set session、reset session等操作。未在表4表中列出的语法均视为无控制,若需要对这些操作进行权限控制,请参考HetuEngine基于Ranger权限管控
    • explain、explain analyze、call等操作本身无权限控制,但子语句涉及权限控制,则权限与子语句权限控制相同,参考表4,根据SQL语法鉴权的对象进行选择和配置。

相关文档