
# 配置Hive单表动态视图的访问控制权限
#### 操作场景
MRS中安全模式下Hive可以创建一个视图并控制用户访问权限，支持授权给不同的用户访问，又可以限定不同用户只能访问的不同数据。
在视图中，Hive可以通过获取当前客户端提交任务的用户的内置函数"current_user()"来进行过滤，这样被授权的用户，在访问视图时，即可被限定访问对应的数据。
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
- 在普通模式下"current_user()"函数无法区别客户端提交任务的用户，因此，当前访问控制仅对安全模式下的Hive有效。
- 如果已经在实际业务逻辑中使用了"current_user()"函数，那么，在安全模式与普通模式互转时，需要充分评估可能的风险。
 
#### 操作示例
- 不采用"current_user"函数，要实现不同的用户，访问不同数据，需要创建不同的视图：
  - 将视图v1授权给用户hiveuser1，hiveuser1用户可以访问表table1中"type='hiveuser1'"的数据： **create view v1 as select \* from table1 where type='hiveuser1'** **;**
    
  
  - 将视图v2授权给用户hiveuser2，hiveuser2用户可以访问表table1中"type='hiveuser2'"的数据： **create view v2 as select \* from table1 where type='hiveuser2'** **;**
    
   

- 采用"current_user"函数，则只需要创建一个视图： 将视图v分别赋给用户hiveuser1、hiveuser2，当hiveuser1查询视图v时，"current_user()"被自动转化为hiveuser1，当hiveuser2查询视图v时，"current_user()"被自动转化为hiveuser2：
  **create view v as select \* from table1 where type=current_user()** **;**
  
 
