Upgrade IAM appliance na verzi 0.6

IAM appliance ve verzi 0.6 přináší tři nové služby: adresářový server LDAP, access manager a konektor server. Z důvodu větších změn je nutné projít specifikým upgrade postupem (viz. níže).

  • Adresářový server LDAP

    • Komponenta je povinnou součástí appliance a musí vždy běžet. V případě že nefunguje, nemohou se do služeb appliance autentizovat uživatelé (a to ani administrátoři).

    • Komponenta vystavuje své rozhraní na portu 636/tcp a je možné ji použít jako datový zdroj pro jiné prvky infrastruktury (např. RADIUS server, Linuxové OS, apod.)

  • Access manager

    • Komponenta je povinnou součástí appliance a musí vždy běžet. V případě že nefunguje, nemohou se do služeb appliance autentizovat uživatelé (a to ani administrátoři).

    • Access manager je dostupný na HTTPS rozhraní appliance, za fragmentem /cas/.

    • Access manager lze použít pro centralizaci autentizace do dalších aplikací infrastruktury.

  • Konektor server

    • Nepovinná komponenta; není ve výchozím stavu instalována.

    • Samostatný kontejner pro identity konektory, tato služba podporuje nasazení WinRM+AD identity konektoru.

Tato verze IAM appliance přechází na autentizaci pomocí služby access manageru, přihlašování do CzechIdM nebude nadále řešeno prostředky aplikace CzechIdM.

Všem uživatelům, kteří již do aplikace přistupují, je nutno nastavit a distribuovat nové heslo.

Prerekvizity

Prerekvizity pro upgrade.

Síťové prostupy

Appliance komunikuje do internetu se serverem repo.iamappliance.com na portech 443/tcp a 8443/tcp. Tato komunikace musí být funkční.

Ověření funkční komunikace pomocí nástroje tcptraceroute
[root@localhost ~]# tcptraceroute repo.iamappliance.com 443
traceroute to repo.iamappliance.com (87.236.196.108), 30 hops max, 60 byte packets
... zkráceno ....
 7  neon.bcvsolutions.eu (87.236.196.108) <syn,ack>  2.728 ms  3.013 ms  2.160 ms

[root@localhost ~]# tcptraceroute repo.iamappliance.com 8443
traceroute to repo.iamappliance.com (87.236.196.108), 30 hops max, 60 byte packets
... zkráceno ...
 7  neon.bcvsolutions.eu (87.236.196.108) <syn,ack>  1.995 ms  2.427 ms  2.235 ms

Připojení Docker repozitářů

Zkontrolujte, že máte funkční napojení Docker repozitáře umístěného na serveru repo.iamappliance.com:8443. Stáhněte jakýkoliv image, např. busybox:latest image. Po úspěšném stažení lze image ihned smazat.

Stažení malého image pro ověření funkčnosti
[root@localhost ~]# docker pull repo.iamappliance.com:8443/busybox
Using default tag: latest
latest: Pulling from busybox
9ea23c65b705: Pull complete
Digest: sha256:540f2e917216c5cfdf047b246d6b5883932f13d7b77227f09e03d42021e98941
Status: Downloaded newer image for repo.iamappliance.com:8443/busybox:latest
repo.iamappliance.com:8443/busybox:latest
Smazání staženého image
[root@localhost ~]# docker rmi repo.iamappliance.com:8443/busybox:latest
Untagged: repo.iamappliance.com:8443/busybox:latest
Untagged: repo.iamappliance.com:8443/busybox@sha256:540f2e917216c5cfdf047b246d6b5883932f13d7b77227f09e03d42021e98941
Deleted: sha256:2b8fd9751c4c0f5dd266fcae00707e67a2545ef34f9a29354585f93dac906749
Deleted: sha256:8ac8bfaff55af948c796026ee867448c5b5b5d9dd3549f4006d9759b25d4a893

Povýšení konfigurace softwarových repozitářů

Ověřte, že definice RPM repozitářů ve vaší appliance jsou alespoň ve verzi 0.3. Pokud ne, proveďte jejich update dle tohoto postupu.

Zjištění verze balíčku iam-appliance-repos
[root@localhost ~]# rpm -qi iam-appliance-repos
Name        : iam-appliance-repos
Version     : 0.1
Release     : 1.el8
Architecture: noarch
... zkráceno ...

Ověření hostname a HTTPS certifikátu appliance

Od této verze používají služby appliance k autentizaci užvatelů centrální access manager. S ním komunikují přes HTTPS na doménovém jménu, pod kterým je appliance vystavena uživatelům.

  • Doménové jméno appliance musí být vystaveno v DNS.

  • Appliance musí být schopna v DNS resolvovat své doménové jméno na IP adresu.

  • Doménové jméno v HTTPS certifikátu musí odpovídat DNS názvu, aby bylo možné ustavit důvěryhodnou komunikaci po HTTPS.

