0

我有一个使用 cdh-5.7.0 运行的集群并配置了以下设置

  • hadoop 与 kerberos
  • 带 LDAP 身份验证的配置单元
  • 带哨兵授权的配置单元(存储在 JDBC derby 中的规则)

我的目标是限制用户查看我的系统中存在哪些数据库。例如:

  • 用户 A 在执行时应该只看到数据库 DB-Ashow databases
  • 用户 B 在执行时应该只看到数据库 DB-Bshow databases

我按照文章https://blog.cloudera.com/blog/2013/12/how-to-get-started-with-sentry-in-hive/实现了这一目标。但没有成功。我所取得的是

  • 用户 A 只能从 DB-A 中选择表,而不能从 DB-B 中选择表。
  • 用户 B 只能从 DB-B 中选择表,而不能从 DB-A 中选择表。

但是在执行时两者仍然可以看到 DB-A 和 DB-B show databases。但我想避免这种情况。

您有什么提示可以让规则或设置运行起来吗?

谢谢马尔科

4

1 回答 1

0

根据您的描述以及我从现有设置中学到的知识,对于 Sentry v1.6+,您需要将以下属性添加到您的hive-site.xml

<property>
  <name>hive.metastore.filter.hook</name>
  <value>org.apache.sentry.binding.metastore.SentryMetaStoreFilterHook</value>
</property>

即使您使用的是 CDH 5.7,MapR 5 文档也提供了一些上下文。以及哨兵服务交互

重新启动 Hive 服务后,您应该能够看到您期望的结果。

于 2017-04-28T16:46:53.867 回答