Głównie specjalizuję się w budowaniu procesów ETL odpowiedzialnych za integracje różnych źródeł danych za pomocą Apache NiFi.
  • Budowa prostego i automatycznego przepływu danych

Bezpieczna komunikacja pomiędzy NiFi, Registry oraz MiNiFi

Komunikacja SSL pomiędzy wszystkimi usługami w środowisku Apache NiFi jest niezbędna, aby podnieść poziom bezpieczeństwa i chronić dane, które będą przetwarzane lub dystrybuowane za pomocą NiFi. Poniższy poradnik opisuje kwestie generowania certyfikatów oraz ich konfiguracji z poszczególnymi usługami takimi jak NiFi, Registry czy MiNiFi. W pierwszym kroku, polecam zapoznać się z artykułem Urząd certyfikacji dla środowiska Apache NiFi, przedstawia on czynności jakie trzeba wykonać, aby stworzyć własny urząd certyfikacji, a który jest wymagany do dalszej części tego poradnika.

Generowanie certyfikatów

W tym celu wykorzystamy skonfigurowany wcześniej NiFi Toolkit oraz urząd pośredniczący, który został stworzony w poprzednim artykule Urząd certyfikacji dla środowiska Apache NiFi. Kolejno generujemy certyfikaty dla NiFi, Registry oraz MiNiFi.

sudo /opt/nifi-toolkit/bin/tls-toolkit.sh standalone -n 'nifi.domena.pl' \
-o /opt/nifi-toolkit \
--additionalCACertificate /opt/nifi-toolkit/rootCA.pem \
--subjectAlternativeNames 'nifi' \
--subjectAlternativeNames '10.10.0.219' \
-O
sudo /opt/nifi-toolkit/bin/tls-toolkit.sh standalone -n 'registry.domena.pl' \
-o /opt/nifi-toolkit \
--additionalCACertificate /opt/nifi-toolkit/rootCA.pem \
--subjectAlternativeNames 'registry' \
--subjectAlternativeNames '10.10.0.220' \
-O
sudo /opt/nifi-toolkit/bin/tls-toolkit.sh standalone -n 'minifi.domena.pl' \
-o /opt/nifi-toolkit \
--additionalCACertificate /opt/nifi-toolkit/rootCA.pem \
--subjectAlternativeNames 'minifi' \
--subjectAlternativeNames '10.10.0.221' \
-O

Certyfikat PKCS12, który pozwoli na zalogowanie się do NiFi Registry.

sudo /opt/nifi-toolkit/bin/tls-toolkit.sh standalone -n 'admin' \
-o /opt/nifi-toolkit \
--additionalCACertificate /opt/nifi-toolkit/rootCA.pem \
-T PKCS12 \
-O

Konfiguracja

Gdy już mamy wygenerowane wszystkie certyfikaty, należy je przekopiować do odpowiednich katalogów oraz zmodyfikować konfigurację poszczególnych usług.

Apache NiFi

Z nowo powstałego folderu /opt/nifi-toolkit/nifi.domena.pl kopiujemy kolejno keystore.jks i truststore.jks do katalogu /opt/nifi/conf – lokalizację mogą się różnić w zależności od tego, gdzie zainstalowaliście NiFi.

sudo cp /opt/nifi-toolkit/nifi.domena.pl/keystore.jks /opt/nifi/conf/
sudo cp /opt/nifi-toolkit/nifi.domena.pl/truststore.jks /opt/nifi/conf/

Następnie, należy z pliku /opt/nifi-toolkit/nifi.domena.pl/nifi.properties skopiować nifi.security.keystorePasswd oraz nifi.security.truststorePasswd. Przystępujemy do zmiany konfiguracji Apache NiFi, w pliku /opt/nifi/conf/nifi.properties, uzupełniamy poniższe pola analogicznie do własnego przypadku oraz wcześniej skopiowane wartości wklejamy w odpowiednie właściwości.

nifi.web.http.host= # usuwamy, jeżeli coś było
nifi.web.http.port= # usuwamy, jeżeli coś było
nifi.remote.input.secure=true # włączamy SSL dla protokołu Site-to-Site
nifi.web.https.host=10.10.0.219
nifi.web.https.port=8443
nifi.security.keystore=./conf/keystore.jks
nifi.security.keystoreType=jks
nifi.security.keystorePasswd=xsd6abt12VN3n41N46/ClkPjLZtdWgwXp3cDvKS/EJ8
nifi.security.keyPasswd=xsd6abt12VN3n41N46/ClkPjLZtdWgwXp3cDvKS/EJ8
nifi.security.truststore=./conf/truststore.jks
nifi.security.truststoreType=jks
nifi.security.truststorePasswd=hyF1gjbZPMziPFe4nPSmJRnpzIpPfDqo7l81RnIDG3Y

