共计 2268 个字符,预计需要花费 6 分钟才能阅读完成。
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);
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-09/146878.htm