Аутентификация пользователей Apache NiFi с OIDC от Okta

Автор Категория ,
Аутентификация пользователей Apache NiFi с OIDC от Okta

Для практического обучения разработчиков Data Flow и инженеров данных, сегодня разберем способ аутентификации пользователей Apache NiFi на примере Okta OIDC в качестве сервиса провайдера удостоверений. Также вспомним другие способы аутентификации пользователей в этом потоковом маршрутизаторе.

Аутентификация в Apache NiFi: краткий ликбез

Apache NiFi поддерживает различные типы методов аутентификации пользователей: с помощью клиентских сертификатов, имени пользователя/пароля, Apache Knox или OpenId Connect (OIDC). Аутентификация имени пользователя/пароля выполняется провайдером удостоверений входа (Login Identity Provider) – подключаемым механизмом для аутентификации пользователей по их имени пользователя/паролю. Какой поставщик удостоверений входа использовать, настраивается в файле nifi.properties. Фреймворк предлагает имя пользователя/пароль с параметрами провайдеров удостоверений входа в систему для одного пользователя по протоколам LDAP и Kerberos.

Свойство nifi.login.identity.provider.configuration.file указывает файл конфигурации для провайдеров удостоверений входа. По умолчанию для этого свойства установлено значение ./conf/login-identity-providers.xml.

Свойство nifi.security.user.login.identity.provider указывает, какой из настроенных провайдеров удостоверений входа следует использовать. Значение по умолчанию для этого свойства — single-user-provider, поддерживающий аутентификацию с помощью сгенерированного имени пользователя и пароля.

Во время OIDC-аутентификации потоковый маршрутизатор будет перенаправлять пользователей для входа в систему с помощью провайдера, прежде чем вернуться в сам фреймворк. Затем фреймворк обратится провайдеру, чтобы идентифицировать пользователя. При аутентификации Apache Knox используется его токен.

Потоковый маршрутизатор НайФай может быть настроен только для одного способа аутентификации: использование сразу нескольких не поддерживается. Если ни один из указанных способов не задан, фреймворк потребует клиентские сертификаты для аутентификации пользователей по HTTPS. Фреймворк не выполняет аутентификацию пользователя по HTTP. При использовании HTTP всем пользователям будут предоставлены все роли.

Администрирование кластера Apache NiFi

Код курса
NIFI
Ближайшая дата курса
14 июля, 2022
Длительность обучения
16 ак.часов
Стоимость обучения
40 000 руб.

Пользователь не может анонимно пройти аутентификацию с помощью защищенного экземпляра NiFi, если для параметра nifi.security.allow.anonymous.authentication не установлено значение true. В этом случае фреймворк также должен быть настроен с авторизатором, который поддерживает авторизацию анонимного пользователя. Пока не предоставляется никаких авторизаторов, поддерживающих эту возможность.

Возможны следующие сценарии, которые следует учитывать при настройке nifi.security.allow.anonymous.authentication:

  • когда пользователь напрямую вызывает конечную точку без попытки аутентификации, security.allow.anonymous.authentication будет контролировать, будет ли запрос аутентифицирован или отклонен.
  • если запрос передается через прокси-узлом в кластере NiFi или отдельным прокси-сервером, который передает запрос анонимному пользователю, nifi.security.allow.anonymous.authentication будет контролировать, будет ли запрос аутентифицирован или отклонен.

Во всех этих сценариях, если запрос аутентифицирован, далее он будет подвергнут обычной авторизации на основе запрошенного ресурса.

Вспомнив основные положения об аутентификации пользователей в НайФай, далее рассмотрим, как настроить фреймворк для OIDC-способа на примере провайдера Okta.

Пример OIDC-аутентификации через сервис Okta

OpenID – это открытый стандарт децентрализованной системы аутентификации, предоставляющей пользователю возможность создать единую учётную запись для аутентификации на множестве не связанных друг с другом интернет-ресурсов через провайдеров. Стандарт описывает процесс коммуникации веб-ресурсов, требующих аутентификации, и OpenID-провайдеров.

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

