cs:archive:monitoring

Monitoring eduID.cz

Úvod

Zkušenosti se zaváděním a provozem eduroamu před několika lety vedly ke vzniku end-to-end monitoringu eduroam infrastruktury. Federace eduID.cz je z pohledu zajištění funčnosti služeb pro uživatele podobná. Identity provideři (IdP) poskytují ověření identity a service provideři (SP) poskytují služby. Aby z toho uživatel měl užitek, je nutné, aby se tyto dvě komponenty mezi sebou dokázaly dohodnout. V této úrovni jsou eduroam a eduID.cz velmi podobné služby.

Rozdíly vychází z toho, že eduID.cz poskytuje webové služby a uživatel nepotřebuje žádný speciální software (suplikant u eduroamu). Uživatel si vystačí s běžným prohlížečem, což ale představuje komplikaci pro end-to-end monitoring. Testovací sonda musí dělat totéž co uživatel, do značné míry musí implementovat prohlížeč. S mírnou nadsázkou lze říci, že sonda musí implementovat i uživatele - musí být schopna poznat, že obsah, který získala od SP, je skutečně to, co očekává uživatel. To je dále komplikováno variabilitou jednotlivých služeb. Navíc je možné uživatele klasifikovat podle řady různých kritérií a službu poskytovat jen některým skupinám uživatelů.

U komplexních služeb pracujících s klasifikací uživatelů je velmi obtížné vyhodnotit, zda služba opravdu funguje. V některých případech ona správná funkce může i znamenat „konzumaci“ zpoplatněného obsahu. Monitoring eduID.cz si v současnosti klade za cíl zajistit dostupnost služeb na základní úrovni. Snažíme se zajistit, aby všechny komponenty federace byly funkční a schopné mezi sebou komunikovat - u komplexnejších služeb to znamená, že se sonda spokojí s informací, že testovací účet nemá ke službě přístup.

Monitoring SAML federací je aktuální téma a pracovní skupina REFEDs udržuje stránku s informacemi o stavu federativního monitoringu v Evropě.

AAIEye a eduID.cz

AAIEye je software vyvíjený finskou NREN a je využíván v ostatních severských zemích. Právě skutečnost, že se jedná o živý projekt, který je nadále vyvíjen a že testuje kompletní řetězec ověřování SP → DS/WAYF → IdP → SP, byla velice slibná.

Při nasazení, o které jsme se pokusili v roce 2010, jsme ale zjistili, že AAIEye postrádá funkce, které jsou pro nasazení v eduID.cz nezbytné.

AAIEye má několik omezení, která v severských federacích nevadí, protože tamní federace jsou postaveny jinak. V eduID.cz jsme narazili na následující problémy:

  • AAIEye počítá s použitím centrálního WAYF. V eduID.cz jsou služby, které implementují vlastní DS, např. protože poskytují služby jen uživatelům z některých organizací.
  • AAIEye potřebuje, aby stránky DS používaly stejně pojmenované input boxy a aby hodnoty byly všude stejné. To je opět problém u upravených DS u speciálních SP.

Při pokusném nasazení AAIEye jsme zjistili, že nejsme schopni testovat více než dvě třetiny SP zapojených v eduID.cz kvůli tomu, že se drobně liší.

Zvážili jsme úpravy AAIEye pro eduID.cz, ale nakonec jsme se rozhodli implementovat řešení vlastní a z AAIEye pouze čerpat inspiraci. Jeden z důvodů byly nedostatečné zkušenosti s programováním v Javě. Hlavním důvodem pak byla architektura AAIEye, které kromě samotné testovací sondy implementuje i plánovač testů. Tuto funkcionalitu výborně řeší Nagios, který je v instalaci AAIEye stejně použit, ale pouze pro účely notifikace správců služeb. Rozhodli jsme se tedy implementovat pouze sondu určenou pro testování řetězce ověřování SP → DS/WAYF → IdP → SP z pohledu uživatele. Toto řešení mimo jiné umožnuje použití části našich výsledků v jiných federacích, např. pro monitoring interních federací nejen členů eduID.cz.

