Azure Active Directory, jest to usługa, która zapewnia logowanie jednokrotne oraz uwierzytelnianie wieloskładnikowe. W prosty sposób możemy kontrolować dostęp do środowiska NiFi oraz przyznawać uprawnienia dla poszczególnych grup użytkowników. Active Directory jest na tyle popularną usługą, że wykorzystywana jest w prawie każdym przedsiębiorstwie, umożliwia ona logowanie do wielu aplikacji w ramach jednego konta użytkownika.
Utworzenie aplikacji
W tym celu, należy przejść do Azure Active Directory i wybrać „App registrations”, następnie kliknąć „New registration”. Wprowadzamy nazwę aplikacji, a także adres URL przekierowania, który ma być używany przez Azure Active Directory, aby powrócić do Apache NiFi z tokenem uwierzytelniającym danego użytkownika. URL tworzymy w następujący sposób „https://nazwa_domeny:port” + „/nifi-api/access/oidc/callback”, w tym przykładzie użyłem lokalnej instalacji NiFi, czyli: https://localhost:9443/nifi-api/access/oidc/callback

API permissions
Następnie, należy nadać odpowiednie uprawnienia aplikacji przechodząc do „API permissions” na utworzonej wcześniej aplikacji. Uprawnienia dodajemy za pomocą „Add a permission”, a następnie należy wybrać „Microsoft Graph” i dodać potrzebne uprawnienia z poniższej tabeli.
| API / Permissions name | Type | Admin consent required |
|---|---|---|
| Delegated | No | |
| profile | Delegated | No |
| openid | Delegated | No |
| Group.Read.All | Application | Yes |
| User.Read.All | Application | Yes |
Po dodaniu wymaganych uprawnień, należy kliknąć „Grant admin consent”. Efekt końcowy powinien wyglądać tak jak na poniższym zrzucie ekranu.

Token configuration
Token jest wymagany do pomyślnego uwierzytelnienia OpenID na podstawie głównej nazwy użytkownika (UPN). Przechodząc do „Token configuration”, należy utworzyć nowy token, wybierając opcję „Add optional claim”. W polu „Token type” wybierz ID, a następnie zaznacz „UPN” i wybierz „Add”, jak na zrzucie poniżej.

Następnie, należy edytować wcześniej dodany „Claim” i zaznaczyć opcję „Externally authenticated”.

Certificates & secrets
Wymagane do prawidłowego działania jest wygenerowanie „Client secret”, należy przejść do „Certificates & secrets”, wybrać „New client secret” i dodać nowy klucz, zawartość kolumny Value należy zapisać.

Konfiguracja Apache NiFi
Apache NiFi, należy skonfigurować tak, aby działał przez TLS wraz z uwierzytelnianiem opartym na użytkownikach. W tym celu przejdźmy do plików konfiguracyjnych, które znajdują się w katalogu conf i uzupełnijmy miejsca oznaczone <> danymi wcześniej przygotowanej aplikacji oraz tokenu.
nifi.properties
nifi.security.user.authorizer=managed-authorizer
nifi.security.user.login.identity.provider=
# OpenId Connect SSO Properties #
nifi.security.user.oidc.discovery.url=https://login.microsoftonline.com//v2.0/.well-known/openid-configuration
nifi.security.user.oidc.connect.timeout=5 secs
nifi.security.user.oidc.read.timeout=5 secs
nifi.security.user.oidc.client.id=
nifi.security.user.oidc.client.secret=
nifi.security.user.oidc.preferred.jwsalgorithm=
nifi.security.user.oidc.additional.scopes=profile
nifi.security.user.oidc.claim.identifying.user=upn
nifi.security.user.oidc.fallback.claims.identifying.user=email
nifi.security.user.oidc.truststore.strategy=JDK authorizers.xml
azure-graph-user-group-provider
org.apache.nifi.authorization.azure.AzureGraphUserGroupProvider
5 mins
https://login.microsoftonline.com
upn
composite-configurable-user-group-provider
org.apache.nifi.authorization.CompositeConfigurableUserGroupProvider
file-user-group-provider
azure-graph-user-group-provider
file-access-policy-provider
org.apache.nifi.authorization.FileAccessPolicyProvider
composite-configurable-user-group-provider
./conf/authorizations.xml
Po wprowadzonych zmianach, Apache NiFi należy zrestartować, następnie wejść poprzez link „https://adres_ip_hosta:9443/nifi/”, zostaniemy przekierowani w celu zalogowania się poprzez Azure Active Directory. W zakładce Users wyświetli się wskazana grupa(Group Filter Prefix) oraz inicjalny administrator(Initial Admin Identity) z pliku authorizers.xml, które zostały pomyślnie zaimportowane z Azure Active Directory.

Ostatni etap to nadanie uprawnień dla swojego użytkownika, w tym celu należy prawym przyciskiem myszy na głównym Canvasie, wybrać właściwość „Manage access policies” i dodać wszelkie uprawnienia, aby uzyskać kontrolę nad Apache NiFi.



