配置Sentry为不同的用户显示/隐藏不同的数据库

时间:2017-04-28 06:41:34

标签: hadoop ldap kerberos apache-sentry

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

  • hadoop with kerberos
  • 使用LDAP身份验证的配置单元
  • 具有哨兵授权的hive(存储在JDBC derby中的规则)

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

  • 用户A只能在执行show databases
  • 时看到数据库DB-A
  • 用户B只能在执行show databases
  • 时看到数据库DB-B

我遵循文章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中选择。

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

您有任何关于规则或设置如何运行的提示吗?

由于 马尔科

1 个答案:

答案 0 :(得分: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 documentation也提供了一些背景信息。同样Sentry Service Interactions

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