Architektura monitoringu eduID.cz

Nejdůležitější komponentou monitoringu eduID.cz je sonda check_saml která simuluje uživatele. Sonda umí na stránce SP najít přihlašovací tlačítko, umí vybrat tu správnou organizaci na WAYF/DS. Dále sonda umí přihlásit testovacího uživatele na IdP, a když je pak přesměrována zpět na stránku SP, dokáže její obsah vyhodnotit s ohledem na to, jestli simulovaný uživatel získal to, co měl.

Maximum informací systém získává z metadat federace. Ty ale pro testování nestačí, další informace jsou doplňovány od správců IdP a SP. Jedná se především o testovací účet, informace o případných odlišnostech v názvu organizace v jednotlivých DS/WAYF. Správci musí také nastavit, jak má sonda poznat úspěšné přihlášení. Některé služby na stránce zobrazují informaci, že uživatel byl úspěšně přihlášen, jiné služby ale uživatele vyzvou k registraci a další mohou prohlásit, že uživatel nemá dostatečná oprávnění. Všechny tyto možnosti představují úspěšné přihlášení, protože na pozadí proběhla úspěšná SAML komunikace.

Pro získávání těchto informací od správců IdP a SP je k dispozici webové rozhraní, které řídí přístup k jednotlivým IdP/SP na základě informací o technických kontaktech v metadatech federace. Takto získané informace jsou ukládány do databáze, která společně s metadaty federace slouží za vstup generátoru konfigurace pro Nagios a plugin check_saml.

Blokové schéma architektury monitoringu:

Architektura monitoringu eduID.cz

  1. zpracování metadat
  2. plnění databáze (nové entityID, práva k entityID)
  3. získání dat od správců
    1. Idp testovací účty, nastavení testů
    2. SP URL služby
  4. získání všech potřebných dat ke konfiguraci pluginu
  5. vygenerování konfigurace pro nagios

Nagios plugin check_saml

I když se plugin jmenuje check_saml, tak vlastně vůbec nekomunikuje pomocí SAML zpráv. Přímou komunikací na úrovni SAML zpráv bez zapojení webové aplikace není možné ověřit funkci kompletního řetězu SP → DS/WAYF → IdP → SP. Pro ověření kompletního řetězu ověřování je třeba simulovat uživatele ovládajícího webový prohlížeč. To není vůbec snadné díky velké variabilitě webových stránek IdP a SP, ta je pro uživatele přínosem, ale pro strojové testovaní představuje obtížný oříšek.

Propracovaná knihovna libwww-perl zjednodušila implementaci webového prohlížeče, tj. správu cookies a řešení přesměrování. Složitost kódu narostla především díky mnohotvárnosti ověřovacího řetezce. Plugin provede test pro kombinaci SP - IdP a dovede se vyrovat s absencí WAYF, stejně tak i se specialitami jako jsou třeba překlepy v názvech organizací na DS. S pluginem lze monitorovat naprostou většinu služeb zapojených ve federaci eduID.cz až na služby jako například nákup produktů, kdy je nejprve potřeba produkty dát do nákupního košíku a samotné ověření uživatele probíhá až při pokusu o placení.

Plugin je na centrálním monitoringu nezávislý. V případě zájmu je možné si ho stáhnout a používat pro monitoring privátních federací členů eduID.cz.

Důležité přepínače pluginu

Do konfiguračních souborů Nagiosu nelze zapisovat řadu speciálních znaků, proto plugin očekává na vstupu argumenty zakódované pomocí base64. To je ale pro ruční testování parametrů pluginu velice nepraktické, proto je k dispozici přepínač -H (parametry obsahující speciální znaky nebo mezery je nutné dát do uvozovek). Po úspěšném otestování z příkazové řádky je možné použít parametr -g, který vytiskne možnou konfiguraci systému Nagios.