Ping DNS jména IAM appliance (správný stav)
[root@localhost ~]# ping -c1 moje-appliance.bcv
PING appliance (172.31.255.123) 56(84) bytes of data.
64 bytes from appliance (172.31.255.123): icmp_seq=1 ttl=64 time=0.141 ms

--- appliance ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.141/0.141/0.141/0.000 ms
Ping DNS jména IAM appliance (chybný stav)
[root@localhost ~]# ping -c1 doesnotexist.tld
ping: doesnotexist.tld: Name or service not known
Výpis HTTPS certifikátu pro ověření CN a subjectAltName
[root@localhost ~]# openssl x509 -in /data/volumes/web-proxy/secrets/current_web_cert.crt -text -noout
Certificate:
    Data:
... zkráceno ...
        Subject: CN = moje-appliance.bcv
... zkráceno ...
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS:moje-appliance.bcv

Upgrade

Vypnutí appliance

Appliance vypněte běžným způsobem, například zadáním příkazu poweroff na konzoli, nebo přes ACPI shutdown.

Vytvoření snapshotu

Vytvořte snapshot vypnutého virtuálního serveru.

Spuštění appliance

Spusťte appliance standardním způsobem. Po nastartování zkontrolujte, že všechny služby běží.

Zastavení služeb

Zastavte všechny služby appliance.

Zastavení služeb včetně kontejnerizace
[root@localhost ~]# systemctl stop czechidm
[root@localhost ~]# systemctl stop czechidm-db web-proxy
[root@localhost ~]# systemctl stop docker

Upgrade RPM balíčků

Aktualizujte softwarové balíčky náležející do IAM appliance.

Aktualizace balíčků IAM appliance
[root@localhost ~]# dnf update iam-*

Vyřešte konfigurační konflikty stejně jako při běžných aktualizacích. Dejte pozor na to, že se v nových verzích software mohou objevit nové konfigurační položky; není tedy možné paušálně ponechat původní verze konfigurací.

Rekonfigurace prostředí

Kvůli začlenění nových aplikací je nutné provést dodatečnou konfiguraci.

Konfigurace firewallu

Pokud se v průběhu instalace objevilo hlášení NOTICE: Firewall rules were updated. This change requires restart of the firewall and Docker., je potřeba restartovat firewall appliance, aby se projevily změny v jeho konfiguraci.

Restart firewallu by neměl (ale může, zvláště v případě konfigurační chyby) způsobit nedostupnost SSH. Mějte pro jistotu zajištěn přístup na lokální konzoli serveru.

Stav před restartem firewallu
[root@localhost ~]# iptables -nL INPUT | grep 443
(žádný výpis)
Restart firewallu
[root@localhost ~]# systemctl restart iptables
Stav po restartu firewallu
[root@localhost ~]# iptables -nL INPUT | grep 443
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:443

Konfigurace access manageru

Editujte soubor /data/registry/node-active-config/docker-compose-cas.yml (např. editorem nano nebo vim) a nastavte parametr CAS_SERVER_NAME. Nová hodnota parametru zohledňuje protokol a hostname, kde appliance běží z pohledu uživatelů. Hodnota nesmí končit lomítkem.

Nastavení CAS_SERVER_NAME
      - CAS_SERVER_NAME=https://moje-appliance.bcv

Editujte soubor /data/volumes-shared/cas-services/idm-200.json a přidejte do něj parametr redirectUrl s hodnotou https://HOSTNAME/idm/#/login, kde HOSTNAME je doménové jméno, na kterém je appliance přístupná.

Soubor má formát JSON a musí být syntakticky správně. Klíče i hodnoty uzavřete do uvozovek ". Povšimněte si přidané čárky , na konci řádku, který předchází přidávanému řádku.

Výsledný idm-200.json pro hostname moje-appliance.bcv
{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "https://.+/idm.+",
  "name" : "CzechIdM",
  "id" : 200,
  "evaluationOrder" : 1,
  "redirectUrl": "https://moje-appliance.bcv/idm/#/login"
}

Konfigurace CzechIdM

Editujte soubor /data/registry/node-active-config/docker-compose-czechidm.yml (např. editorem nano nebo vim) a nastavte následující parametry. Nové hodnoty parametrů zohledňují protokol a hostname, kde appliance běží z pohledu uživatelů. Hodnoty je nutno v tomto smyslu doplnit, zpravidla půjde jen o nahrazení http za https v nastavení protokolu a nahrazení localhost za DNS název appliance.

Tato nastavení jsou velmi náchylná na překlepy a přebývající nebo chybějící znaky. Věnujte proto zvýšenou pozornost syntaxi. Slovem HOSTNAME je vždy myšleno doménové jméno, pod kterým je appliance přístupná uživatelům.

  • CZECHIDM_CAS_URL - Aby CzechIdM vědělo, kde běží access manager.

  • CZECHIDM_CAS_IDM_URL - Identifikace, kterou CzechIdM předává access manageru.

  • CZECHIDM_CAS_HEADER_PREFIX - Prefix session tiketů, které access manager vydává.

