Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Struktura oraz podział używanych serwisów

 

System podzielony jest między dwa środowiska znajdujące się na osobnych serwerach

  • Main

    • PASK-SERVICES - autorskie serwisy UNITEAM

    • PASK-TOOLS - serwisy potrzebne do obsługi systemu

  • Utils

    • PASK-UTILS - baza danych oraz serwisy agregujące dane potrzebne do działania systemu

Image Removed

Minimalne wymagania systemowe oraz przygotowanie środowisk

Aby system działał poprawnie należy przygotować środowiska wg poniższych informacji

Serwer main

Nazwa

Wartość

CPU

4 vcore

RAM

16 GB

HDD

50 GB

OS

Ubuntu server 20.04 LTS (lub nowszy)

IP

IPv4

Serwer utils

Wstęp

  1. Podział strukturalny
    System PASK jest możliwy do zainstalowania na serwerach linux. Aby lepiej zrozumieć proces instalacji i działanie samego systemu przedstawiamy podział strukturalny systemu ze względu na serwery.

MAIN

Autorskie kontenery PASK

Kontenery pomocnicze

UTILS

Baza danych

Kontenery agregujące dane

  1. Wymagania sprzętowe
    Poniżej przedstawiamy minimalne wymagania sprzętowe dla PASK

Zainstalować wymagane zależności na obu serwerach (kod poniżej) oraz utworzyć wymagane foldery

