Настройте 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 вы сможете увидеть ожидаемый результат.