Příklad nastavení parametrů pro DNS jméno moje-appliance.bcv
      - CZECHIDM_CAS_URL=https://moje-appliance.bcv/cas/
      - CZECHIDM_CAS_IDM_URL=https://moje-appliance.bcv/idm/
      - CZECHIDM_CAS_HEADER_PREFIX=https://moje-appliance.bcv/idm/?ticket=

Import certifikátu IAM appliance do důvěryhodných certifikátů

Protože komponenty appliance jsou samostatně kontejnerizované celky, je nutné zajistit, aby navzájem důvěřovaly svým SSL certifikátům. Naimportujte proto certifikát webové proxy (resp. kořenový certifikát z jeho řetězu důvěry) mezi důvěryhodné.

Pokud již máte kořenový certifikát mezi důvěryhodnými importován, můžete tento krok přeskočit.
Kopie certificate chainu mezi důvěryhodné
[root@localhost ~]# cp /data/volumes/web-proxy/secrets/current_web_cert.crt /data/volumes-shared/cacerts/

Následně soubor editujte a ponechte zde pouze kořenový certifikát.

Editace souboru s chainem
[root@localhost ~]# nano /data/volumes-shared/cacerts/current_web_cert.crt

Kontrolovaný start služeb

Nastartujte kontejnerovou platformu. Použijte příkaz restart místo příkazu start.

Start služby Docker
[root@localhost ~]# systemctl restart docker

V rámci aktualizací mohou konfigurace služeb odkazovat na nové Docker image - ty systém musí v tuto chvíli stáhnout. Protože není možné předem říci, jak dlouho bude stahování Docker image trvat, mohlo by dojít k předběhnutí startu jednotlivých služeb. Proto provedeme jejich kontrolovaný start.

Povšimněte si, že startujeme i nové služby - iam-directory-server a iam-cas.
Kontrolovaný start nezávislých služeb
[root@localhost ~]# systemctl start czechidm-db web-proxy iam-directory-server

Pokud dochází ke stažení nového Docker image, objeví se v logu /var/log/messages záznam podobný následujícímu.

Systém stahuje kontejnerový image
Jan 28 09:42:32 localhost docker-compose[5967]: 12-r1: Pulling from bcv-postgres

Po stažení image dojde k automatickému vytvoření kontejneru a startu služby. To, že služba nastartovala korektně, ověřte v jejím logu v adresářích /data/logs/NÁZEVSLUŽBY/NÁZEVSLUŽBY.log.

Spuštění zbývajících služeb
[root@localhost ~]# systemctl start czechidm iam-cas

Úspěšný start služeb opět ověřte v jejích logách.

Služba czechidm bude startovat poměrně dlouho, protože bude probíhat relink aplikace CzechIdM. Při této operaci je nutný přístup na repozitáře repo.iamappliance.com, jinak relink selže. Celá operace může, v závislosti na výkonu virtuálního serveru, trvat i déle než deset minut.

Aktivace autostartu nových služeb

Pro nové služby je nutné aktivovat automatický start po startu operačního systému.

Povolení autostartu nových služeb
[root@localhost ~]# systemctl enable iam-directory-server iam-cas

Aktivace zálohování

Služba adresářového serveru má svou vlastní databázi, kterou je nutné pravidelně zalohovat. Povolte a spusťte naplánovanou úlohu.

Aktivace zálohování adresářového serveru
[root@appliance ~]# systemctl start iam-directory-server-backup.timer
[root@appliance ~]# systemctl enable iam-directory-server-backup.timer

Kontrola funkčnosti a zabezpečení

Přistupte na web appliance tak, jak jste zvyklí. Pokud jste byli předtím přihlášeni do CzechIdM a budete vpuštěni rovnou do agendy, odhlašte se.

Budete přesměrováni na login dialog, který je jiný než doposud. Tento stav je žádoucí, jde o login dialog access manageru. Zde se přihlaste jako uživatel admin s heslem admin, aplikace vás autentizuje a předá zpět do CzechIdM.

Zabezpečte aplikaci změnou administrátorského hesla!

Přechodem na autentizaci pomocí access manageru došlo k resetu hesla uživatele admin. V CzechIdM mu proto nastavte nové, odhlašte se, a ověřte že se novým heslem dokážete přihlásit.

Uživatelům je v tomto kroku vygenerováno nové heslo a je uloženo do adresářového serveru appliance. Do služeb appliance se tedy nebudou moci přihlásit. Výjimkou je, pokud jsou uživatelé autentizováni proti externí databázi (např. AD, AD pomocí Kerberos, apod.).

Pokud je autentizace do CzechIdM pomocí access manageru funkční, upgrade proběhl v pořádku. Doporučujeme provést restart celého serveru a ověřit, že všechny služby byly korektně spuštěny.

Post-upgrade kroky

V rámci prací prováděných po upgrade je vhodné pořídit nový snapshot vypnutého serveru. Původní snapshot, pořízený před upgradem, doporučujeme uchovat alespoň jeden týden.