Wymagane zależności

  • docker engine

  • docker compose

  • apt-transport-https

  • ca-certificates

  • curl

  • software-properties-common

  • python3-pip

  • virtualenv

  • python3-setuptools

  • cloud-guest-utils

  • jq
    kod do instalujący wymagane zależności i tworzący foldery z odpowiednimi uprawnieniami (zalecane uruchomienie z uprawnieniami root)

    Nazwa

    Wartość

    CPU

    4 vcore

    CPU Virtualization Technology

    x86-64-v2

    RAM

    8

    16 GB

    HDD

    Storage

    50 GB

    OS

    Ubuntu server

    20

    22.04 LTS (lub nowszy)

    IP

    IPv4

  • Stworzyć serwery wg powyższych tabeli

  • Na obu serwerach stworzyć użytkownika z uprawnieniami root, lub posiadać dostęp do użytkownika systemowego root

  • Udrożnić połączenie między serwerami tak aby można było swobodnie przesyłać dane między serwerami

  • Utworzyć rekord DNS (lokalny np. pask.domena.local lub globalny np. pask.domena.pl) i skierować go na adres ip serwera “main”

  • Upewnić się że serwery mogą pobrać dane z sieci WAN

  • Stworzyć certyfikat SSL (w postaci certificate.crt oraz privkey.key) tożsame z nadaną nazwą domenową

  • Jeśli istnieje potrzeba integracji z AD stworzyć użytkownika w domenie z uprawnieniami read-only

  • Nazwa

    Wartość

    CPU

    4 vcore

    CPU Virtualization Technology

    x86-64-v2

    RAM

    8 GB

    Storage

    50 GB

    OS

    Ubuntu server 22.04 LTS (lub nowszy)

    IP

    IPv4

    1. Potrzebne informacje oraz pliki
      Aby poprawnie zainstalować PASK potrzebujemy kilku informacji oraz plików, które należy przygotować przed przystąpieniem do instalacji.

      1. Użytkownik z uprawnieniami root na obu serwerach

      2. Udrożnione połączenie sieciowe między serwerami ( potrzeba komunikacji na wielu portach poprzez sieć LAN )

      3. Udrożnione połączenie sieciowe z serwerów na których będzie instalowany PASK do WAN w celu pobrania repozytorium oraz obrazów docker

      4. FQDN dla PASK skierowany na serwer main - pod tym FQDN będzie dostępny PASK po zakończonym procesie instalacji. Może być lokalny jeśli PASK ma działać jedynie w sieci LAN lub globalny jeśli PASK ma być dostępny z sieci WAN

      5. Certyfikat oraz klucz prywatny SSL w formacie PEM tożsamy z FQDN ( wildcard dla domeny jest dopuszczalny )

      6. Konto oraz dane dostępowe SMTP w celu konfiguracji wysyłki powiadomień e-mail

      7. Jeśli istnieje potrzeba integracji z AD stworzyć użytkownika w domenie z uprawnieniami read-only

    2. Wymagania systemowe

      1. Instalacja pakietów
        Dodatkowo na serwerach należy zainstalować poniższe pakiety aplikacyjne aby instalacja przebiegła bez problemu. Część aplikacji powinna być już zainstalowana w systemie, natomiast z racji różnic wynikających z różnych wersji systemu podajemy pełną listę aplikacji potrzebnych do instalacji w formie skryptu instalacyjnego “kopiuj - wklej”

        Code Block
        apt-get update && apt-get upgrade -y
        apt-get install -y 
    docker.io
      1. apt-transport-https ca-certificates curl software-properties-common python3-pip virtualenv python3-setuptools cloud-guest-utils jq 
    systemctl
      1. git
        
    start
      1. sudo 
    docker
      1. apt-get 
    systemctl enable docker docker --version
      1. update
        sudo apt-get install -y ca-certificates curl
        sudo install -m 0755 -d /etc/apt/keyrings
        sudo curl -
    L
      1. fsSL 
    "
      1. https://
    github
      1. download.docker.com/
    docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose -version cd /opt mkdir pask pask/data chmod 777 pask/data mkdir composer cd composer
  • Układ folderów

    Code Block
    /opt/
    ├── composer
    ├── lost+found
    └── pask
        └── data
    
  • Pozostając w folderze /opt/composer na obu serwerach pobieramy kod aplikacji z repozytorium (dostęp do repozytorium lub jego zawartość przesłane zostaną inną formą komunikacji)

    • W przypadku gdy chcemy pobrać najnowszą wersję wpisujemy 
      git clone git@bitbucket.org:uniteampl/iamu-composer.git

    • W przypadku potrzeby pobrania specyficznej wersji wpisujemy 
      git clone -b <nazwa_brancha> git@bitbucket.org:uniteampl/iamu-composer.git
      np. git clone -b release/1.4.0 git@bitbucket.org:uniteampl/iamu-composer.git

    Po sklonowaniu gdy wejdziemy w pobrany folder iamu-composer zobaczymy zawartość  w postaci : 

    Image Removed

    Konfiguracja

    Konfiguracja polega na edycji dwóch plików, jeden ze zmiennymi systemowymi drugi z konfiguracją serwera proxy.

    UWAGA! Poniższe kroki należy wykonać na obu serwerach w dokładnym odwzorowaniu, tak aby po skończonej konfiguracji na obu serwerach znajdowały się dokładnie takie same konfiguracje .env oraz nginx.conf

    1. Edycja pliku ze zmiennymi systemowymi “.env”

    Plik “.env” znajdziemy w głównym folderze repozytorium. Zawiera on wiele istotnych zmiennych potrzebnych do poprawnego skonfigurowania i uruchomienia systemu. Z racji na ilość danych zmienne zostały zawarte w tabeli poniżej wraz z opisami i danymi. Plik należy dopasować do swoich potrzeb i środowiska.

    Plik zawiera konfigurowalne elementy zawarte poniżej, pozostałe elementy należy zostawić niezmienione:

    Zmienna

    Domyślna wartość

    Opis

    Konfiguracja

    URL

    localhost

    Adres na którym jest wystawiony pask podmienić na nazwę domenową

    obowiązkowe

    PROFILE

    docker

    Domyślny profil dla aplikacji z jakim ma być uruchomiona.

    prod- uruchomimy czyste środowisko bez danych testowych
    docker - uruchomimy środowisko wraz z danymi testowymi

    obowiązkowe

    CRT_DIR

    ./proxy/nginx-selfsigned.crt

    Lokalizacja certyfikatu ssl, domyślny (generuje ostrzeżenie przy ładowaniu strony logowania) zalecana podmiana

    opcjonalne

    KEY_DIR

    ./proxy/nginx-selfsigned.key

    Lokalizacja klucza certyfikatu ssl, domyślny (generuje ostrzeżenie przy ładowaniu strony logowania) zalecana podmiana

    opcjonalne

    POSTGRES_HOST

    db-service

    Host bazy danych podmienić na adres ip serwra utils

    obowiązkowe

    POSTGRES_PASSWORD

    iamu_password

    Hasło użytkownika bazy danych podmienić na silne hasło

    obowiązkowe

    MAIL_SMTP_HOST

    smtp

    Adres serwera smtp do wysyłki maili przez system podmienić na adres serwera mailowego do wysyłki maili przez system

    obowiązkowe

    MAIL_SMTP_PORT

    1025

    Port serwera smtp do wysyłki maili przez system podmienić na port serwera mailowego do wysyłki maili przez system

    obowiązkowe

    MAIL_SMTP_USER

    -

    Login użytkownika serwera pocztowego podmienić na login własnego użytkownika

    obowiązkowe

    MAIL_SMTP_PASS

    pass**

    Hasło użytkownika serwera pocztowego podmienić na hasło własnego użytkownika

    obowiązkowe

    MAIL_SMTP_AUTH

    'true'

    Zmienna definiująca czy wymagana jest autoryzacja loginem i hasłem zależne od konfiguracji serwera pocztowego

    opcjonalne

    MAIL_SMTP_STARTTLS

    'true'

    Zmienna definiująca czy wymagane jest szyfrowanie STARTTLS zależne od konfiguracji serwera pocztowego

    opcjonalne

    MAIL_FROM

    info@pask.id

    Zmienna definiująca pole “nadawca” zawarte w wysyłanych wiadomościach e-mail

    opcjonalne

    LDAP_ORGANISATION

    "pask"

    Nazwa organizacji w LDAP zalecana podmiana na własną nazwę organizacji

    opcjonalne

    LDAP_DOMAIN

    "pask.id"

    Nazwa domeny w LDAP zalecana podmiana na własną domenę

    opcjonalne

    LDAP_ADMIN_PASSWORD

    "some-ldap-password"

    Hasło administratora LDAP zalecana podmiana na silne hasło

    opcjonalne

    LDAP_IP

    ldap

    Host serwisu Ldap podmienić na adres ip serwera utils

    opcjonalne

    GRAYLOG_HOST

    127.0.0.1

    Host serwisu Graylog podmienić na adres ip serwera utils

    obowiązkowe

    INTERNAL_GRAYLOG_HOST

    graylog

    Host serwisu Graylog podmienić na adres ip serwera util

    obowiązkowe

    GRAYLOG_PASSWORD_SECRET

    somepasswordpepper

    Hasło dostępowe serwisu Graylog zalecana podmiana na silne hasło

    opcjonalne

    2. Edycja pliku z konfiguracją serwera proxy

    W folderze /opt/composer/iamu-composer/proxy w pliku nginix.conf zawarta jest konfiguracja proxy.

    Należy podmienić na adres IP serwera “utils” wszystkie adresy odwołujące się do utils w definicji proxy_pass w poniższych klamrach location

    • location /graylog

    • location /db

    • location /kafka

    • location /ldap/

    • location /ssp/

    Uruchomienie

    Aby uruchomić PASK potrzebujemy najpierw wejść na maszynę z “utils”, wchodzimy do folderu gdzie umieściliśmy folder z sklonowanym systemem PASK i wykonujemy komendę :

    docker-compose -f utils-compose.yml -f prod-utils.yml --env-file .env  up -d

    by zweryfikować poprawność działania serwisów możemy wykonać komendę:

    docker-compose -f utils-compose.yml -f prod-utils.yml ps

    UWAGA! Poprawne działanie oznacza że kontenery posiadają status healthy a nie starting

    Image Removed

    Następnie wchodzimy na maszynę “main”, wchodzimy do folderu gdzie umieściliśmy folder z sklonowanym systemem PASK i wykonujemy komendę :

    docker-compose -f main-compose.yml -f prod-main.yml --env-file .env  up -d

    by zweryfikować poprawność działania serwisów możemy wykonać komendę:

    docker-compose -f main-compose.yml -f prod-main.yml ps

    UWAGA! Poprawne działanie oznacza że kontenery posiadają status healthy a nie starting

    Image Removed

    Ostatnim krokiem jest wykonanie dwóch metod z ciałem:

    1. Należy podmienić pask.domena.pl na nazwę domenową z przygotowania środowiska
      Metodę skierować na adres poniżej

      1. adres

        Code Block
        http://pask.domena.pl:8301/init-auth-server

         

      2. metoda

        Code Block
        {
        
        "redirectUrl" : "https://pask.domena.pl/login"
        
        }
        
      3. Następnie należy poczekać na poprawną odpowiedź zwrotną

    2. Należy podmienić pask.domena.pl na nazwę domenową z przygotowania środowiska, wartości email oraz login pozostawić bez zmian natomiast password zastąpić silnym hasłem
      Metodę skierować na adres poniżej

      1. adres

        Code Block
        http://pask.domena.pl:8301/init-on-premise
      2. metoda

        Code Block
        {
        
        "email": "admin@uniteam.pl",
        
        "login": "Admin",
        
        "password": "hasło",
        
        }
        
      3. Następnie należy poczekać na poprawną odpowiedź zwrotną

    Logowanie

    Po poprawnej instalacji wchodzimy na wybrany przez nas przy konfiguracji adres dla PASK i zostajemy przekierowani automatycznie do panelu logowania. 
    Gratulacje instalacja została zakończona sukcesem

    Image Removed

    Porady:

    Sugerujemy aby katalog który podpinamy do bazy danych był osobna macierza albo by posiadał wysoka dostępność.
      1. linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
        sudo chmod a+r /etc/apt/keyrings/docker.asc
        
        # Add the repository to Apt sources:
        echo \
          "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
          $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
          sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
        sudo apt-get update
        
        sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
        docker compose version
      2. Konfiguracja katalogów
        Kolejnym krokiem jest konfiguracja struktury katalogów potrzebnych do poprawnej instalacji i działania PASK

        Code Block
        cd /opt
        mkdir pask pask/data
        chmod 777 pask/data
        mkdir composer
        cd composer

        Po poprawnym wykonaniu poleceń układ katalogów na serwerach powinien wyglądać następująco

        Code Block
        /opt/
        ├── composer
        └── pask
            └── data
      3. Wgranie plików instalacyjnych PASK
        Ostatnim krokiem wstępu jest wgranie plików systemu PASK na srewery. Pliki należy skopiować włącznie z katalogiem iamu-composer do katalogu /opt/composer . Po poprawnym wgraniu plików w katalogu powinniśmy otrzymać taki widok po wydaniu polecenia ll /opt/composer/iamu-composer

    1-20240813-102211.pngImage Added

    Instalacja

    1. Kroki do wykonania na obu serwerach.

    1.2.  Zalogować się do docker registry uniteamprod.azurecr.io ( dane logowania zostaną przesłane w bezpieczny sposób )

    Code Block
    docker login uniteamprod.azurecr.io 

    1.3.  Jeśli posiadacie Sswoje certyfikaty SSL należy ich zawartość skopiować do katalogu /opt/composer/iamu-composer/proxy

    1.4.  Podmienić dane w pliku iamu-composer/variables.env
    UWAGA!!! Niektóre holdery pojawiają się więcej niż raz w pliku variables.env np. [UTILS_IP]
    Dodatkowo wartości w tabeli oznaczone na pomarańczowo są opcjonalne w zależności od wybranego dostawcy AD. PASK umożliwia utworzenie lokalnego AD (OpenLDAP) w przypadku gdy firma nie posiada własnego AD.
    Wszystkie i secrety muszą się składać wyłącznie z dużych i małych liter oraz cyfr, zabronione są znaki specjalne. Minimalna długość to 18 znaków.
     

    HOLDER

    WYJAŚNIENIE WARTOSĆI

    [URL]

    FQDN pod którym widoczny będzie PASK.

    [UTILS_IP]

    Adres IP serwera utils

    [DB_PASSWORD]

    Hasło do nowo tworzonej bazy danych

    [EMAIL_HOST]

    Host serwera SMTP

    [SMTP_USER]

    Login do serwera SMTP

    [SMTP_PASSWORD]

    Hasło do serwera SMTP

    [FROM_MAIL]

    Adres e-mail który będzie widoczny jako nadawca wiadomości

    [LDAP_ORGANISATION]

    Nazwa organizacji LDAP. Np. pask

    [LDAP_DOMAIN]

    Domena LDAP. Np. pask.id

    [LDAP_ADMIN_PASSWORD]

    Hasło administratora AD

    [KEYCLOAK_PASSWORD]

    Hasło administratora Keycloak

    [PASK_ADMIN_PASSWORD]

    Hasło administratora PASK

    [TENANT_ID]

    ID tenanta do wygenerowania pod linkiem

    [AUTH_PASK_CLIENT_SECRET]

    Secret do autoryzacji serwisów w Keycloak

    [AUTH_PASK_API_CLIENT_SECRET]

    Secret do autoryzacji serwisów w Keycloak

    [AUTH_PASK_API_REALM_CLIENT_SECRET]

    Secret do autoryzacji serwisów w Keycloak

    [AUTH_ADMIN_CLIENT_SECRET]

    Secret do autoryzacji serwisów w Keycloak

    [HASH_SECRET]

    Secret służący szyfrownaiu danych w PASK

    [HASH_PEPPER]

    Secret służący szyfrownaiu danych w PASK

    [ENCRYPTION_SECRET]

    Secret służący szyfrownaiu danych w PASK

    [GRAYLOG_PASSWORD]

    Hasło do graylog (musi być takie samo jak wartość poniżej)

    [GRAYLOG_PASSWORD_HASH]

    Zahashowane hasło powyżej. Do hashowania polecamy użyć linku (wartości SHA2-256, 64 lenght)

    1.5.  W pliku nginx.conf dostarczonym w iamu-composer/proxy  podmienić wszystkie frazy „ utils ” na adres IP serwera utils.

    1. Serwer Utils

    2.1. 

    Code Block
     cd /opt/composer/iamu-composer 

    2.2.  W zależności od tego czy pask ma być uruchomiony z openldap czy nie: 

    2.2.1.      Z openldap wykonać polecenie 

    Code Block
    docker compose -f utils-compose.yml --profile utils-prod-ldap --env-file variables.env up -d

    2.2.2.      Bez openldap wykonać polecenie 

    Code Block
    docker compose -f utils-compose.yml --profile utils-prod --env-file variables.env up -d

    2.3.  Aby weryfikować poprawność działania serwisów możemy wykonać komendę docker ps -a 

    2-20240813-102438.pngImage Added

    2.4.  UWAGA! Poprawne działanie oznacza że kontenery posiadające status healtcheck mają status healthy a nie starting/unhealthy. Wyjątkiem są kontenery liquibase które restartują się tak długo aż wszystkie usługi nie zostaną poprawnie zaimplementowane, o czym przechodzą w status exited

    1. Serwer Main 

    3.1. 

    Code Block
    mkdir -p /opt/pask/data/keycloak/conf/truststores

    3.2. 

    Code Block
    cd /opt/composer/iamu-composer

    3.3.  W zależności od tego czy pask ma być uruchomiony z openldap czy nie: 

    3.3.1.            Z openldap wykonać polecenie 

    Code Block
    docker compose -f main-compose.yml --profile main-prod-ldap --env-file variables.env up -d

    3.3.2.      Bez openldap wykonać polecenie 

    Code Block
    docker compose -f main-compose.yml --profile main-prod --env-file variables.env up -d

    3.4. Zmienić uprawnienia w katalogu /opt/pask/data po wykonaniu się polecenia docker compose

    Code Block
    chmod -R 777 /opt/pask/data

    3.4.  Aby weryfikować poprawność działania serwisów możemy wykonać komendę 

    Code Block
    docker ps -a 
    3-20240813-102508.pngImage Added

    3.5.  UWAGA! Poprawne działanie oznacza że kontenery posiadające status healtcheck mają status healthy a nie starting/unhealthy. Wyjątkiem są kontenery keycloak-manager które restartują się tak długo aż wszystkie usługi nie zostaną poprawnie zaimplementowane, o czym przechodzą w status exited

    1. (Krok dodatkowy na serwerze main) Instalacja własnego certyfikatu CA do PASK
      WAŻNE!!! Jeśli instalujemy własny certyfikat  CA, jest on zapisany w PASK do kolejnej aktualizacji serwisów. Oznacza to że od tego momentu co aktualizację PASK należy wykonywać ten krok, certyfikat pozostanie w /opt/pask/data/… natomiast samo polecenie należy wykonać przy każdej aktualizacji. Wynika to z tego iż rootCA dostawców globalnych stale są zmieniane/odświeżane w związku z czym przy każdej wersji PASK w kontenerze dostarczony jest świeży plik z rootCA.

    4.1.  Jeśli posiadasz własny certyfikat CA który powinien znaleźć się w PASK (np. do połączenia ldaps) możesz go dodać w następujący sposób

    4.2.  Skopiuj certyfikat do /opt/pask/data/tenant-service/config
    oraz do /opt/pask/data/keycloak/conf/truststores

    4.3.  Podmień w poleceniu poniżej wartości „cert_alias” oraz „cert_name_in_config_directory”
    (polecenie wykonujemy tylko dla tenant-service, instalacja certyfikatu w keycloak odbywa się poprzez skopiowanie certyfikatu do katalogu i restart kontenera)

    Code Block
    docker exec tenant-service keytool -storepass changeit -noprompt -trustcacerts -importcert  -alias cert_alias -keystore /opt/java/openjdk/lib/security/cacerts -file /app/config/cert_name_in_config_directory

    4.4.  Zrestartuj kontener keycloak oraz proxy (uwaga restart kontenerów może potrwać nawet kilka minut)

    Code Block
    docker restart keycloak proxy
    1. Inicjalizacja

    5.1.  Uruchomić ponownie kontenery gateway oraz proxy 

    Code Block
    docker restart gateway proxy 

    5.2.  Uruchomić ponownie kontener frontend 

    Code Block
    docker restart frontend 

    5.3.  Zainicjalizować środowisko poprzez wykonanie metod POST na serwerze main
    podmienić zmienne wg wzorów
    ${URL_from_variables.env} – pask.uniteam.pl

    Code Block
    curl -k -d "client_id=pask" -d "client_secret=${AUTH_PASK_CLIENT_SECRET_from_variables.env}" -d "grant_type=client_credentials" https://${URL_from_variables.env}/keycloak/realms/${ON_PREMISE_TENANT_ID_from_variables.env}/protocol/openid-connect/token

    {{ access_token_from_previous_POST }} – eyJhbGc…BwBRpWQ

    Code Block
    curl -X POST http://localhost:8301/init-on-premise -H "Authorization: Bearer {{ access_token_from_previous_POST }}" -H "Content-Type: application/json" -d '{"email":"pask@pask.id","timeZone":"Europe/Warsaw","language":"pl/PL"}' -k

     

    1. Konfiguracja Keycloak

    Następnym krokiem będzie konfiguracja narzędzia keycloak tak aby przenieść zadanie uwierzytelniania oraz przypisywania ról właśnie na te narzędzie.  Do wyboru są dwie ścieżki postępowania.
    Konfigurację należy dobrać adekwatnie do posiadanego środowiska oraz typu mapowania które dzielimy następująco:

    AD (Microsoft)

                   Konfiguracja federacji – 6.1

                   Federacja z grupami AD – 6.2

    OpenLDAP

                   Konfiguracja federacji – 6.3

                   Federacja z grupami AD – 6.4

    6.1.  Konfiguracja keycloak, AD (Microsoft) Konfiguracja federacji

    6.1.1.      Logujemy się do PASK danymi lokalnego administratora, rozwijamy menu w prawym górnym rogu klikając na okrągłą ikonkę postaci -> „Konta użytkowników” ( otworzy się nowa karta )

    6.1.2.      Przechodzimy w menu po lewej stronie do zakładki „Federacja użytkowników” -> „Dodaj dostawcę” ( kafelek po prawej stronie UWAGA! Oba kafelki mają te same nazwy )

    6.1.3.      Uzupełniamy według tabelki poniżej, pola nie zawarte w tabelce pozostawiamy bez zmian
    UWAGA pola „Atrybut LDAP nazwy użytkownika”  oraz „Atrybut RDN LDAP”  są domyślnie uzupełnione wartościami, niestety w wyniku błędu w WebGUI należy usunąć te wartości i jeszcze raz ręcznie wpisać aby zostały poprawnie zapisane

    UWAGA 2 jeśli OU w polu „DN użytkowników” jest dokładnie tam gdzie są użytkownicy nie musimy robić nic. Jeśli natomiast OU jest w drzewie AD wyżej niż znajduje się OU z użytkownikami należy edytować opcje Zakres wyszukiwania ( kilka pozycji niżej) na „poddrzewo” aby pozwolić keycloakowi wyszukiwać rekurencyjnie danych

    UWAGA 3  jeśli OU jest zapięte bardzo wysoko istnieje ryzyko wyszukania i zmapowania przez keycloak danych w innych poddrzewach których nie chcielibyśmy zmapować. Dodatkowo wysokie zapięcie OU ma wpływ na wydajność rozwiązania z racji potrzeby przeszukiwania większej ilości danych za każdym razem

    NAZWA POLA W KEYCLOAK

    PRZYKŁADOWA WARTOŚĆ

    ŹRÓDŁO DANYCH

    Dostawca

    Active Directory

    -

    Adres URL połączenia

    -

    URL w edycji konektora

    Bind DN

    -

    Użytkownik w edycji konektora

    Poświadczenia wiązania 

    -

    Hasło użytkownika w AD

    Tryb edycji

    UNSYNCED

    -

    DN użytkowników 

    -

    Podstawowe OU w edycji konektora

    Atrybut LDAP nazwy użytkownika

    [sAMAccountName, cn]

    Główny atrybut (User Name Attribute) w konfiguracji konektora

    Atrybut RDN LDAP

    [sAMAccountName, cn]

    Główny atrybut (User Name Attribute) w konfiguracji konektora

    Atrybut LDAP UUID

    [objectGUID]

    Unikalny atrybut użytkownika (User Unique Attribute) w konfiguracji konektora

    Klasy obiektów użytkownika

    [person, organizationalPerson,user]

    Klasy obiektu (User Object Classes) w konfiguracji konektora

    Filtr LDAP użytkownika

    -

    Filtr do szukania użytkowników (User Object Filter)

    Importuj użytkowników

    ON

    -

    Synchronizuj rejestracje

    OFF

    -

    Okresowa pełna synchronizacja

    ON

    -

    6.1.4.      Testujemy połączenie przyciskami kolejno „Testuj połączenie” oraz „Testowanie autentykacji”, jeśli oba testy zakończą się powodzeniem klikamy „Zapisz” na dole strony

    6.1.5.      Następnie wchodzimy w zapisanego właśnie dostawcę i wykonujemy pierwszą synchronizację, klikając w prawym górnym rogu listę rozwijaną „Akcja” i wybierając pozycję „Synchronizuj wszystkich użytkowników”

    6.1.6.      Po poprawnej synchronizacji sprawdzamy czy użytkownicy zostali poprawnie zsynchronizowani potwierdzając obecność wpisów w zakładce „Użytkownicy” w menu po lewej stronie i wpisując * (słownie: gwiazdka) w pole wyszukiwania i klikamy enter. Pola adresów e-mail będą miały obok siebie czerwony znaczek, jest to pożądane zachowanie.

    6.2.  Konfiguracja keycloak, AD (Microsoft) Federacja z grupami AD

    6.2.1.      Logujemy się do PASK danymi lokalnego administratora, rozwijamy menu w prawym górnym rogu klikając na okrągłą ikonkę postaci -> „Konta użytkowników” ( otworzy się nowa karta )

    6.2.2.      Przechodzimy w menu po lewej stronie do zakładki „Federacja użytkowników” -> „Dodaj dostawcę” ( kafelek po prawej stronie UWAGA! Oba kafelki mają te same nazwy )

    6.2.3.      Uzupełniamy według tabelki poniżej, pola nie zawarte w tabelce pozostawiamy bez zmian
    UWAGA pola „Atrybut LDAP nazwy użytkownika”  oraz „Atrybut RDN LDAP”  są domyślnie uzupełnione wartościami, niestety w wyniku błędu w WebGUI należy usunąć te wartości i jeszcze raz ręcznie wpisać aby zostały poprawnie zapisane

    UWAGA 2 jeśli OU w polu „DN użytkowników” jest dokładnie tam gdzie są użytkownicy nie musimy robić nic. Jeśli natomiast OU jest w drzewie AD wyżej niż znajduje się OU z użytkownikami należy edytować opcje Zakres wyszukiwania ( kilka pozycji niżej) na „poddrzewo” aby pozwolić keycloakowi wyszukiwać rekurencyjnie danych

    UWAGA 3  jeśli OU jest zapięte bardzo wysoko istnieje ryzyko wyszukania i zmapowania przez keycloak danych w innych poddrzewach których nie chcielibyśmy zmapować. Dodatkowo wysokie zapięcie OU ma wpływ na wydajność rozwiązania z racji potrzeby przeszukiwania większej ilości danych za każdym razem

    NAZWA POLA W KEYCLOAK

    PRZYKŁADOWA WARTOŚĆ

    ŹRÓDŁO DANYCH

    Dostawca

    Active Directory

    -

    Adres URL połączenia

    -

    URL w edycji konektora

    Bind DN

    -

    Użytkownik w edycji konektora

    Poświadczenia wiązania 

    -

    Hasło użytkownika w AD

    Tryb edycji

    UNSYNCED

    -

    DN użytkowników 

    -

    Podstawowe OU w edycji konektora

    Atrybut LDAP nazwy użytkownika

    [sAMAccountName, cn]

    Główny atrybut (User Name Attribute) w konfiguracji konektora

    Atrybut RDN LDAP

    [sAMAccountName, cn]

    Główny atrybut (User Name Attribute) w konfiguracji konektora

    Atrybut LDAP UUID

    [objectGUID]

    Unikalny atrybut użytkownika (User Unique Attribute) w konfiguracji konektora

    Klasy obiektów użytkownika

    [person, organizationalPerson,user]

    Klasy obiektu (User Object Classes) w konfiguracji konektora

    Filtr LDAP użytkownika

    -

    Filtr do szukania użytkowników (User Object Filter)

    Importuj użytkowników

    ON

    -

    Synchronizuj rejestracje

    OFF

    -

    Okresowa pełna synchronizacja

    ON

    -

    6.2.4.      Testujemy połączenie przyciskami kolejno „Testuj połączenie” oraz „Testowanie autentykacji”, jeśli oba testy zakończą się powodzeniem klikamy „Zapisz” na dole strony

    6.2.5.      Następnie wchodzimy w zapisanego właśnie dostawcę i wykonujemy pierwszą synchronizację, klikając w prawym górnym rogu listę rozwijaną „Akcja” i wybierając pozycję „Synchronizuj wszystkich użytkowników”

    6.2.6.      Po poprawnej synchronizacji sprawdzamy czy użytkownicy zostali poprawnie zsynchronizowani potwierdzając obecność wpisów w zakładce „Użytkownicy” w menu po lewej stronie i wpisując * (słownie: gwiazdka) w pole wyszukiwania i klikamy enter. Pola adresów e-mail będą miały obok siebie czerwony znaczek, jest to pożądane zachowanie.

    6.2.6.1.      Konfiguracja mapera grup w keycloak. Logujemy się do PASK i przechodzimy do„Konta użytkowników” ( otworzy się nowa karta )

    6.2.6.2.      Przechodzimy w menu po lewej stronie do zakładki „Federacja użytkowników” -> klikamy w federację którą wcześniej utworzyliśmy -> „Mapery” w zakładkach u góry -> „Dodaj mapowanie”

    6.2.6.3.      Uzupełniamy według tabelki poniżej, pola nie zawarte w tabelce pozostawiamy bez zmian

    NAZWA POLA W KEYCLOAK

    PRZYKŁADOWA WARTOŚĆ

    ŹRÓDŁO DANYCH

    Nazwa

    Według uznania

    -

    Typ mapowania

    group-ldap-mapper

    -

    LDAP Groups DN

    -

    ścieżka do OU w którym znajdują się grupy do zmapowania do PASK, dodatkowo można uzupełnić szczegółowe wyszukiwanie filtrem dla atrybutów

    Group Name LDAP Attribute

    cn

    -

    Group Object Classes

    group

    Grupy -> Klasy obiektu  (Group Object Classes)  w konfiguracji konektora 

    Preserve Group Inheritance

    OFF

    -

    Ignore Missing Groups

    OFF

    -

    Membership LDAP Attribute

    member

    Grupy -> Atrybut członków grupy (Group Membership Attribute)  w konfiguracji konektora 

    Membership Attribute Type

    DN

    -

    Membership User LDAP Attribute

    Pole ma być puste

    -

    Mode

    READ_ONLY

    -

    User Groups Retrieve Strategy

    LOAD_GROUPS_BY_MEMEBER_ATTRIBUTE 

    -

    Drop non-existing groups during sync

    OFF

    -

    6.2.6.4.    Po wypełnieniu i zapisaniu formularza należy w prawym górnym rogu kliknąć w listę rozwijaną „Akcja” i wybrać pozycję „Synchronizuj grupy LDAP z Keycloak”
    UWAGA! Kliknięcie innego przycisku może spowodować nadpisanie pustych grup do aktualnego AD

    6.2.6.5.    Po zmapowaniu grup należy sprawdzić poprawność mapowania. W tym celu przechodzimy w menu po lewej stronie do zakładki „Grupy”. Jeśli grupy w AD mają inne nazwy niż te które już znajdują się w keycloak, należy do odpowiednich grup przypisać mapowania oryginalnych. Na przykład w keycloak grupa "PASK ADMIN" posiada role administracyjne a jej odpowiednikiem zmapowanym z AD jest grupa o nazwie "Administrators PASK" to po zmapowaniu grupy z AD należy skopiować uprawnienia z grupy "PASK ADMIN" do grupy "Administrators PASK"

    6.3.  Konfiguracja keycloak, OpenLDAP Konfiguracja federacji

    6.3.1.      Logujemy się do PASK danymi lokalnego administratora, rozwijamy menu w prawym górnym rogu klikając na okrągłą ikonkę postaci -> „Konta użytkowników” ( otworzy się nowa karta )

    6.3.2.      Przechodzimy w menu po lewej stronie do zakładki „Federacja użytkowników” -> „Dodaj dostawcę” ( kafelek po prawej stronie UWAGA! Oba kafelki mają te same nazwy )

    6.3.3.      Uzupełniamy według tabelki poniżej, pola nie zawarte w tabelce pozostawiamy bez zmian
    UWAGA pola „Atrybut LDAP nazwy użytkownika”  oraz „Atrybut RDN LDAP”  są domyślnie uzupełnione wartościami, niestety w wyniku błędu w WebGUI należy usunąć te wartości i jeszcze raz ręcznie wpisać aby zostały poprawnie zapisane

    UWAGA 2 jeśli OU w polu „DN użytkowników” jest dokładnie tam gdzie są użytkownicy nie musimy robić nic. Jeśli natomiast OU jest w drzewie AD wyżej niż znajduje się OU z użytkownikami należy edytować opcje Zakres wyszukiwania ( kilka pozycji niżej) na „poddrzewo” aby pozwolić keycloakowi wyszukiwać rekurencyjnie danych

    UWAGA 3  jeśli OU jest zapięte bardzo wysoko istnieje ryzyko wyszukania i zmapowania przez keycloak danych w innych poddrzewach których nie chcielibyśmy zmapować. Dodatkowo wysokie zapięcie OU ma wpływ na wydajność rozwiązania z racji potrzeby przeszukiwania większej ilości danych za każdym razem

    NAZWA POLA W KEYCLOAK

    PRZYKŁADOWA WARTOŚĆ

    ŹRÓDŁO DANYCH

    Dostawca

    Other

    -

    Adres URL połączenia

    -

    URL w edycji konektora

    Bind DN

    -

    Użytkownik w edycji konektora

    Poświadczenia wiązania 

    -

    Hasło użytkownika w AD

    Tryb edycji

    UNSYNCED

    -

    DN użytkowników 

    -

    Podstawowe OU w edycji konektora

    Atrybut LDAP nazwy użytkownika

    [cn, uid]

    Główny atrybut (User Name Attribute) w konfiguracji konektora

    Atrybut RDN LDAP

    [cn, uid]

    Główny atrybut (User Name Attribute) w konfiguracji konektora

    Atrybut LDAP UUID

    [entryUUID, uidNumber]

    Unikalny atrybut użytkownika (User Unique Attribute) w konfiguracji konektora

    Klasy obiektów użytkownika

    [posixAccount, inetOrgPerson]

    Klasy obiektu (User Object Classes) w konfiguracji konektora

    Filtr LDAP użytkownika

    -

    Filtr do szukania użytkowników (User Object Filter)

    Importuj użytkowników

    ON

    -

    Synchronizuj rejestracje

    OFF

    -

    Okresowa pełna synchronizacja

    ON

    -

    6.3.4.      Testujemy połączenie przyciskami kolejno „Testuj połączenie” oraz „Testowanie autentykacji”, jeśli oba testy zakończą się powodzeniem klikamy „Zapisz” na dole strony

    6.3.5.      W przypadku synchronizacji z naszego rozwiązania LDAP ( dołączonego do PASK ) należy dodatkowo wejść w zakładkę "mappery" -> "first name" i podmienić "LDAP Attribute" na wartość "givenName"

    6.3.6.      Następnie wchodzimy w zapisanego właśnie dostawcę i wykonujemy pierwszą synchronizację, klikając w prawym górnym rogu listę rozwijaną „Akcja” i wybierając pozycję „Synchronizuj wszystkich użytkowników”

    6.3.7.      Po poprawnej synchronizacji sprawdzamy czy użytkownicy zostali poprawnie zsynchronizowani potwierdzając obecność wpisów w zakładce „Użytkownicy” w menu po lewej stronie i wpisując * (słownie: gwiazdka) w pole wyszukiwania i klikamy enter. Pola adresów e-mail będą miały obok siebie czerwony znaczek, jest to pożądane zachowanie.

    6.4.  Konfiguracja keycloak, OpenLDAP Mapowanie poprzez grupy AD

    6.4.1.      Logujemy się do PASK danymi lokalnego administratora, rozwijamy menu w prawym górnym rogu klikając na okrągłą ikonkę postaci -> „Konta użytkowników” ( otworzy się nowa karta )

    6.4.2.      Przechodzimy w menu po lewej stronie do zakładki „Federacja użytkowników” -> „Dodaj dostawcę” ( kafelek po prawej stronie UWAGA! Oba kafelki mają te same nazwy )

    6.4.3.      Uzupełniamy według tabelki poniżej, pola nie zawarte w tabelce pozostawiamy bez zmian
    UWAGA pola „Atrybut LDAP nazwy użytkownika”  oraz „Atrybut RDN LDAP”  są domyślnie uzupełnione wartościami, niestety w wyniku błędu w WebGUI należy usunąć te wartości i jeszcze raz ręcznie wpisać aby zostały poprawnie zapisane

    UWAGA 2 jeśli OU w polu „DN użytkowników” jest dokładnie tam gdzie są użytkownicy nie musimy robić nic. Jeśli natomiast OU jest w drzewie AD wyżej niż znajduje się OU z użytkownikami należy edytować opcje Zakres wyszukiwania ( kilka pozycji niżej) na „poddrzewo” aby pozwolić keycloakowi wyszukiwać rekurencyjnie danych

    UWAGA 3  jeśli OU jest zapięte bardzo wysoko istnieje ryzyko wyszukania i zmapowania przez keycloak danych w innych poddrzewach których nie chcielibyśmy zmapować. Dodatkowo wysokie zapięcie OU ma wpływ na wydajność rozwiązania z racji potrzeby przeszukiwania większej ilości danych za każdym razem

    NAZWA POLA W KEYCLOAK

    PRZYKŁADOWA WARTOŚĆ

    ŹRÓDŁO DANYCH

    Dostawca

    Other

    -

    Adres URL połączenia

    -

    URL w edycji konektora

    Bind DN

    -

    Użytkownik w edycji konektora

    Poświadczenia wiązania 

    -

    Hasło użytkownika w AD

    Tryb edycji

    UNSYNCED

    -

    DN użytkowników 

    -

    Podstawowe OU w edycji konektora

    Atrybut LDAP nazwy użytkownika

    [cn, uid]

    Główny atrybut (User Name Attribute) w konfiguracji konektora

    Atrybut RDN LDAP

    [cn, uid]

    Główny atrybut (User Name Attribute) w konfiguracji konektora

    Atrybut LDAP UUID

    [entryUUID, uidNumber]

    Unikalny atrybut użytkownika (User Unique Attribute) w konfiguracji konektora

    Klasy obiektów użytkownika

    [posixAccount, inetOrgPerson]

    Klasy obiektu (User Object Classes) w konfiguracji konektora

    Filtr LDAP użytkownika

    -

    Filtr do szukania użytkowników (User Object Filter)

    Importuj użytkowników

    ON

    -

    Synchronizuj rejestracje

    OFF

    -

    Okresowa pełna synchronizacja

    ON

    -

    6.4.4.      Testujemy połączenie przyciskami kolejno „Testuj połączenie” oraz „Testowanie autentykacji”, jeśli oba testy zakończą się powodzeniem klikamy „Zapisz” na dole strony

    6.4.5.      W przypadku synchronizacji z naszego rozwiązania LDAP ( dołączonego do PASK ) należy dodatkowo wejść w zakładkę "mappery" -> "first name" i podmienić "LDAP Attribute" na wartość "givenName"

    6.4.6.      Następnie wchodzimy w zapisanego właśnie dostawcę i wykonujemy pierwszą synchronizację, klikając w prawym górnym rogu listę rozwijaną „Akcja” i wybierając pozycję „Synchronizuj wszystkich użytkowników”

    6.4.7.      Po poprawnej synchronizacji sprawdzamy czy użytkownicy zostali poprawnie zsynchronizowani potwierdzając obecność wpisów w zakładce „Użytkownicy” w menu po lewej stronie i wpisując * (słownie: gwiazdka) w pole wyszukiwania i klikamy enter. Pola adresów e-mail będą miały obok siebie czerwony znaczek, jest to pożądane zachowanie.

    6.4.7.1.    Konfiguracja mapera grup w keycloak. Logujemy się do PASK i przechodzimy do „Konta użytkowników” ( otworzy się nowa karta )

    6.4.7.2.    Przechodzimy w menu po lewej stronie do zakładki „Federacja użytkowników” -> klikamy w federację którą wcześniej utworzyliśmy -> „Mapery” w zakładkach u góry -> „Dodaj mapowanie”

    6.4.7.3.    Uzupełniamy według tabelki poniżej, pola nie zawarte w tabelce pozostawiamy bez zmian

    NAZWA POLA W KEYCLOAK

    PRZYKŁADOWA WARTOŚĆ

    ŹRÓDŁO DANYCH

    Nazwa

    Według uznania

    -

    Typ mapowania

    group-ldap-mapper

    -

    LDAP Groups DN

    -

    ścieżka do OU w którym znajdują się grupy do zmapowania do PASK, dodatkowo można uzupełnić szczegółowe wyszukiwanie filtrem dla atrybutów

    Group Name LDAP Attribute

    cn

    -

    Group Object Classes

    [posixGroup,  groupOfNames]

    Grupy -> Klasy obiektu  (Group Object Classes)  w konfiguracji konektora 

    Preserve Group Inheritance

    OFF

    -

    Ignore Missing Groups

    OFF

    -

    Membership LDAP Attribute

    memberUid

    Grupy -> Atrybut członków grupy (Group Membership Attribute)  w konfiguracji konektora 

    Membership Attribute Type

    UID

    -

    Membership User LDAP Attribute

    [cn, uid]

    -

    Mode

    READ_ONLY

    -

    User Groups Retrieve Strategy

    LOAD_GROUPS_BY_MEMEBER_ATTRIBUTE 

    -

    Drop non-existing groups during sync

    OFF

    -

    6.4.7.4.     Po wypełnieniu i zapisaniu formularza należy w prawym górnym rogu kliknąć w listę rozwijaną „Akcja” i wybrać pozycję „Synchronizuj grupy LDAP z Keycloak”
    UWAGA! Kliknięcie innego przycisku może spowodować nadpisanie pustych grup do aktualnego AD

    6.4.7.5.     Po zmapowaniu grup należy sprawdzić poprawność mapowania. W tym celu przechodzimy w menu po lewej stronie do zakładki „Grupy”. Jeśli grupy w AD mają inne nazwy niż te które już znajdują się w keycloak, należy do odpowiednich grup przypisać mapowania oryginalnych. Na przykład w keycloak grupa "PASK ADMIN" posiada role administracyjne a jej odpowiednikiem zmapowanym z AD jest grupa o nazwie "Administrators PASK" to po zmapowaniu grupy z AD należy skopiować uprawnienia z grupy "PASK ADMIN" do grupy "Administrators PASK"