Как пройти аутентификацию в Spark JobServer и передать его Кассандре? - PullRequest
0 голосов
/ 16 января 2019

В настоящее время у меня есть задача, в которой я должен выполнить аутентификацию и авторизацию по LDAP, начиная с Spark Jobserver и передавая его через Spark Master и Workers в базу данных Cassandra (без Datastax Enterprise). Мне уже удалось пройти аутентификацию на Jobserver и экземпляре OpenLDAP. Но я не уверен, как передать эту информацию Кассандре, чтобы иметь возможность выполнять авторизацию на уровне ключей / таблиц.

Поскольку у нас есть KNIME в качестве Клиента для нашей инфраструктуры, мне как-то нужно иметь возможность запретить / разрешить доступ к информации в базе данных для определенных пользователей / групп.

В данный момент я размещаю все вовлеченные компоненты в Docker Containers локально. Все компоненты довольно современны. Это используемые версии:

  • Spark Jobserver: 0.7.0.3-KNIME для Spark 2.x
  • Мастер и рабочий Искры: 2.3.2
  • Кассандра: 3.11.3
  • OpenLDAP: 2.4.44

Сама Spark работает в автономном режиме. Идея в основном заключается в том, чтобы запросить контекст Spark в KNIME (и аутентифицировать), извлечь данные из базы данных Cassandra через Spark и выполнить любые операции с возвращенным кадром данных.

Единственное, чего мне удалось добиться, - это пройти аутентификацию по LDAP с помощью сервера заданий. Но как только я активирую аутентификацию LDAP в Cassandra, я больше не могу войти в систему без какого-либо технического пользователя, который не является фиксированной частью конфигурации Jobserver (настраиваемой в файле environmentsernet.conf Jobserver, как показано ниже).

spark.cassandra.auth.username = <user>
spark.cassandra.auth.password = <pwd>

После поиска в течение почти 3 дней я нахожусь в такой ситуации, когда я пытаюсь найти ответ на эту проблему. Я видел записи в блоге / страницы, в которых говорится о чем-то связанном с Hadoop (вероятно, YARN ?!). Другие писали о Месосе и / или Керберосе.

Для самого сервера заданий я уже активировал use-as-proxy-user

shiro {
   authentication = on
   config.path = "shiro.ini"
   use-as-proxy-user = on
}

Это означает, что имя пользователя уже передается в Spark в свойстве spark.proxy.user.

Чтобы наконец иметь возможность выполнять авторизацию на уровне Keyspace / Table в Cassandra, мне как-то нужна эта информация на уровне базы данных.

Это, наконец, привело меня к следующим вопросам:

  • Кто-нибудь когда-нибудь достигал чего-то подобного с этими компонентами?
  • Возможно ли добиться этого с помощью конфигурации автономного Spark Master?
  • Возможно ли это вообще?
  • Если да, то как?
...