配置HetuEngine对接LakeFormation数据连接
配置LakeFormation数据连接操作及配置MRS集群组件的存算分离后,才可以正常使用HetuEngine对接LakeFormation统一的数据湖元数据及权限管理。
前提条件
- LakeFormation实例运行正常,数据库、数据表、数据权限等页面加载正常。
- 集群已启用Kerberos认证(安全模式),且运行正常,包含HetuEngine、Guardian、Ranger、Hive等服务。
- 已完成MRS集群对接LakeFormation,并配置MRS集群Hive组件的存算分离,详情可参考创建集群时配置LakeFormation数据连接或为已有集群配置LakeFormation数据连接。
- 已创建HetuEngine管理员用户,创建用户可参考创建HetuEngine权限角色。
- 已创建HetuEngine计算实例,可参考创建HetuEngine计算实例。
约束与限制
本章节适用于MRS 3.5.0及以后版本。
配置HetuEngine对接LakeFormation步骤
- 获取Hive数据源集群的“hive-site.xml”、“hdfs-site.xml”和“core-site.xml”配置文件。
- 登录Hive数据源所在集群的FusionInsight Manager页面。
- 在“主页”右上方单击“下载客户端”,根据界面提示下载“完整客户端”文件到本地。
- 将下载的客户端文件压缩包解压,获取如下文件:
- 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
- 获取服务端Principal并修改“core-site.xml”文件。
- 打开“hive-site.xml”文件,搜索参数“hive.server2.authentication.kerberos.principal”,对应的值即为服务端Principal。
- 将“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>
- 在“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>
- 获取Hive数据源的代理用户的“user.keytab”和“krb5.conf”文件。
- 登录Hive数据源所在集群的FusionInsight Manager页面。选择“系统 > 权限 > 用户”。
- 选择对应的数据源用户,在“操作”列中选择“更多 > 下载认证凭据”,选择下载位置为“浏览器”。
- 从下载的文件中解压后获取“user.keytab”和“krb5.conf”文件。
- 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
- 在概览页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
- 选择“数据源”,单击“添加数据源”。在“添加数据源”页面填写参数。
- 配置“基本配置”,填写数据源名称,选择数据源类型“Hive”。
- 配置“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
- 配置“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
- 连接池配置。
- 自定义配置。
- 单击“确定”。
- 登录集群客户端所在节点,执行以下命令,切换到客户端安装目录并认证用户。
cd /opt/client
source bigdata_env
kinit HetuEngine组件操作用户
- 执行以下命令,登录数据源的catalog。
hetu-cli --catalog 数据源名称 --schema 数据库名 --tenant 租户名称
例如执行以下命令:
hetu-cli --catalog lakeformation_lf --schema default --tenant default
- 执行以下命令,可正常查看数据库表信息或不报错即表示连接成功。
show tables;
为HetuEngine配置LakeFormation授权管理
LakeFormation鉴权场景包括SQL鉴权(引擎侧鉴权)和接口鉴权(调用元数据时LakeFormation鉴权)。接口鉴权请参考创建具有访问LakeFormation权限的委托赋权,确保委托用户LakeFormation具备接口操作权限。
本章节重点讲解SQL鉴权。MRS集群对接LakeFormation后,LakeFormation服务中的相关数据湖权限策略及角色信息会自动同步至MRS Ranger,对于MRS集群内的用户, 可通过关联至对应Ranger角色后获取对应资源的访问权限。
当已完成HetuEngine对接LakeFormation数据连接后,开启数据源鉴权时需为HetuEngine组件配置相关访问权限。
- 在LakeFormation中添加鉴权角色。
- 登录LakeFormation管理控制台。
- 在LakeFormation管理面上,进入“数据权限 > 角色”页面,单击“创建角色”,“角色名称”填写“hetu_test”,单击“确定”。
- 在Ranger为待鉴权用户添加角色,将HetuEngine内置用户设置为Admin。
- 使用Ranger管理员用户rangeradmin登录Ranger管理页面。
- 单击“Settings”,在“Users”页签的“Users”用户列表中,单击HetuEngine内置用户“hetuserver/hadoop.xxxx”,将“Select Role”设置为“Admin”,单击“Save”。
- 在“Roles”页签,单击在LakeFormation创建的角色名,如“hetu_test”,在“Users”项的“Select User”框中选择待鉴权的HetuEngine用户,例如hetutest,然后单击“Add Users”,单击“Save”。
- (如果HetuEngine服务启用了Ranger鉴权,则执行此步骤,否则跳过)在Ranger页面为对接LakeFormation的HetuEngine数据源catalog配置基础权限策略,
- 在Ranger管理页面首页中单击“TRINO”区域的“HetuEngine”。
- 在“Access”页签单击“Add New Policy”,添加HetuEngine权限控制策略。
- 参考如下设置HetuEngine权限控制策略。
- 在“Policy Name”填写策略名称。
- 在“Presto Catalog”填写要授权的资源所在的catalog,如“lakeformation_lf”。
- 在“Select User”中填授权的Hetu用户hetutest。
- 在“Permissions”中勾选“Select”。
说明:
此策略为基础策略,在配置其他LakeFormation策略前必须先确保配置了此策略。
- 在Ranger将对接LakeFormation的HetuEngine数据源catalog赋予权限。
- 在Ranger管理页面首页中单击“TRINO”区域的“HetuEngine”。
- 在“Access”页签单击“Add New Policy”,添加HetuEngine权限控制策略。
- 参考如下设置HetuEngine权限控制策略。
- catalog:填写对接LakeFormation的HetuEngine数据源名称,例如“lakeformation_lf”。
- schema、table、column:填写“*”。
- Select User:选择“hetutest”。
- Permissions:选择“All”。
- 单击“save”保存策略。
Ranger鉴权和LakeFormation鉴权取交集,即需要同时满足Ranger权限和LakeFormation权限才可以鉴权通过,Ranger鉴权配置请参考HetuEngine基于Ranger权限管控。
- 在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语法鉴权的对象进行选择和配置。