
# 配置创建临时函数的用户不需要具有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用户自定义函数](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0963.html)。
- 将参数设置为"false"时，存在一定的安全风险，请谨慎操作。
 
#### 操作步骤
1. 登录集群Manager页面，选择"集群 \> 服务 \> Hive \> 配置 \> 全部配置"。
2. 在搜索框中输入参数名称，搜索"hive.security.temporary.function.need.admin"。 
   - 选择"true"时，创建临时函数需要ADMIN权限，与开源社区版本保持一致。
   
   - 选择"false"时，创建临时函数不需要ADMIN权限，存在一定的安全风险，请谨慎操作。
   
   
   
   
3. 单击"保存"保存配置。单击"实例"，勾选所有HiveServer实例，选择"更多 \> 重启实例"，输入当前用户密码并单击"确定"重启所有HiveServer实例。
4. 在Hive客户端创建并使用临时函数，具体操作请参见[创建Hive用户自定义函数](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0963.html)。
 
**验证操作：**
配置完成后，可通过以下方式验证配置是否生效：
1. 使用普通用户（非ADMIN权限）登录Hive客户端。
2. 执行创建临时函数命令，例如：
   ```
   create temporary function my_udf as 'com.example.MyUDF';
   ```
   
3. 如果参数设置为"false"，命令应执行成功；如果参数设置为"true"，命令应报权限不足错误。
#### 常见问题
- **设置参数为false后有什么安全风险**
  任何用户都可以创建临时函数。临时函数在执行期间可以访问Hive的数据，如果用户创建了恶意函数，可能会在当前会话中造成数据泄露或破坏。
  建议仅在受信任的环境中使用该配置。
  
- **修改参数后未生效**
  修改参数后需要重启HiveServer实例才能生效。
  请确认已重启所有HiveServer实例。如果仍未生效，请检查参数值是否正确保存，以及当前使用的鉴权方式是否为ACL鉴权。
  
 
#### 相关文档
- 了解如何创建Hive用户自定义函数，请参考[创建Hive用户自定义函数](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0963.html)。
- 了解如何创建Hive用户并绑定角色，请参考[创建Hive用户并绑定角色](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0949.html)。
- 了解如何添加Hive的Ranger访问权限策略，请参考[添加Hive的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1858.html)。
 