Zapisujemy zmiany i restartujemy NiFi, jeżeli wszystko zostało zrobione prawidłowo, logując się do GUI powinniśmy widzieć zieloną kłódeczkę.

Apache NiFi uruchomiony na certyfikacie z własnego urzędu certyfikacji

Apache Registry

Analogicznie do NiFi, kopiujemy wygenerowane certyfikaty do katalogu z konfiguracją NiFi Registry, jeżeli jest na innym hoście, należy je tam przenieść.

sudo cp /opt/nifi-toolkit/registry.domena.pl/keystore.jks /opt/nifi-registry/conf/
sudo cp /opt/nifi-toolkit/registry.domena.pl/truststore.jks /opt/nifi-registry/conf/

Ponownie z pliku /opt/nifi-toolkit/registry.domena.pl/nifi.properties, należy skopiować nifi.security.keystorePasswd oraz nifi.security.truststorePasswd, które następnie uzupełnimy w /opt/nifi-registry/conf/nifi-registry.properties

nifi.registry.web.http.port=18080 # usuwamy, jeśli wypełnione
nifi.registry.web.https.host=10.10.0.220
nifi.registry.web.https.port=18443
nifi.registry.security.keystore=./conf/keystore.jks
nifi.registry.security.keystoreType=jks
nifi.registry.security.keystorePasswd=7nvQeYqtPglqBtyWcmyYnHSMq9xNoAcKdwCVk5gr9No
nifi.registry.security.keyPasswd=7nvQeYqtPglqBtyWcmyYnHSMq9xNoAcKdwCVk5gr9No
nifi.registry.security.truststore=./conf/truststore.jks
nifi.registry.security.truststoreType=jks
nifi.registry.security.truststorePasswd=EXUeAj1P9j+OLlR91MogbhrpQ6Nh3bTWlibn9mVwvmE

W celu zalogowania się do Registry, musimy dodać wcześniej utworzony certyfikat PKCS12 do systemu Windows. Należy, skopiować plik z /opt/nifi-toolkit/admin/keystore.pkcs12 na komputer i zmienić jego rozszerzenie na .p12. Następnie, certyfikat trzeba zainstalować w systemie za pomocą okna dialogowego, który się wyświetli po otworzeniu certyfikatu, aby go dodać niezbędny będzie nifi.registry.security.keyPasswd, które uzupełniamy w polu hasła. Restartujemy usługę i możemy zalogować się poprzez link: https://nazwa_hosta:18443/nifi-registry

Apache NiFi Registry uruchomiony na certyfikacie z własnego urzędu certyfikacji

Apache MiNiFi

Wygenerowane certyfikaty keystore.jks i truststore.jks z folderu /opt/nifi-toolkit/minifi.domena.pl należy przekopiować do katalogu /opt/minifi/conf, który znajduje się na hoście z MiNiFi. Następnie, należy edytować plik /opt/minifi/config.yml pamiętając o skopiowaniu nifi.security.keystorePasswd i nifi.security.truststorePasswd z wygenerowanego pliku nifi.properties

url: https://10.10.0.219:8443/nifi # zmieniamy na NiFi SSL, aby MiNiFi mógł się z nim poprawnie skomunikować
Security Properties:
  keystore: './conf/keystore.jks'
  keystore type: 'jks'
  keystore password: 'xyGnbxbMV3NHohE08M9/igU4Iumwze1io4HnywGHfws'
  key password: 'xyGnbxbMV3NHohE08M9/igU4Iumwze1io4HnywGHfws'
  truststore: './conf/truststore.jks'
  truststore type: 'jks'
  truststore password: 'M0uEHugrZrpuKW398iF0U9yR7+eyPz0JT1JS5580zz4'
  ssl protocol: 'TLS'

Restartujemy MiNiFi i możemy przetestować połączenie z NiFi tak jak opisane zostało w tym artykule Instalacja i konfiguracja środowiska Apache MiNiFi

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *