根据https://www.cloudera.com/documentation/enterprise/latest/topics/sg_sentry_service_config.html,
hiveserver2模拟允许用户以连接用户而不是超级用户的身份执行查询和访问hdfs文件。使用acl(访问控制列表)中指定的hdfs权限在文件级别应用访问策略。启用hiveserver2模拟将绕过端到端授权过程中的sentry。具体来说,尽管sentry对配置单元仓库中的表和视图强制执行访问控制策略,但它不控制对表下面的hdfs文件的访问。这意味着,对仓库中的表没有sentry权限的用户仍然可以绕过sentry授权检查,对仓库中的表执行作业和查询,只要他们对支持该表的hdfs文件拥有权限。
访问策略是使用在acl(访问控制列表)中指定的hdfs权限在文件级应用的,我不明白这一点。我不理解的是,每当用户运行查询时,数据引擎中的sentry插件(绑定)将在sentry服务器的帮助下进行授权,以验证用户是否有权访问(select,insert)他试图查询的资源(db,table)。在这种情况下,如果用户没有访问资源的权限,那么在这里应该会失败,当用户有权访问hdfs中某个表对应的文件,并且对该表没有sentry权限时,查询怎么可能成功呢?我错过了什么?
1条答案
按热度按时间gz5pxeao1#
我觉得你没有看到“没有仓库中表的哨兵权限的用户”部分。
当然,使用了sentry,但并不是所有用户都被自动授予权限,因此它会退回到chown/chmod/setfacl函数在hdfs级别应用的acl。您需要显式地添加一个“deny all”规则,说明除非另外设置,否则任何人都不能访问配置单元数据库
这也可以通过使用spark或pig读取表的原始hdfs位置而不使用hive来绕过。这才是真正的意思。
另外,并非所有hadoop集群都使用sentry进行授权访问