在Impala中,权限管理的作用主要是确定某个用户是否有权限访问某些资源,用户对于这些资源具有哪种访问权限等,这里涉及到三个概念:用户,资源和权限。对于Impala 1.1之后的版本,可以直接集成Apache Sentry服务来实现Impala的权限管理,由于Impala可以和hive共享元数据库,包括权限机制。
- 用户
在不开启权限认证的impala集群中,没有用户的概念存在了,所有访问Impala集群的操作都是使用impala账号执行的;对于开启权限的Impala集群,则使用的是运行impala-shell脚本的账号作为访问用户(Linux用户);对于使用kerberos认证的集群,impala的访问用户则是当前kinit认证的用户,除此之外,还可以通过使用代理的方式提交查询(经过测试发现不可以直接通过UserGroupInformation代理,但是可以通过thrift接口代理,例如hue),此时访问用户是被代理用户。
- 权限(操作)
SELECT权限:允许执行查询操作,包括查询数据和元数据。
INSERT权限:写入操作,主要指INSERT和LOAD DATA操作。
ALL权限:对于表和数据库的DDL操作,对于URI的create external table之类的操作也需要该权限。
以上权限是和资源有密切关系的,对于不同的资源,不同的操作需要不同的权限。如下图: