如果一个表没有岗位权限的用户可以访问HDFS中的表文件,他们怎么能执行查询?

时间:2018-03-25 07:05:20

标签: hadoop hive cloudera sentry

根据https://www.cloudera.com/documentation/enterprise/latest/topics/sg_sentry_service_config.html

  

HiveServer2模拟允许用户以连接用户而不是超级用户身份执行查询和访问HDFS文件。 使用ACL(访问控制列表)中指定的HDFS权限在文件级别应用访问策略。启用HiveServer2模拟会绕过Sentry的端到端授权过程。具体来说,虽然Sentry对Hive仓库中的表和视图实施访问控制策略,但它不控制对作为表的基础的HDFS文件的访问。 这意味着,对仓库中的表没有Sentry权限的用户仍然可以绕过Sentry授权检查并对仓库中的表执行作业和查询,只要他们对支持该表的HDFS文件具有权限。

使用ACL(访问控制列表)中指定的HDFS权限在文件级别应用访问策略 - >我不明白这一点。 我不确定的是,每当用户运行查询时,授权将由数据引擎中的sentry插件(绑定)在sentry服务器的帮助下完成,以验证用户是否有权访问(选择,插入)资源(db ,表)他正试图查询。在这种情况下,如果用户无法访问资源,那么它应该在这里失败,当他有权访问与HDFS中的表相对应的文件并且没有查询时,查询如何成功表上的哨兵权限?我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我觉得您没有看到“没有Sentry权限的用户对仓库中的表”部分。

当然,使用了Sentry,但并非所有用户都自动获得权限,因此它会回退到由chown / chmod / setfacl函数给出的HDFS级别应用的ACL。您需要明确添加“拒绝所有”规则,除非另有设置

,否则没有人可以访问Hive数据库

通过使用Spark或Pig读取表格的原始HDFS位置,而不使用Hive,可以简单地绕过这个。这就是它真正说的。

此外,并非所有Hadoop群集都使用Sentry进行授权访问