Архитектура Knox

Функции

Knox является шлюзом, предоставляющим единую точку аутентификации и доступа к сервисам кластера Hadoop.

Основные возможности Knox перечислены ниже:

  • Безопасность периметра для REST API сервисов кластера Hadoop:

    • Предоставление токенов и аутентификации.

    • Возможность интегрировать аутентификацию с корпоративными и облачными системами управления (LDAP).

    • Предоставление SSL для сервисов, которые не имеют возможности использовать протокол по умолчанию.

    • Централизованный контроль за счет использования единого шлюза, который поддерживает аудит и авторизацию (при помощи Ranger).

  • Единый URL для объединения REST API сервисов кластера Hadoop:

    • Контроль количества эндпойнтов.

    • Сокрытие внутренней топологии Hadoop от потенциальных атак.

  • Упрощенный доступ благодаря инкапсуляции сервисов с Kerberos или использованию одного SSL-сертификата.

Расположение Knox
Расположение Knox
Расположение Knox
Расположение Knox

Архитектура

Шлюз Knox является слоем поверх сервера Jetty JEE и обладает двумя механизмами расширения: сервис и провайдер. Сервисный фреймворк позволяет добавлять поддержку новых HTTP-эндпойнтов, а провайдер позволяет добавлять функции, которые используются различными сервисами.

Работа Knox состоит из двух фаз: развертывание и runtime. Во время фазы развертывания топологии конвертируются в детали имплементации, основанные на веб-архивах JEE (WAR). После этого в фазе runtime входящие запросы обрабатываются с помощью фильтров, настроенных в WAR. Более детальные диаграммы, которые отражают имплементацию описанных сущностей, можно найти в документации Knox.

Развертывание

Фаза развертывания служит для конвертации понятных человеку дескрипторов топологий в оптимизированные запускаемые артефакты. Данный процесс можно представить как компиляцию дескриптора в JEE WAR, который развертывается во встроенном контейнере JEE.

Этот фреймворк имеет одну особенность в виде сущности под названием contributor — она генерирует артефакты WAR из топологий. Согласно ее шаблону проектирования каждая топология сначала разбирается на конструкции, затем соответствующий contributor назначается каждой конструкции внутри файла топологии. После этого contributor получает конструкцию и обновляет артефакты WAR. Принцип работы Knox в этой фазе представлен ниже:

  1. Топология загружается из директории conf/topologies во внутреннюю структуру.

  2. Сервер-шлюз отправляет запрос фабрике развертывания на создание структуры WAR.

  3. Фабрика развертывания создает базовую структуру WAR.

  4. Каждая конструкция в топологии (провайдер и сервис) посещается, и для неё вызывается соответствующий contributor, который модифицирует структуру WAR, основываясь на информации в файле топологии.

  5. Конечный вариант WAR возвращается шлюзу.

  6. WAR динамически разворачивается через API внутреннего контейнера.

Фаза развертывания Knox
Фаза развертывания Knox
Фаза развертывания Knox
Фаза развертывания Knox

Runtime

Фаза runtime проще по своей логике относительно фазы развертывания, так как следует известным JEE-моделям. Ниже представлена диаграмма, отражающая порядок обработки запросов:

  1. Клиент отправляет запрос некоторому сервису. Этот запрос получается встроенным JEE-контейнером.

  2. В отображении URL к цепям фильтров ищется нужная цепь фильтров.

  3. Вызывается цепь фильтров (которая и сама является фильтром).

  4. Каждый фильтр вызывает последующий фильтр в цепи.

  5. Происходит вызов последнего фильтра. Обычно это особый фильтр отправки, который ответственен за отправку запроса на конечный ресурс. Фильтры отправки также отвечают за чтение ответа.

  6. Получение ответа.

  7. Ответ пробрасывается через различные обертки, добавленные фильтрами. Эти обертки могут изменять ответ в зависимости от их настройки.

  8. Ответ получается контейнером через обертку фильтра ответа.

  9. Ответ возвращается клиенту.

Runtime-фаза Knox
Runtime-фаза Knox
Runtime-фаза Knox
Runtime-фаза Knox

Knox в ADPS

В то время как Kerberos используется для аутентификации внутри системы Hadoop, Knox позволяет новым пользователям использовать API системы без необходимости работы с Kerberos. О роли Knox в системе ADPS можно узнать в статье Обзор ADPS.

Так как в Knox можно настроить LDAP-аутентификацию и авторизацию через Ranger, следующая схема работы может быть построена. Часть с Ranger представляет работу плагина Ranger Knox.

Схема работы Knox
Схема работы Knox
Схема работы Knox
Схема работы Knox
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней