配置HetuEngine对接LakeFormation数据连接
配置LakeFormation数据连接操作及配置MRS集群组件的存算分离后,才可以正常使用HetuEngine对接LakeFormation统一的数据湖元数据及权限管理。
前提条件
- 本章节内容仅适用于MRS 3.6.0及之后版本。
- LakeFormation实例运行正常,数据库、数据表、数据权限等页面加载正常。
- 集群关闭Kerberos认证(普通模式),且运行正常,包含HetuEngine、Guardian、Ranger、Hive等服务。
- 已完成MRS集群对接LakeFormation,并配置MRS集群Hive组件的存算分离,详情可参考创建集群时配置LakeFormation数据连接或为已有集群配置LakeFormation数据连接。
- 已创建HetuEngine管理员用户,创建用户可参考创建HetuEngine权限角色。
- 已创建HetuEngine计算实例,可参考创建HetuEngine计算实例。
配置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”文件中的以下配置项和对应的值复制到“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-site.xml”文件中的以下配置项和对应的值复制到“core-site.xml”中:
- 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
- 在概览页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
- 选择“数据源”,单击“添加数据源”。在“添加数据源”页面填写参数。
- 普通集群对接LakeFormation时,使用LakeFormation鉴权前,需要参考以下操作启用HetuEngine的Ranger鉴权。
- 登录MRS Manager,选择“集群 > 服务 > HetuEngine”。
- 在右上角选择“更多 > 启用Ranger鉴权”根据界面提示进行启用。
- 启用完成后单击“实例”页签,重启HSBroker实例更新配置。
- 登录HSConsole页面重启所有计算实例。
HetuEngine在第一次使用LakeFormation鉴权前必须启用一次Ranger鉴权,启用之后,后续停用Ranger鉴权也不会影响LakeFormation鉴权。
- 登录集群客户端所在节点,执行以下命令,切换到客户端安装目录。
cd /opt/client
source bigdata_env
- 执行以下命令,登录数据源的catalog。
hetu-cli --catalog 数据源名称 --schema 数据库名 --tenant 租户名称 --user 待鉴权的HetuEngine用户
例如执行以下命令:
hetu-cli --catalog lakeformation_lf --schema default --tenant default --user hetutest
- 执行以下命令,可正常查看新增数据源即表示连接成功。
show catalogs;
为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。
- 使用admin登录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”中填写授权的HetuEngine用户名称,例如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:选择授权的HetuEngine用户名称,例如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语法鉴权的对象进行选择和配置。
- 普通模式集群创建的数据库不支持通过alter database set owner语句修改数据库owner。