zoukankan      html  css  js  c++  java
  • Hive权限介绍

    一、开启权限 

    眼下hive支持简单的权限管理,默认情况下是不开启。这样全部的用户都具有同样的权限。同一时候也是超级管理员。也就对hive中的全部表都有查看和修改的权利,这样是不符合一般数据仓库的安全原则的。Hive能够是基于元数据的权限管理。也能够基于文件存储级别的权限管理。此次以介绍MetaData权限管理为主。通过下面配置开启Hive身份认证功能进行权限检查:    

    <property>

      <name>hive.security.authorization.enabled</name>

      <value>true</value>

      <description>enable or disable the hive client authorization</description>

    </property>

    开启身份认证后,不论什么用户必须被grant privilege才干对实体进行操作。

    有一个表创建者对所创建表的权限配置:

    <property>

      <name>hive.security.authorization.createtable.owner.grants</name>

      <value>ALL</value>

      <description>the privileges automatically granted to the owner whenever a table gets created.

       An example like "select,drop" will grant select and drop privilege to the owner of the table</description>

    </property>

    默认配置是NULL,设置成ALL,表示创建者对其创建的表拥有全部的权限,这样也是比較合理的。同一时候也能够通过配置在表创建时给某个role赋予权限:

    <property>

      <name>hive.security.authorization.createtable.role.grants</name>

      <value>admin_role:ALL</value>

    </property>

    当然也能够在创建时对user,group赋予权限

    二、权限操作

    在hive命令行下能够通过set system:user.name;查看当前hiveusername,也即OS的登录用户。

    开启权限认证,在命令行下创建表:

    hive>CREATE TABLE auth_test (key int, value string); 

    Authorization failed:No privilege 'Create' found for outputs { database:default}.Use show grant to get more details.  

    此时会创建失败。默认情况下用户是没有创建表权限的。运行

    hive>Grant create on database defaut to user test

    后又一次创建表则会成功。能够通过 desc extended auth_test查看包含表全部者在内的表具体信息

    默认情况下其它的用户也是是没有权限读取auth_test中不论什么列,以另外一个用户登录os在hive下运行:

    hive>Select key from auth_test;

    出现下面错误:

    Authorization failed:No privilege 'Select' found for inputs { database:default, table:auth_test, columnName:key}. Use show grant to get more details.

    运行:

    grant select(key) on table auth_test to user test1;

    后查询则能够成功

    Grant/revoke语法:

    grant/revoke priv_type[column_list] on object_type object to/from principal_type principal_name

    查看grant 定义:

    show grant user user_name on table table_name;

    三、Role:

    此外Hive还支持基于role的授权认证,role是一组权限的集合,一个role能够被grant给多个用户。全部拥有role的用户都具有与此role相匹配的权限,通过对role权限的管理能够间接控制用户的权限。因此在一个多用户的大型系统中。role无疑更方便于权限管理。

    创建/删除角色:

    Create/drop Role role_name

    角色分配/回收:

    Grant role role_name to user user_name

    Revoke role role_name from user user_name

    角色授权:

    Grant/revoke priv_type[col_List] on object_type object from/to role role_name

    查看role定义:

    show role grant role role_name

    四、权限MetaData:

    登录hive元数据库。能够发现下面表:

    Db_privs:记录了User/Role在DB上的权限

    Tbl_privs:记录了User/Role在table上的权限

    Tbl_col_privs:记录了User/Role在table column上的权限

    Roles:记录了全部创建的role

    Role_map:记录了User与Role的相应关系


  • 相关阅读:
    Linux and the Unix Philosophy (Linux/Unix设计思想)
    rails获取json内容
    单元测试调试之传参篇
    部署注意细节之正式测试链接地址不同
    ajax页面排序的序号问题
    【51Nod1239】欧拉函数之和-杜教筛+哈希表
    【51Nod1239】欧拉函数之和-杜教筛+哈希表
    【51Nod1244】莫比乌斯函数之和-杜教筛+哈希表
    【51Nod1244】莫比乌斯函数之和-杜教筛+哈希表
    【BZOJ3112】防守战线(ZJOI2013)-单纯形法+对偶理论
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5341387.html
Copyright © 2011-2022 走看看