Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
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 ==== | + | |
- | + | ||
- | * DNS: není 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>. | + | |