配置创建临时函数的用户不需要具有ADMIN权限
操作场景
在Hive数据处理场景中,用户经常需要创建自定义函数(UDF)来扩展Hive的SQL功能,满足特定的计算需求。Hive中的函数分为永久函数和临时函数两种类型。永久函数创建后永久保存在Hive元数据中,所有用户都可以使用;临时函数仅在当前会话中有效,会话结束后自动删除。Hive开源社区版本要求创建临时函数的用户必须具备ADMIN权限,这在多租户环境中可能导致权限管理复杂,普通用户无法灵活创建临时函数满足业务需求。如何在保证安全的前提下,允许普通用户创建临时函数?MRS Hive提供“hive.security.temporary.function.need.admin”参数,可以控制创建临时函数是否需要ADMIN权限。当该参数设置为“false”时,普通用户也可以创建临时函数,提高使用灵活性。
本文介绍如何配置创建临时函数的用户权限。
约束与限制
- 仅集群已启用Kerberos认证(安全模式)的ACL鉴权场景支持配置创建临时函数的用户是否需要ADMIN权限功能。
- 在Hive已启用Ranger鉴权场景中,创建永久函数的用户需要具有“global”权限,创建临时函数的用户需要具有“Temporary UDF Admin”权限,详细操作请参见创建Hive用户自定义函数。
- 将参数设置为“false”时,存在一定的安全风险,请谨慎操作。
操作步骤
- 登录集群Manager页面,选择“集群 > 服务 > Hive > 配置 > 全部配置”。
- 在搜索框中输入参数名称,搜索“hive.security.temporary.function.need.admin”。
- 选择“true”时,创建临时函数需要ADMIN权限,与开源社区版本保持一致。
- 选择“false”时,创建临时函数不需要ADMIN权限,存在一定的安全风险,请谨慎操作。
- 单击“保存”保存配置。单击“实例”,勾选所有HiveServer实例,选择“更多 > 重启实例”,输入当前用户密码并单击“确定”重启所有HiveServer实例。
- 在Hive客户端创建并使用临时函数,具体操作请参见创建Hive用户自定义函数。
验证操作:
配置完成后,可通过以下方式验证配置是否生效:
- 使用普通用户(非ADMIN权限)登录Hive客户端。
- 执行创建临时函数命令,例如:
create temporary function my_udf as 'com.example.MyUDF';
- 如果参数设置为“false”,命令应执行成功;如果参数设置为“true”,命令应报权限不足错误。
常见问题
- 设置参数为false后有什么安全风险
任何用户都可以创建临时函数。临时函数在执行期间可以访问Hive的数据,如果用户创建了恶意函数,可能会在当前会话中造成数据泄露或破坏。
建议仅在受信任的环境中使用该配置。
- 修改参数后未生效
修改参数后需要重启HiveServer实例才能生效。
请确认已重启所有HiveServer实例。如果仍未生效,请检查参数值是否正确保存,以及当前使用的鉴权方式是否为ACL鉴权。
相关文档
- 了解如何创建Hive用户自定义函数,请参考创建Hive用户自定义函数。
- 了解如何创建Hive用户并绑定角色,请参考创建Hive用户并绑定角色。
- 了解如何添加Hive的Ranger访问权限策略,请参考添加Hive的Ranger访问权限策略。