cs:tech:idp:online-migration

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
Následující verze Obě strany příští revize
cs:tech:idp:online-migration [2018/02/22 18:18]
jop@cesnet.cz [Migrace Shibboleth IdP]
cs:tech:idp:online-migration [2019/12/13 11:02]
jan.oppolzer@cesnet.cz
Řádek 1: Řádek 1:
-====== Online migrace Shibboleth IdP ====== +~~REDIRECT>​cs:tech:​idp:​shibboleth:​migration~~
- +
-===== Úvod ===== +
- +
-Tento dokument popisuje, jak //​bezvýpadkově//​ přemigrovat Shibboleth IdP z jednoho serveru na jiný, aniž by si toho uživatelé všimli. Zároveň není potřeba žádné spolupráce s operátorem federace, protože nedochází ke změně metadat. Využijete toho např. v situaci, kdy chcete migrovat ze starší verze operačního systému na novější. Na CESNETu jsme takto migrovali z Debianu verze 8 //"​Jessie"//​ na Debian verze 9 //"​Stretch"//​. +
- +
-===== Předpoklady ===== +
- +
-Pro lepší orientaci v textu zavedeme následující konvenci. +
- +
-==== Stávající server ==== +
- +
-  * DNS''​%%idp.example.org%%''​ +
-  * IPv4''​%%192.0.2.10%%''​ +
-  * IPv6: ''​%%2001:​db8::​10%%''​ +
-  * Název serveru (hostname): ''​%%idp.example.org%%''​ +
-  * entityID''​%%https://​idp.example.org/​idp/​shibboleth%%''​ +
- +
-==== Nový server ==== +
- +
-  * DNSnení třeba, pro instalaci stačí přístup přes IP adresu +
-  * IPv4: ''​%%192.0.2.20%%''​ +
-  * IPv6: ''​%%2001:​db8::​20%%''​ +
-  * Název serveru (hostname): ''​%%idp.example.org%%''​ +
-  * entityID: ''​%%https://​idp.example.org/​idp/​shibboleth%%''​ +
- +
-===== Postup ===== +
- +
-Nainstalujeme a nakonfigurujeme nový server jako kdyby se jednalo o stávající server ''​%%idp.example.org%%''​. +
- +
-Při konfiguraci Shibboleth IdP na novém serveru použijeme //​entityID//​ stávajícího serveru, tedy ''​%%https://​idp.example.org/​idp/​shibboleth%%'',​ použijeme také stávající "​ceritifikáty"​ (ve skutečnosti páry veřejných a odpovídajících soukromých klíčů) ''​%%idp-encryption.{crt,​key}%%''​ a ''​%%idp-signing.{crt,​key}%%'',​ které se standardně nachází v adresáři ''​%%/​opt/​shibboleth-idp/​credentials/​%%''​. S největší pravděpodobností můžeme zapomenout na "​certifikáty"​ takzvaného backchannelu,​ tedy ''​%%backchannel.{crt,​p12}%%'',​ jelikož ho v dnešní době již téměř nikdo nepoužívá. +
- +
-Samozřejmostí je identická konfigurace např. atributů (''​%%attribute-resolver.xml%%''​),​ ale i pravidel jejich uvolňování (''​%%attribute-filter.xml%%''​) a tak dále. Nezapomeneme ani na přenos databáze s persistentními identifikátory a samozřejmě použít stejnou sůl. +
- +
-===== Otestování ===== +
- +
-Nyní si vše otestujeme pomocí jednoduchého triku. V konfiguračním souboru ''​%%/​etc/​hosts%%''​ (Linux, BSD, macOS) //na naší pracovní stanici// si upravíme DNS následujícím způsobem:​ +
- +
-<​code>​ +
-192.0.2.20 ​   idp.example.org +
-2001:​db8::​20 ​ idp.example.org +
-</​code>​ +
-Tím jsme docílili toho, že při zadání adresy ''​%%https://​idp.example.org%%''​ do webového prohlížeče budeme ve skutečnosti komunikovat s novým serverem, kterému jsme v DNS zatím nedali žádné jméno. Jelikož tento server zná privátní klíče k veřejným klíčům uvedených v metadatech federace, bude vystupovat v rámci federace jako stávající server ''​%%idp.example.org%%''​. +
- +
-Tento trik funguje, protože již není potřeba používat "​backchannel"​ a veškerá komunikace (přihlášení,​ atributy, ...) funguje pomocí cookies webového prohlížeče. +
- +
-Můžeme se tedy přihlásit na libovolnou službu ve federaci a otestovat, zda služba funguje správně i s nově nakonfigurovaným IdP. +
- +
-===== Přepnutí ===== +
- +
-Po úspěšném otestování můžeme přistoupit k samotnému přepnutí. To provedeme ve třech krocích pomocí změn DNS záznamů:​ +
- +
-  - Snížíme TTL hodnoty u DNS záznamů A (IPv4) i AAAA (IPv6) pro ''​%%idp.example.org%%''​ na co nejnižší hodnotu, která je možná, abychom dokázali přepnout uživatele co nejrychleji po vypršení platnosti nakešovaných DNS záznamů. Nyní vyčkáme, až se staré nakešované DNS záznamy nahradí novými záznamy. +
-  - Necháme starý server v DNS přejmenovat z ''​%%idp.example.org%%''​ na ''​%%idp-old.example.org%%''​ a nový server následně pojmenujeme jako ''​%%idp.example.org%%''​. TTL ponecháme na snížených hodnotách, abychom se v případě potřeby mohli změnou DNS záznamů vrátit zpět a používat i nadále IdP na původním serveru. Ten, kdo má stále nakešované staré DNS záznamy, se připojí na staré IdP, přihlásí se a vše funguje. Ten, kdo má již nové DNS záznamy, se připojí na nové IdP, přihlásí se a také vše funguje. +
-  - Nyní již jen necháme zvýšit hodnoty TTL na standardní úroveň a migrace je hotova. Starý server (včetně DNS záznamu ''​%%idp-old.example.org%%''​ a alokované IP adresy) můžeme zrušit. Samozřejmostí je také odebrání záznamů z ''​%%/​etc/​hosts%%''​ pro doménu ''​%%idp.example.org%%''​. +
- +
-===== Kontakt ===== +
- +
-V případě jakýchkoliv nejasností,​ dotazů či tipů, pište na e-mail <​info@eduid.cz>​.+