Чтобы использовать OpenID для аутентификации пользователей Apache NiFi, следует сперва настроить интеграцию с сервисом, предоставляющим такую возможность. Одним из таких сервисов является Okta. Чтобы его использовать, следует сперва зарегистрироваться, а затем добавить нового пользователя, которого можно использовать в качестве администратора НайФай.

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

Okta OIDC нужны URI перенаправления входа (Sign-in redirect URIs) и выхода (Sign-out redirect URIs) для аутентификации пользователей и обмена токенами с NiFi. После их задания и сохранения создаются новые идентификатор клиента (Client ID) и секрет клиента (Client secret), которые нужны при настройке свойств фреймворк для потока OIDC.

Эта настройка производится в файле nifi.properties, который расположен в папке /conf. Необходимо обновить следующие свойства:

nifi.security.user.authorizer=managed-authorizer
nifi.security.user.login.identity.provider=
nifi.security.user.oidc.discovery.url=https://dev-29581534.okta.com/oauth2/default/.well-known/openid-configuration
nifi.security.user.oidc.client.id=0oa3m88r5nZVTenDA5d7
nifi.security.user.oidc.client.secret=ZDe-CynvjltyNiPsL2GaM-GdYE6ud-p_iZJbe2Ih
nifi.security.user.oidc.claim.identifying.user=email

Apache NiFI для инженеров данных

Код курса
NFED
Ближайшая дата курса
14 июля, 2022
Длительность обучения
16 ак.часов
Стоимость обучения
40 000 руб.

Следует использовать собственный идентификатор клиента и секрет клиента. Для правильной настройки управляемого авторизатора необходимы дополнительные настройки в файле./conf/authorizers.xml, куда следует добавить данные пользователя в элемент userGroupProvider:

<userGroupProvider>
<identifier>file-user-group-provider</identifier>
<class>org.apache.nifi.authorization.FileUserGroupProvider</class>
<property name="Users File">./conf/users.xml</property>
<property name="Legacy Authorized Users File"></property>
<property name="Initial User Identity 1">nifi.user1@mail.com</property>
</userGroupProvider>

В этом же файле в элементе <accessPolicyProvider> следует добавить пользователя-администратора:

<accessPolicyProvider>
<identifier>file-access-policy-provider</identifier> <class>org.apache.nifi.authorization.FileAccessPolicyProvider</class>
<property name="User Group Provider">file-user-group-provider</property>
<property name="Authorizations File">./conf/authorizations.xml</property>
<property name="Initial Admin Identity">nifi.user1@mail.com</property>
<property name="Legacy Authorized Users File"></property>
<property name="Node Identity 1"></property>
<property name="Node Group"></property>
</accessPolicyProvider>

NiFi требуется первоначальный пользователь-администратор для настройки других пользователей и их политик, поэтому он предоставляется в файле authorizers.xml.

Наконец, можно протестировать интеграцию NiFi с Okta OIDC, запустив фреймворк. Далее в браузере следует перейти по адресу, ранее указанному как URI перенаправлению входа. При корректной настройке в браузере откроется страница входа в Okta. После верного ввода логина и пароля созданного пользователя, откроется веб-интерфейс фреймворка. Дополнительные пользователи могут быть созданы в Okta и назначены конкретному клиенту. Аналогично одни и те же пользователи могут быть добавлены в NiFi, чтобы они аутентифицировались через поток Okta OIDC.

Читайте в нашей новой статье, как улучшена аутентификация пользователей в свежем выпуске 1.16.0, который вышел в начале марта 2022.

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

Источники

  1. https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html
  2. https://ru.wikipedia.org/wiki/OpenID
  3. https://medium.com/@techtown/authenticate-apache-nifi-users-via-okta-oidc-openid-connect-45d70573393b
  4. https://developer.okta.com