添加HetuEngine的Ranger访问权限策略
操作场景
Ranger管理员可通过Ranger为HetuEngine用户配置操作数据源的catalog、trinouser、systemproperty、function、schema、sessionproperty、table、procedure、column 等资源的管理权限。
前提条件
- 已安装Ranger服务且服务运行正常。
- 已创建用户需要配置权限的用户、用户组或角色。
- 用户已加入hetuuser组。
- 在使用HetuEngine前,请确保客户端操作用户/连接数据源的配置文件中的用户是具备预期的操作权限,如果没有请参考对应的数据源权限配置。
操作步骤
- 使用Ranger管理员用户rangeradmin登录Ranger管理页面,具体操作可参考登录Ranger管理界面。
- 在首页中单击“TRINO”区域的“HetuEngine”。
- 在“Access”页签单击“Add New Policy”,添加HetuEngine权限控制策略。
- 根据业务需求配置相关参数。
“授予访问表所在的Catalog策略”为基础策略,配置其他策略前必须先确保配置了此策略,可参考表2进行配置。
表1 HetuEngine权限参数 参数名称
描述
Policy Name
策略名称,可自定义,不能与本服务内其他策略名称重复。
- Enabled:启用当前策略。
- Disabled:不启用当前策略。
Policy Conditions
IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:192.168.1.10,192.168.1.20或者192.168.1.*。
Policy Label
为当前策略指定一个标签,您可以根据这些标签搜索报告和筛选策略。
catalog
适用该策略的数据源Catalog名称,填写*时表示所有Catalog。
- Include:策略适用于当前输入的对象。
- Exclude:策略适用于除去当前输入内容之外的其他对象。
trinouser
适用该策略的trinouser名称,填写*时表示所有trinouser,用于用户模拟访问。
- Include:策略适用于当前输入的对象。
- Exclude:策略适用于除去当前输入内容之外的其他对象。
systemproperty
适用该策略的系统会话属性名称,填写*时表示所有的系统会话属性。
- Include:策略适用于当前输入的对象。
- Exclude:策略适用于除去当前输入内容之外的其他对象。
function
适用该策略的function名称,填写*时表示所有function。
- Include:策略适用于当前输入的对象。
- Exclude:策略适用于除去当前输入内容之外的其他对象。
schema
适用该策略的schema名称,填写*时表示所有schema。
- Include:策略适用于当前输入的对象。
- Exclude:策略适用于除去当前输入内容之外的其他对象。
sessionproperty
适用该策略的数据源会话属性,填写*时表示数据源下所有会话属性。
- Include:策略适用于当前输入的对象。
- Exclude:策略适用于除去当前输入内容之外的其他对象。
table
适用该策略的table/view名称,填写*时表示所有table。
- Include:策略适用于当前输入的对象。
- Exclude:策略适用于除去当前输入内容之外的其他对象。
procedure
适用该策略的procedure名称,填写*时表示所有procedure。
- Include:策略适用于当前输入的对象。
- Exclude:策略适用于除去当前输入内容之外的其他对象。
column
适用该策略的列名,填写*时表示所有列。
Description
策略描述信息。
Audit Logging
是否审计此策略。
Allow Conditions
策略允许条件,配置本策略内允许的权限及例外。
在“Select Role”、“Select Group”、“Select User”列选择已创建好的需要授予权限的Role、用户组或用户。单击“Add Conditions”,添加策略适用的IP地址范围,单击“Add Permissions”,添加对应权限。
- Select:查询权限
- Insert:插入权限
- Create:创建权限
- Drop:drop权限
- Delete:删除权限
- Use:use权限
- Alter:alter权限
- Grant:给特定授权人授予特定权限
- Revoke:取消特定授权人的特定权限
- Show:显示指定表下的所有授权列的类型和其他属性权限
- Impersonate:Kerberos或LDAP认证用户模拟Trino查询用户权限
- Update:更新权限
- execute:执行函数权限
- All:所有执行权限(涵盖Admin权限)
- Select/Deselect All:全选/取消全选
如需添加多条权限控制规则,可单击按钮添加。
如需当前条件中的用户或用户组管理本条策略,可勾选“Delegate Admin”,这些用户将成为受委托的管理员。被委托的管理员可以更新、删除本策略,它还可以基于原始策略创建子策略。
Deny Conditions
策略拒绝条件,配置本策略内拒绝的权限及例外,配置方法与“Allow Conditions”相同。
- 配置的权限应该与所属的层次保持一致。如果配置的权限与所属的层次不相符,则该权限配置将不起作用。
- Ranger会对用户进行两次权限检查,首先检查该用户是否有访问Catalog的权限,其次检查本次访问所涉及到的权限。
表2 设置权限 任务场景
角色授权操作
授予访问表所在的Catalog策略(配置其他策略前必选)
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的资源所在的catalog,如“hive”。
- 将“schema”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Select”。
须知:此策略为基础策略,在配置其他策略前必须先确保配置了此策略。
授予访问远端HetuEngine表的权限
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的表所在的catalog,“systemremote”和“svc”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入“*”。
- 在“schema”下方的下拉框中选中“table”,同时在其对应的输入框中输入“*”。
- 在“table”下方的下拉框中选中“column”,同时在其对应的输入框中输入“*”。
- 在“Select User”中填授权的远端HetuEngine用户。
- 在“Permissions”中勾选“Create、Drop、Select、Insert”。
说明:此策略为远端HetuEngine表的基础策略,在配置其他策略前必须先确保配置了此策略。
Create schema
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的schema所在的catalog,如“hive”。
- 将“schema”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Create”。
Drop schema
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的schema所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权的schema名称。如使用“*”,表示对所有当前catalog下的所有schema进行授权。
- 将“table”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Drop”。
Show schemas
新增schema所在的catalog权限
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的schema所在的catalog,如“hive”。
- 将“schema”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Show、Select”
新增schema的show权限
- 在“Policy Name”填写策略名称
- 在“Catalog”填写要授权的schema所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权的schema名称。如果填“*”,表示对所有当前catalog下的所有schema进行授权。
- 将“table”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Select”
说明:- 执行show schemas命令时,需要配置对Catalog的Show权限。同理,如果需要执行show tables命令,则需要配置对Schema的Show权限。
- 鉴权完成后,还会对获取到的Schema和Table的列表进行一次筛选,只显示具有Select权限的Schema和Table,所以还需要配置Schema和Table的Select权限。执行Show命令时,只会显示出具有Select权限的Schema和Table。
- 只有拥有Catalog的Select权限时,才能显示出该Catalog下具有权限的Schema和Table。
Create table
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的table所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权table所在的schema,如“default”。
- 将“table”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Create”。
Drop table
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的table所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权table所在的schema,如“default”。
- 在“schema”下方的下拉框中选中“table”,同时在其对应的输入框中输入要授权的目标table。如使用“*”,表示对所有当前schema下的所有table进行授权。
- 将“column”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Drop”。
Delete table
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的table所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权table所在的schema,如“default”。
- 在“schema”下方的下拉框中选中“table”,同时在其对应的输入框中输入要授权的目标table。如使用“*”,表示对所有当前schema下的所有table进行授权。
- 将“column”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Delete”。
Alter table
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的table所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权table所在的schema,如“default”。
- 在“schema”下方的下拉框中选中“table”,同时在其对应的输入框中输入要授权的目标table。如使用“*”,表示对所有当前schema下的所有table进行授权。
- 将“column”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Alter”。
说明:- ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec[, PARTITION partition_spec, ...]; 的操作需要额外授予Table级别的“delete”和Column级别的“select”权限。
- ALTER TABLE table_name DROP COLUMN column_name和ALTER TABLE table_name_2 EXCHANGE PARTITION的操作需要额外授予Table级别的“drop”级别权限。
Show tables
新增table所在的schema权限
- 在“Policy Name”填写策略名称
- 在“Catalog”填写要授权的schema所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入允许show table的目标schema,如“default”。
- 将“table”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Show”
新增table的show权限
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的表所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入允许show table的目标schema,如“default”。
- 将“table”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Select”。
Show partitions
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的表所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入允许show table的目标schema,如“default”。
- 在“schema”下方的下拉框中选中“table”,同时在其对应的输入框中输入要授权的目标table,如hive_table,以及目标table对应的内部表,如 hive_table$partitions。
- 在“table”下方的下拉框中选中“column”,同时在其对应的输入框中输入要授权的目标column。如使用“*”,表示对所有当前table下的所有column进行授权。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Select”。
说明:表的分区信息查询,HetuEngine在SQL解析时会转化为对被查询表名$partitions这个内部表的查询。
Insert
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的table所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权table所在的schema,如“default”。
- 在“schema”下方的下拉框中选中“table”,同时在其对应的输入框中输入要授权的目标table。如使用“*”,表示对所有当前schema下的所有table进行授权。
- 将“column”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Insert”。
Delete
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的table所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权table所在的schema,如“default”。
- 在“schema”下方的下拉框中选中“table”,同时在其对应的输入框中输入要授权的目标table。如使用“*”,表示对所有当前schema下的所有table进行授权。
- 将“column”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Delete”。
Select
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的table所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权table所在的schema,如“default”。
- 在“schema”下方的下拉框中选中“table”,同时在其对应的输入框中输入要授权的目标table。如使用“*”,表示对所有当前schema下的所有table进行授权。
- 在“table”下方的下拉框中选中“column”,同时在其对应的输入框中输入要授权的目标column。如使用“*”,表示对所有当前table下的所有column进行授权
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Select”。
Show columns
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的table所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权table所在的schema,如“default”。
- 在“schema”下方的下拉框中选中“table”,同时在其对应的输入框中输入要授权的目标table。如使用“*”,表示对所有当前schema下的所有table进行授权。
- 将“column”下拉框选择为“none”。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“Select、Show”。
Set session
- 在“Policy Name”填写策略名称。
- 在“Policy Label”下方的下拉框选择为“systemproperty”并填写需要授权访问的session名称,例如“implicit_conversion”。如使用“*”表示对所有的session进行授权。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permission”中勾选“ALTER”。
function 操作
- 在“Policy Name”填写策略名称。
- 在“Policy Label”下方的下拉框选择为“function”并填写需要授权访问的function名称,例如“sum”。如使用“*”,表示对所有的函数进行授权。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permission”中勾选“execute”。
procedure操作
- 在“Policy Name”填写策略名称。
- 在“Catalog”填写要授权的procedure所在的catalog,如“hive”。
- 在“Catalog”下方的下拉框中选中“schema”,同时在其对应的输入框中输入要授权procedure所在的schema,如“system”。
- 在“schema”下方的下拉框中选中“procedure”,同时在其对应的输入框中输入要授权的目标procedure。如使用“*”,表示对所有当前schema下的所有procedure进行授权。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permissions”中勾选“execute”。
用户模拟访问操作
- 在“Policy Name”填写策略名称。
- 在“Policy Label”下方的下拉框选择为“trinouser”并填写需要模拟的trinouser名称,例如“user1”。如使用“*”,表示可以模拟所有的用户。
- 在“Select User”中填授权的HetuEngine用户。
- 在“Permission”中勾选“Impersonate”。
- 配置权限后预计30秒左右生效。
- 目前的权限管控可以到达列的级别。
- (可选)添加策略有效期。在页面右上角单击“Add Validity period”,设置“Start Time”和“End Time”,选择“Time Zone”。单击“Save”保存。如需添加多条策略有效期,可单击按钮添加。如需删除策略有效期,可单击按钮删除。
- 单击“Add”,在策略列表可查看策略的基本信息。等待策略生效后,验证相关权限是否正常。
如需禁用某条策略,可单击按钮编辑策略,设置策略开关为“Disabled”。
如果不再使用策略,可单击按钮删除策略。
HetuEngine数据脱敏
Ranger支持对HetuEngine数据进行脱敏处理(Data Masking),可对用户执行的select操作的返回结果进行处理,以屏蔽敏感信息。
- 登录Ranger WebUI界面,在首页中单击“TRINO”区域的“HetuEngine”。
- 在“Masking”页签单击“Add New Policy”,添加HetuEngine数据脱敏策略。
- 根据业务需求配置相关参数。
表3 HetuEngine数据脱敏参数 参数名称
描述
Policy Name
策略名称,可自定义,不能与本服务内其他策略名称重复。
Policy Conditions
IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:192.168.1.10,192.168.1.20或者192.168.1.*。
Policy Label
为当前策略指定一个标签,您可以根据这些标签搜索报告和筛选策略。
Trino Catalog
配置当前策略使用的Catalog名称。
Trino Schema
- Hive、Hudi、HBase、ClickHouse、HetuEngine、IoTDB数据源:配置当前策略使用的Database名称。
- GAUSSDB、MySQL数据源:配置当前策略使用的Schema名称。
Trino Table
配置当前策略使用的表名称。
Trino Column
配置当前策略使用的列名称。
Description
策略描述信息。
Audit Logging
是否审计此策略。
Mask Conditions
在“Select Role”、“Select Group”、“Select User”列选择已创建好的需要授予权限的对象,单击“Add Conditions”,添加策略适用的IP地址范围,然后在单击“Add Permissions”,勾选“Select”权限。
单击“Select Masking Option”,选择数据脱敏时的处理策略:
- Redact:用x屏蔽所有字母字符,用0屏蔽所有数字字符。
- Partial mask: show last 4:只显示最后的4个字符,其他用x代替。
- Partial mask: show first 4:只显示开始的4个字符,其他用x代替。
- Hash:用值的哈希值替换原值,采用的是HetuEngine的内置“to_utf8(varchar(x))”函数,只对string、char、varchar类型的字段生效。
- Nullify:用NULL值替换原值。
- Unmasked(retain original value):原样显示。
- Date:show only year:仅显示日期字符串的年份部分,并将月份和日期默认为01/01。
- Custom:可使用任何有效返回与被屏蔽的列中的数据类型相同的数据类型来自定义策略。
如需添加多列的脱敏策略,可单击按钮添加。
- 单击“Add”,在策略列表可查看策略的基本信息。
- 用户通过HetuEngine客户端对配置了数据脱敏策略的表执行select操作,系统将对数据进行处理后进行展示。
HetuEngine行级别数据过滤
Ranger支持用户对HetuEngine数据表执行select操作时进行行级别的数据过滤。
- 登录Ranger WebUI界面,在首页中单击“TRINO”区域的“HetuEngine”。
- 在“Row Level Filter”页签单击“Add New Policy”,添加行数据过滤策略。
- 根据业务需求配置相关参数。
表4 HetuEngine行数据过滤参数 参数名称
描述
Policy Name
策略名称,可自定义,不能与本服务内其他策略名称重复。
Policy Conditions
IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:192.168.1.10,192.168.1.20或者192.168.1.*。
Policy Label
为当前策略指定一个标签,您可以根据这些标签搜索报告和筛选策略。
Trino Catalog
配置当前策略使用的Catalog名称。
Trino Schema
- Hive、Hudi、HBase、ClickHouse、HetuEngine、IoTDB数据源:配置当前策略使用的Database名称。
- GAUSSDB、MySQL数据源:配置当前策略使用的Schema名称。
Trino Table
配置当前策略使用的表名称。
Description
策略描述信息。
Audit Logging
是否审计此策略。
Row Filter Conditions
在“Select Role”、“Select Group”、“Select User”列选择已创建好的需要授予权限的对象,单击“Add Conditions”,添加策略适用的IP地址范围,然后在单击“Add Permissions”,勾选“Select”权限。
单击“Row Level Filter”,填写数据过滤规则。
例如过滤表A中“name”列“zhangsan”行的数据,过滤规则为:name <> 'zhangsan'。更多信息可参考Ranger官方文档。
如需添加更多规则,可单击按钮添加。
- 单击“Add”,在策略列表可查看策略的基本信息。
- 用户通过HetuEngine客户端对配置了数据脱敏策略的表执行select操作,系统将对数据进行处理后进行展示。