1. 程式人生 > >hive集成sentry的sql使用語法

hive集成sentry的sql使用語法

hive

Sentry權限控制通過Beeline(Hiveserver2 SQL 命令行接口)輸入Grant 和 Revoke語句來配置。語法跟現在的一些主流的關系數據庫很相似。需要註意的是:當sentry服務啟用後,我們必須使用beeline接口來執行hive查詢,Hive Cli並不支持sentry。

CREATE ROLE Statement

CREATE ROLE語句創建一個可以被賦權的角色。權限可以賦給角色,然後再分配給各個用戶。一個用戶被分配到角色後可以執行該角色的權限。

只有擁有管理員的角色可以create/drop角色。默認情況下,hive、impala和hue用戶擁有管理員角色。

CREATE ROLE [role_name];

DROP ROLE Statement

DROP ROLE語句可以用來從數據庫中移除一個角色。一旦移除,之前分配給所有用戶的該角色將會取消。之前已經執行的語句不會受到影響。但是,因為hive在執行每條查詢語句之前會檢查用戶的權限,處於登錄活躍狀態的用戶會話會受到影響。

DROP ROLE [role_name];

GRANT ROLE Statement

GRANT ROLE語句可以用來給組授予角色。只有sentry的管理員用戶才能執行該操作。

GRANT ROLE role_name [, role_name]    TO GROUP (groupName) [,GROUP (groupName)]

REVOKE ROLE Statement

REVOKE ROLE語句可以用來從組移除角色。只有sentry的管理員用戶才能執行該操作。

REVOKE ROLE role_name [, role_name]    
    FROM GROUP (groupName) [,GROUP (groupName)]

GRANT (PRIVILEGE) Statement

授予一個對象的權限給一個角色,該用戶必須為sentry的管理員用戶。

GRANT    
    (PRIVILEGE) [, (PRIVILEGE) ]    
    ON (OBJECT) (object_name)   
    TO ROLE (roleName) [,ROLE (roleName)]

REVOKE (PRIVILEGE) Statement

因為只有認證的管理員用戶可以創建角色,從而只有管理員用戶可以取消一個組的權限。

REVOKE    
    (PRIVILEGE) [, (PRIVILEGE) ]    
    ON (OBJECT) (object_name)   
    FROM ROLE (roleName) [,ROLE (roleName)]

GRANT (PRIVILEGE) ... WITH GRANT OPTION

在cdh5.2中,你可以委托給其他角色來授予和解除權限。比如,一個角色被授予了WITH GRANT OPTION的權限可以GRANT/REVOKE同樣的權限給其他角色。因此,如果一個角色有一個庫的所有權限並且設置了 WITH GRANT OPTION,該角色分配的用戶可以對該數據庫和其中的表執行GRANT/REVOKE語句。

GRANT
    (PRIVILEGE) 
    ON (OBJECT) (object_name)    TO ROLE (roleName)    WITH GRANT OPTION

只有一個帶GRANT選項的特殊權限的角色或者它的父級權限可以從其他角色解除這種權限。一旦下面的語句執行,所有跟其相關的grant權限將會被解除。

REVOKE
    (RIVILEGE)    ON (BJECT) (bject_name)    FROM ROLE (roleName)

Hive目前不支持解除之前賦予一個角色 WITH GRANT OPTION 的權限。要想移除WITH GRANT OPTION、解除權限,可以重新去除 WITH GRANT OPTION這個標記來再次附權。

SET ROLE Statement

SET ROLE語句可以給當前會話選擇一個角色使之生效。一個用戶只能啟用分配給他的角色。任何不存在的角色和當前用戶不能使用的角色是不能生效的。如果沒有使用任何角色,用戶將會使用任何一個屬於他的角色的權限。

  • 選擇一個角色使用:

    To enable a specific role:
  • 使用所有的角色:

    To enable a specific role:
  • 關閉所有角色

    SET ROLE NONE;

SHOW Statement

  • 顯示當前用戶擁有庫、表、列相關權限的數據庫:

    SHOW DATABASES;
  • 顯示當前用戶擁有表、列相關權限的表;

    SHOW TABLES;
  • 顯示當前用戶擁有SELECT權限的列:

    SHOW COLUMNS (FROM|IN) table_name [(FROM|IN) db_name];
  • 顯示當前系統中所有的角色(只有管理員用戶可以執行):

    SHOW ROLES;
  • 顯示當前影響當前會話的角色:

    SHOW CURRENT ROLES;
  • 顯示指定組的被分配到的所有角色(只有管理員用戶和指定組內的用戶可以執行)

    SHOW ROLE GRANT GROUP (groupName);
  • SHOW語句可以用來顯示一個角色被授予的權限或者顯示角色的一個特定對象的所有權限。
    顯示指定角色的所有被賦予的權限。(只有管理員用戶和指定角色分配到的用戶可以執行)。下面的語句也會顯示任何列級的權限。

    SHOW GRANT ROLE (roleName);
  • 顯示指定對象的一個角色的所有被賦予的權限(只有管理員用戶和指定角色分配到的用戶可以執行)。下面的語句也會顯示任何列級的權限。

    SHOW GRANT ROLE (roleName) on (OBJECT) (objectName);


hive集成sentry的sql使用語法