【问题标题】:Enforce hive sql-standard security for Presto according to the user submitting the query根据提交查询的用户对 Presto 实施 hive sql-standard 安全性
【发布时间】:2018-08-09 20:34:57
【问题描述】:

我将hive.security 属性设置为sql-standard,但结果是,对于任何用户和任何表(无论从 Hive 授予的权限如何),每当我尝试运行选择查询时,我都会得到:

Query 123456789 failed: Access Denied: Cannot select from table.....

在 Beeline 中运行的相同查询会返回正确的结果(即,根据授权)。

关于我的配置的更多细节:

  • hive.metastore.authentication.typeNONE,没有 kerberos。目前我只希望授权遵循授予提交查询的用户的权限。
  • hive.hdfs.impersonation.enabled 在这种情况下不应该有所作为,因为 Presto 目前不支持在访问 Hive 元存储时模拟最终用户。事实上,这并没有什么不同。
  • Presto 版本是 0.195,最新。
  • hive 连接器有一个默认配置,除了我上面列出的两个属性。
  • 我尝试将对表的选择授予特定用户。该授权允许该用户在 hive 中查询,而不是在 presto 中查询。
  • 我尝试使用 Presto cli 和通过 jdbc 使用 gui 客户端(即 DataGrip)连接到 presto。

非常感谢任何建议。

【问题讨论】:

  • 您使用的是哪个 presto 版本?您的蜂巢连接器配置是什么? Metastore 中的赠款是什么?您如何连接到 Presto?
  • 嗨@PiotrFindeisen,感谢您的回答。这里有更多细节。 Presto 版本是 0.195,最新。除了我上面列出的两个属性之外,hive 连接器具有默认配置。我尝试将表上的选择授予特定用户。该授权允许该用户在 hive 中查询,而不是在 presto 中查询。我尝试使用 Presto cli 和通过 jdbc 使用 gui 客户端(即 DataGrip)连接到 presto。
  • 嘿@AndreaT.Bonanno,您在集群上启用了哪些其他hive-sitehiveserver2-site 设置?还有什么价值观?
  • 我设置了 hive.security=sql-standard。当我从表中选择时,我得到“拒绝访问:无法从表中选择”。如果我尝试授权语句,我会得到“拒绝访问:无法在表上授予权限 SELECT”。我缺少什么来启用赠款?
  • 你解决过这个问题吗?即将走这条路,很想避免痛苦。它有效吗?另外,您的用户如何登录到 presto 本身?

标签: hadoop hive presto


【解决方案1】:

虽然这不是您希望设置环境的确切方式,但以下是我成功保护 presto 和 hive 的方式:

  • 为 hive 设置 kerberos
  • 使用 kerberos 为 presto 设置 hive 连接器,并在所有 hive 表上完全授权
  • 使用 ssl 创建一个 presto 密码插件
  • 创建一个 presto 访问控制,将用户/表模式访问与 jdbc 或 presto-cli 及其登录名/密码进行映射。
  • 创建一个 presto 记录器插件来跟踪任何错误的密码尝试。

然后用户可以访问:

  • hive,感谢 kerberos 安全
  • presto,感谢 presto ssl/密码安全

【讨论】:

  • 我设置了 hive.security=sql-standard。当我从表中选择时,我得到“拒绝访问:无法从表中选择”。如果我尝试授权语句,我会得到“拒绝访问:无法在表上授予权限 SELECT”。我缺少什么来启用赠款?
  • 很高兴在这里看到插件的代码或有关您如何使用 kerberized 的参考。你有没有机会把它记录在 git 或博客上?
  • 好吧,我将来可以创建一篇博文,但是我已经从 presto 切换到 hive,因为 presto 不处理 hive 酸表,这是一个巨大的限制
猜你喜欢
  • 2020-12-19
  • 2013-11-26
  • 2022-11-23
  • 2013-05-18
  • 1970-01-01
  • 2010-10-24
  • 2018-10-12
  • 1970-01-01
  • 2014-09-13
相关资源
最近更新 更多