Настройка службы SSL контекста Apache NiFi в процессоре InvokeHTTP

Apache NiFi SSL настройка процессора InvokeHTTP примеры курсы обучение, дата-инженерия Apache NiFi безопасность администрирование примеры курсы обучение, Apache NiFi курсы примеры обучение, курсы дата-инженеров, обучение инженеров данных, обучение большим данным, Школа Больших Данных Учебный Центр Коммерсант

Как обеспечить безопасное подключение процессора InvokeHTTP к внешнему API, настроив SSL-службу контекста в Apache NiFi. Краткий ликбез по SSL-соединению и реализации API службы контроллера SSLContextService в Apache NiFi для дата-инженера.

Безопасность работы с внешним API с SSL-соединением

Apache NiFi включает множество процессоров – обработчиков, которые выполняют определенные действия с потоковыми файлами в рамках конвейера обработки данных. Процессор InvokeHTTP используется для подключения к внешнему API и представляет собой обработчик HTTP-клиента, который может взаимодействовать с настраиваемой конечной точкой HTTP, включая указание ее целевого URL-адреса и HTTP-метода. Атрибуты FlowFile преобразуются в заголовки HTTP, а его содержимое включается в тело запроса, если используется HTTP-метод PUT, POST или PATCH.

Если внешний API является безопасным, т.е. URL-адрес начинается с HTTPS, необходимо установить SSL-соединение (Secure Sockets Layer). SSL — это криптографический протокол передачи данных, используемый для отправки зашифрованных данных между двумя системами. В этом протоколе есть шаг, который получает и отправляет SSL-сертификат с сервера и клиента соответственно. SSL использует асимметричную криптографию, например, популярный алгоритм RSA, для аутентификации ключей обмена, симметричное шифрование (DES, 3-DES, RC2, RC4 или AES) для сохранения конфиденциальности и коды аутентификации сообщений для целостности сообщений.

Протокол SSL предоставляет надежный безопасный аутентифицированный частный канал и шифрует все сообщения после простого диалога, который нужен для определения секретного ключа. Аутентификация серверной стороны обязательна, а клиентской – опциональна. Проверка целостности сообщений выполняется в рамках их транспортировки. Важно, что SSL не зависит от прикладного протокола, позволяя HTTP, FTP, TELNET и другим протоколам приложений работать поверх него. SSL может согласовывать алгоритм шифрования и ключ сессии, а также аутентифицировать сервер еще до того, как приложение примет или передаст первый байт сообщения.

Для обеспечения безопасности SSL использует многослойную среду, где конфиденциальность общения гарантируется открытостью безопасного соединения только целевым пользователям.

В процессоре InvokeHTTP есть свойство SSL Context Service — служба контекста SSL, которая предоставляет доверенные сертификаты и клиентские сертификаты для связи TLS. Поэтому, чтобы пропинговать внешний API через процессор InvokeHttp, необходимо в его свойствах задать службу SSL Сontect. Как мы недавно писали, NiFi предоставляет дата-инженеру GUI, где выполняется вся работа по разработке и запуску конвейеров обработки данных, включая настройку процессоров, расположенных на холсте. Как это сделать, мы рассмотрим далее.

Настройка службы SSL контекста в Apache NiFi

Настроить процессор можно, если он не находится в состоянии работы. Поэтому перед настройкой процессора, его следует остановить и дождаться завершения всех его активных задач. Свойство API службы контроллера SSLContextService в Apache NiFi для процессора InvokeHttp имеет 2 реализации:

  • StandardRestrictedSSLContextService — предоставляет возможность один раз настроить свойства хранилища ключей и/или хранилища доверенных сертификатов и повторно использовать эту конфигурацию во всем приложении. Эта реализация позволяет выбирать только ограниченный набор протоколов TLS/SSL, не поддерживая все SSL-протоколы. Набор выбираемых протоколов меняется со времени по мере появления новых протоколов и устаревания старых. Эта служба рекомендуется вместо StandardSSLContextService, если компонент не предполагает взаимодействия с устаревшими системами, которые не поддерживают современные SSL-протоколы.
  • StandardSSLContextService — предоставляет возможность один раз настроить свойства хранилища ключей и/или хранилища доверенных сертификатов и повторно использовать эту конфигурацию во всем приложении. Этот сервис можно использовать для связи как с устаревшими, так и с современными системами. Если нужно обмениваться данными только с устаревшими системами, рекомендуется использовать ранее рассмотренный StandardRestrictedSSLContextService, который позволяет выбирать определенный набор протоколов SSL.

После выбора реализации API службы контроллера SSLContextService можно перейти в ее детальной настройки, которая включает задание следующих параметров:

  • имя файла хранилища ключей – полный путь к файлу cacerts java, состоящему состоит из всех корневых сертификатов, которым доверяет приложение NiFi, работающее на Java.
  • По умолчанию общий пароль для хранилища ключей задан changeit. Его можно изменить с помощью keytool.
  • Тип хранилища ключей — JKS.
InvokeHTTP NiFi SSL
Настройка SSL для процессора InvokeHTTP в NiFi

Рекомендуется использовать один и тот же пароль для пароля ключа и пароля доверия (Truestore Password). Имя файла хранилища доверенных сертификатов совпадает с именем файла хранилища ключей.

После задания всех параметров следует добавить внешний сертификат API в файл cacerts. Это можно сделать с помощью команды keytool:

keytool -import -alias aliasname -keystore “Path_to_cacerts” -file filename.extension

После этого можно включить SSLContextService, который должен иметь возможность подключаться к внешнему API через соответствующий метод HTTP (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS). Также поддерживаются произвольные методы. Все методы, кроме POST, PUT и PATCH, отправляют запросы без тела сообщения. Этот параметр процессора INvokeHTTP поддерживает язык выражений, позволяя использовать атрибуты FlowFile и реестр переменных.

Как эффективно использовать Apache NiFi  для построения эффективных ETL-конвейеров потоковой аналитики больших данных, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://ru.wikipedia.org/wiki/SSL
  2. https://bs-vasanth.medium.com/how-to-set-up-ssl-context-service-in-apache-nifi-a055529a4d26
  3. https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.20.0/org.apache.nifi.processors.standard.InvokeHTTP/index.html
  4. https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-ssl-context-service-nar/1.20.0/org.apache.nifi.ssl.StandardSSLContextService/index.html
Поиск по сайту