Pro výpis detailních ladících informací slouží přepínač -d.

Pro použití v rámci interní federace instituce se hodí -W, který způsobí vynechání fáze DS/WAYF.

Všechny přepínače je možné vypsat parametrem -h.

Příklady použití z CLI

Aplikace s Lazy Sessions

# ./check_saml.pl -E "https://www.eduid.cz/wiki/eduid/index"\
  -C "Přihlásit se" -F "IdPList" \
  -S user_idp \
  -s "Univerzita Jana Evangelisty Purkyně v Ústí nad Labem" \
  -u "testovaci ucet" -U "j_username" \
  -p "heslo" -P "j_password" \
  -r "Přihlášen(a) jako:" -H -d

Jdi na stránky eduid.cz -E, klikni na link s textem -C, na DS najdi formulář se jménem -F, ve formuláři najdi HTML značku select se jménem -S a vyber option s textem -s, na IdP do HTML značky input se jménem -U vyplň testovací účet -u, podobně do značky input se jménem -P vyplň heslo -p. Po přesměrování na SP ověř, zda stránka obsahuje text -r „Přihlášen(a) …“. Parametry jsou zadané v čistém textu -H. Debug výstup -d.

Pokud je vše v pořádku, plugin vrátí návratovou hodnotu: EDUID OK - Successfully logged

Pokud nastane problém, plugin vrací: EDUID CRITICAL - I can't find text Přihlášen(a) jako: on final page.

Po úspěšném otestování přidejte parametr -g, který vytiskne návrh konfigurace pro nagios.

Klasické zabezpečené URL

# ./check_saml.pl -E "URL služby"\
  -F "form name" \
  -S user_idp \
  -s "název instituce" \
  -u "testovaci ucet" -U "j_username" \
  -p "heslo" -P "j_password" \
  -r "očekávaný text výsledku" -H 

Příklad bez klikání na tlačítko případně obrázek pro přihlášení. Tudíž je nutné vynechat parametry -C (klik na odkaz) a -I (klik na obrázek).

Klasické zabezpečené URL bez WAYF/DS

# ./check_saml.pl -E "URL služby"\
  -I logo/login.png
  -F "form name" \
  -S user_idp \
  -s "název instituce" \
  -u "testovaci ucet" -U "j_username" \
  -p "heslo" -P "j_password" \
  -r "očekávaný text výsledku" -H 
  -W

Použití pluginu pro testování interních služeb institucí. Přidáváme parametr -W, který zajistí přeskočení fáze s DS/WAYF. V tomto příkladě neklikáme na odkaz s textem, ale na obrázek, jehož src je v přepínači -I (cesta musí být identická jako ve zdroji HTML stránky).

Směr dalšího rozvoje

V současnosti je monitoring v pilotní fázi se dvěma IdP a několika SP. Zatím jediným výstupem jsou stránky Nagiosu, který provádí testy. Do budoucna plánujeme přidat i matici dostupnosti, jak jsou uživatelé zvyklí z eduroamu.

V průběhu začátku příštího roku plánujeme nejprve další SP ke stávajícím dvěma IdP v pilotním provozu. Po odladění chceme službu zpřístupnit i ostatním správcům IdP.

K postupnému zpřístupnění jsme rozhodli na základě zkušeností ze zavádění AAIEye a z pilotního provozu. Testování s frekvencí 5 min u některých SP zůsobovalo nečekané obtíže. Metodiku testování plánujeme se správci prodiskutovat v mailové konferenci. Dalším aspektem jsou oprávnění a případné další vlastnosti testovacích účtů.

Během řešení těchto spíše administrativních problémů chceme doladit konfigurační rozhraní pro správce IdP a SP. V tomto rozhraní se doplňují informace, které nejsou k dispozici v metadatech, a současně bude možné nastavovat frekvenci testů, anebo testovaní úplně zastavit. Současná verze rozhraní je k dispozici pouze správcům federace.

Last modified:: 2017/02/10 07:02