Настройте Sentry для показа / скрытия разных баз данных для разных пользователей

У меня кластер работает с cdh-5.7.0 и настроил следующую настройку

  • Hadoop с Kerberos
  • куст с аутентификацией LDAP
  • куст с авторизацией на страже (правила хранятся в дерби JDBC)

Моя цель - ограничить пользователей, чтобы видеть, какие базы данных существуют в моей системе. Например:

  • Пользователь-A должен видеть базу данных DB-A только при выполнении show databases
  • Пользователь-B должен видеть базу данных DB-B только при выполнении show 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, Но я хочу избежать этого.

Есть ли у вас какие-либо намеки на то, как правила или настройки могут выглядеть, чтобы запустить это?

Спасибо Марко

1 ответ

Решение

В соответствии с вашим описанием и тем, что я узнал из существующих установок, в случае 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 предоставляет некоторый контекст. А также Sentry Service Interactions.

После перезапуска службы Hive вы сможете увидеть ожидаемый результат.

Другие вопросы по тегам