• hive 权限知识点整理


    一,hive 权限授权模型

    1、Storage Based Authorization in the Metastore Server
    基于存储的授权(也就是HDFS的授权模型) - 可以对Metastore中的元数据进行保护,但是没有提供更加细粒度的访问控制(例如:列级别、行级别)。
    2、SQL Standards Based Authorization in HiveServer2
    (grant)基于SQL标准的Hive授权 - 完全兼容SQL的授权模型,推荐使用该模式。

    ①完全兼容SQL的授权模型
    ②除支持对于用户的授权认证,还支持角色role的授权认证
    一个用户可以具有一个或多个角色
    默认包含两种角色:public、admin
    3、Default Hive Authorization (Legacy Mode)
    hive默认授权 - 设计目的仅仅只是为了防止用户产生误操作,而不是防止恶意用户访问未经授权的数据。

    二,选择HiveServer2模式

    启动的时候也是用这种方式:HiveServer2/beeline 客户端方式启动

    使用该权限控制模式会有一些限制,如下:
    1、启用当前认证方式之后,dfs, add, delete, compile, and reset等命令被禁用。 2、通过set命令设置hive configuration的方式被限制某些用户使用。 (可通过修改配置文件hive-site.xml中hive.security.authorization.sqlstd.confwhitelist进行配置) 3、添加、删除函数以及宏的操作,仅为具有admin的用户开放。 4、用户自定义函数(开放支持永久的自定义函数),可通过具有admin角色的用户创建,其他用户都可以使用。 5、Transform功能被禁用。 ———————————————— 原文链接:https://blog.csdn.net/qq_36299025/article/details/94143198

    三,修改配置

    <property>
      <name>hive.security.authorization.enabled</name>
      <value>true</value>
      <description>开启权限配置</description> 
    </property>
    <property>
      <name>hive.server2.enable.doAs</name>
      <value>false</value>
      <description>默认情况下,HiveServer2以提交查询的用户执行查询访问(true),如果hive.server2.enable.doAs设置为false,
             查询将以运行hiveserver2进程的用户访问。</description> </property> <property> <name>hive.users.in.admin.role</name> <value>root</value> <description>指定超级管理员是哪个用户</description> </property> # 授权、认证的实现类 <property> <name>hive.security.authorization.manager</name> <value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value> </property> <property> <name>hive.security.authenticator.manager</name> <value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value> </property>

    # 数据库存储 <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.22.220:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>数据库账号</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>数据库密码</value> </property>

    四,HiveServer2/beeline 客户端方式启动

    后台启动方式:nohup hiveserver2 1>/dev/null 2>/dev/null &
    然后启动 beeline 客户端去连接:
    beeline -u jdbc:hive2://127.0.0.1:10000 -n hadoop    -u : 指定元数据库的链接信息 -n : 指定用户名和密码

    五、角色的添加、删除、查看、设置

    DROP ROLE role_name; – 删除角色
    
    SHOW CURRENT ROLES; --查看当前具有的角色:
    
    0: jdbc:hive2://node3:10000> show current roles;
    +---------+--+
    | role |
    +---------+--+
    | public |
    +---------+--+
    row selected (2.533 seconds)
    
    #SET ROLE命令会把当前用户切换到指定的角色组。
    SET ROLE (role_name|ALL|NONE); --设置角色:
    
    0: jdbc:hive2://node3:10000> set role admin;
    No rows affected (0.057 seconds)
    CREATE ROLE role_name; – 创建角色:
    
    0: jdbc:hive2://node3:10000> create role trole;
    No rows affected (0.097 seconds)
    
    SHOW ROLES; – 查看所有存在的角色:
    
    0: jdbc:hive2://node3:10000> show roles;
    +---------+--+
    | role |
    +---------+--+
    | admin |
    | public |
    | trole |
    +---------+--+
    3 rows selected (0.066 seconds)

    六、角色的授予角色、删除、查看

    将角色授予给某个用户、角色:
    GRANT role_name [, role_name] ...
    TO principal_specification [, principal_specification] ...
    [ WITH ADMIN OPTION ];
    principal_specification
    : USER user
    | ROLE role
    
    2.移除某个用户、角色的角色
    
    REVOKE [ADMIN OPTION FOR] role_name [, role_name] ...
    FROM principal_specification [, principal_specification] ... ;
    
    principal_specification
    : USER user
    | ROLE role
    
    3.查看授予某个用户、角色的角色列表:
    
    SHOW ROLE GRANT (USER|ROLE) principal_name;
    
    4.查看属于某种角色的用户、角色列表:
    SHOW PRINCIPALS role_name;

    六、权限的授予、移除、查看

    1.将权限授予给某个用户、角色:
    GRANT priv_type [, priv_type ] ...
    ON table_or_view_name
    TO principal_specification [, principal_specification] ...
    [WITH GRANT OPTION];
    
    2.移除某个用户、角色的权限:
    REVOKE [GRANT OPTION FOR]
    priv_type [, priv_type ] ...
    ON table_or_view_name
    FROM principal_specification [, principal_specification] ... ;
    
    3.查看某个用户、角色的权限:
    SHOW GRANT [principal_name] ON (ALL| ([TABLE] table_or_view_name)
    ————————————————

    作者:陈耿聪 —— 夕狱

    出处:https://www.cnblogs.com/CGCong/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    long类型和int类型的区别!!!!!
    Java-冒号的作用
    Java Scanner类
    jre安装过程
    76. 最小覆盖子串
    75. 颜色分类
    73. 矩阵置零
    72. 编辑距离
    71. 简化路径
    61. 旋转链表
  • 原文地址:https://www.cnblogs.com/CGCong/p/12072578.html
Copyright © 2020-2023  润新知