Vážení uživatelé, klienti WS API IS/STAG, vývojáři externích aplikací, administátoři IS/STAG, GDPR pověřenci,
již velmi dlouhou dobu (mnohem déle než je v platnosti GDPR) se snažíme upozornit na následující problém. V IS/STAG se během let postupně a velmi intenzivně "utahují" pravidla pro přístup k různým (osobním/citlivým i "běžným") údajům, konkrétně jde především o údaje o studentech a učitelích. Veškerá nastavení a parametry, které mohou řídit správci IS/STAG na školách (a nikoliv vývojáři - my pouze pravidla implementujeme, zapínat a nastavovat je pak musejí správci dle politik daného zákazníka), byla dlouhé roky aplikována pouze v portálovém rozhraní, typicky v aplikaci "Prohlížení IS/STAG".
Portál IS/STAG je ta "viditelná" část našeho rozhraní, je to rozhraní určené "pro lidi", všichni o něm ví a sledují jej. Proto se na něj soustředí veškerá pozornost. My vždy upozorňujeme, že IS/STAG má i další rozhraní, sice před zraky běžných uživatelů relativně "skryté", ale co se týče možností, velmi silné. V tomto rozhraní byly přístupy k údajům vždy omezovány mnohem méně.
Jedním z důvodů je nutnost konzultace změn s vývojáři aplikací napojených na WS API. A poskytnutí jim času na úpravy. Několikrát jsme tuto věc vysvětlovali GDPR pověřencům na ZČU (kteří se během času měnili) a vždy nám byla přislíbena aktivita. Zbytečně. Vzhledem k tomu, že situaci považujeme za zásadní, rozhodli jsme se jednat a zodpovědnost za případné problémy přesunout na provozovatele / administrátory IS/STAG na školách. Tímto se jim omlouváme za tlak, který na ně tímto vytvoříme, ale již nevidíme jiné řešení. Na podzim 2021 proběhla na ZČU rozsáhlá kontrola z ÚOOÚ, která sice řešila jiné věci, nicméně je jasné, že současný stav nemůžeme s klidným svědomím nechat běžet dál.
Chápeme, že se nejedná o nic příjemného, nicméně současný stav je podle našeho názoru již neudržitelný. Snažili jsme se změnu iniciovat již několikrát v minulosti, ale už to nelze (i kvůli zmíněné kontrole ÚOOÚ) odkládat. Převádíme tímto zodpovědnost na provozovatele systému - nabízíme Vám možnost to zlepšit (ovšem s "těžkostmi" na straně klientů WS API při přechodu) či to "nechat být na vlastní zodpovědnost". Nicméně přiznáváme, že Vás (administrátory IS/STAG) během relativně krátkého času donutíme se rozhodnout, aby se věc posunula kupředu.
Nové možnosti v aplikaci WS
Ve verzi modulu WS vydané v půlce ledna 2022 se objevila nová funkcionalita. Modul WS ve všech poskytovaných webových službách začne respektovat nastavení přístupu k údajům studentů, vyučujících (nejen jich, ale především) - tedy přesně tak, jak "to máte nastavené v portálovém rozhraní, v aplikaci Prohlížení IS/STAG", tak stejným způsobem budou webové služby údaje chránit. Konkrétní seznam WS je uveden níže.
Popis možností nastavení ochrany osobních údajů v Prohlížení IS/STAG je k dispozici v této sekci nápovědy.
Co a jak se změní - pro vývojáře aplikací
Kdokoliv používáte jakékoliv WS ze seznamu uvedeného níže, voláte je jako zcela anonymní (nepřihlášený) klient či je voláte pod rolí ST (student), kontaktujte uživatelskou podporu IS/STAG na Vaší instituci a domluvte se. Čím dříve, tím lépe.
Jak upravit aplikace - obecná rada: Podívejte se do portálu IS/STAG Vaší školy jako nepřihlášený uživatel do sekce Studium / Prohlížení a podívejte se, které sekce jsou pro nepřihlášené uživatele nedostupné. Toto nastavení je pro každou školu různé a je třeba počítat s tím, že jej mohou administrátoři měnit. Následně ve Vaší aplikace kdekoliv voláte jakoukoliv WS týkající se nějaké ze sekcí aplikace prohlížení, která není pro nepřihlášené k dispozici, musí ji volat pod nějakým přihlášením. Přeneste tedy při volání uživatelům token/ticket, který získáte jeho přesměrováním na přihlašovací obrazovku, viz. doporučený popis přihlášení ke klientským aplikacím zde. NEPOUŽÍVEJTE přístup, kdy si od uživatele vyžádáte jméno a heslo ve Vaší aplikaci a to pak předáváte nám. Tento přístup bude pravděpodobně v blízké budoucnosti také omezen - používejte proto vždy doporučený způsob přihlašování.
Vzhledem k možnosti nakonfigurovat IS/STAG i velmi detailně "per položka" mohou administrátoři IS/STAG nakonfigurovat například to, že studenti o ostatních studentech neuvidí některé konkrétní položky (např. email, telefon, tituly, jméno/příjmení, …) - může se tedy stát, že některé WS sice budou vracet seznam studentů jako dříve, ale seznam nebude obsahovat některé "atributy", které se dříve vracely a byly povinné.
Používáte-li pro přístup k WS API IS/STAG nějaké Vám napevno přidělené konto (tedy uživ. jméno a heslo), pak pokud má konto "vyšší" roli (jakákoliv role "vyučující" a výše, případně role "EX - externí uživatel"), pak se pro Vás aktuálně nic nemění.
Co a jak se změní - pro administrátory IS/STAG
Nové nastavení funguje tak, že přidává další úroveň kontroly a omezení. Tedy veškerá stávající nastavení, veškeré parametry, konkrétní nastavení jednotlivých služeb (např. omezení na IP adresy je-li někde) - cokoliv z toho zůstane v platnosti i nadále. Pouze se přidá další případné omezení.
Informace o této změně (odkaz na tuto stránku) jsme zaslali všem zaregistrovaným v mailové konferenci modulu WS (tj. všichni vývojáři by měli být informováni) i všem administrátorům v rámci newsletteru v lednu 2022.
Narazíte-li na aplikaci, kde nejsou úpravy ihned či snadno možné, zvažte přidělení provozovatelovi aplikace konto v IS/STAG s rolí EX - viz další kapitola.
Detailní změny na API
Zde je uveden seznam webových služeb, na jejichž fungování bude mít nové nastavení vliv. Principiálně jde především o to, KDO má k volání dané WS vůbec právo (dosud jsou místa, kde mohou anonymní uživatelé získat seznamy studentů a podobně), případně upravení "kontextu" - vztahu volajícího a dotazovaných dat. Tedy striktní omezení získaných dat například podle příslušnosti volajícího uživatele k fakultě. V případě studentů a snahy získat data o jiném studentovi se budou přísně respektovat pravidla popsaná v sekci zde (záleží ovšem na tom, jak přesně má konkrétní zákazník pravidla nastavena). Jednoduše řečeno: v modulu WS se dostanete ke zcela shodným datům, jako se pod danou uživatelskou rolí dostanete v portálu.
Poznámka: V IS/STAG existuje uživatelská role "Externí uživatel" (EX). Její použití nebylo nikdy bohužel úplně přesně definováno, nicméne víme, že se typicky používá tak, že "dáme externí aplikace tuto roli, aby se dostala k datům v IS/STAG bez omezení". My to prozatím respektujeme - a roli EX jsme v modulu WS zařadili do seznamu "vyšších" rolí, které mají přístup k datům neomezený. V budoucnu jistě najdeme ještě lepší řešení (v současnosti je tato role tedy poměrně silná a má přístup i k datům, která nepotřebuje - nelze to prostě lépe "rozjemnit"). Pokud tedy budete mít nějakou externí aplikaci, která opravdu má mít právo tahat "neveřejná" data a chcete to (a zároveň tato aplikace není určená přímo pro uživatele - tj. nelze jednotlivé uživatele přesměrovat na přihlášení, získat token a volat WS pod jejich identitou), mohou administrátoři IS/STAG vytvořit takovéto konto v IS/STAG, přidělit jej zodpovědné osobě a nastavit ji nějaké silné heslo - přes to bude aplikace komunikovat s API WS. Není to ideální ani definitivní řešení, ale nyní bude nejrozumnější.
Informace: V současnosti probíhá paralelně k těmto změnám vývoj zcela nového modulu WS API nad IS/STAG, který bude postaven na zcela nových základech - podobně jako moderní API bude i tento modul postaven nad standardem OAuth 2.0, což mnoho současných problémů odstraní. Nicméně toto je zatím ve fázi vývoje.
Seznam WS, u nichž může dojít ke změnám při změně nastavení bezpečnostních politik, následuje níže:
predmety/getPredmetyByStudent. Vrací seznam předmětů, které má student zapsán či je někdy v minulosti zapsané měl. Mohlo být dostupné dokonce bez přihlášení komukoliv. Nově se řídí nastavením přístupů v portálovém prohlížení, anonymní uživatelé už se k tomu určitě nedostanou.
programy/getPlanyStudenta. Vrací seznam studijních plánů, které student studuje či je někdy v minulosti studoval. Mohlo být dostupné dokonce bez přihlášení komukoliv. Nově se řídí nastavením přístupů v portálovém prohlížení, anonymní uživatelé už se k tomu určitě nedostanou.
rozvrhy/getRozvrhByStudent (plus další varianty této WS - např. verze do iCAL, PDF). Vrátí rozvrh studenta. Mohlo být dostupné dokonce bez přihlášení komukoliv. Nově se řídí nastavením přístupů v portálovém prohlížení, anonymní uživatelé už se k tomu určitě nedostanou.
terminy/getTerminyZkousek. Obecná služba vracející zkouškové termíny. Lze ji ale volat i tak, že vrátí seznam termínů zadaného studenta, čímž defakto vrací podmnožinu jeho rozvrhu. Mohlo být dostupné dokonce bez přihlášení komukoliv. Nově se řídí nastavením přístupů v portálovém prohlížení, anonymní uživatelé už se k tomu (k seznamu termínů konkrétního studenta) určitě nedostanou.
V případě požadování termínů nějakého vyučujícího se řídí nastavením portálového prohlížení Učitel / Termíny.
student/getStudentInfo. Obecná služba vracející informace o studentovi. Mohlo být dostupné dokonce bez přihlášení komukoliv. Nově se řídí nastavením přístupů v portálovém prohlížení, anonymní uživatelé už se k tomu určitě nedostanou. Student může ponovu získat informace jen o sobě samém a v případě některých nastavení GDPR parametrů v prohlížení i o svých spolužácích.
API vracející seznamy studentů - hledání "podle něčeho". Konkrétně: student/getStudentiByFakulta, getStudentiByKrouzek, getStudentiByObcanstvi, getStudentiByObor, getStudentiByPredmet, getStudentiByRoakce, getStudentiByStudijniKruh, getStudentiByTermin, najdiStudentyPodleJmena.
Toto byly asi nejkritičtější služby - umožňovaly hromadně získat ohromné seznamy dat. Neobsahovaly sice citlivé/osobní údaje, ale i obsažené údaje se již v současné době limitují. Jejich nové možnosti opět odpovídají tomu, jak a kdo může tyto informace vidět v portálovém prohlížení. Prakticky se tyto WS omezí jen na vyšší role (např. vyučující, stud. referentka, tajemník a podobně), u studentů se (dle nastavení dané školy) může stát, že uvidějí pouze ty seznamy (jiných) studentů, v nichž se sami vyskytují.
orion/getKalendarOsoby, users/getKalendarOsoby. Komentář: Vrátí rozvrh osoby podle jejího loginu, ve formátu iCAL (např. po GoogleCalendar). Pokud má osoba více identit (student i učitel, více os. čísel..), vrací všechny identity dohromady. Pro studenta vrací rozvrh jeho předmětů plus termíny zkoušek, na kterých je/byl přihlášen, pro vyučujícího rozvrh jím vyučovaných předmětů a termínů jím zkoušených zkoušek. Citlivá data: Rozvrh studenta, rozvrh učitele. Kdo smí službu volat: Zcela kdokoliv, včetně veřejnosti. Známá rizika při uzavření služby: Uživatelé používají tuto službu ve svých kalendářích (např. v Google Calendar a dalších) pro stahování svého pracovního/školního kalendáře. Zjištěno, že služba se využívá pouze na ZČU.
Řešení: Fungování služby na základě parametru 'login' pro nepřihlášeného uživatele bude automaticky ukončeno 28. 2. 2022. Je připravena alternativní možnost - v portálu IS/STAG se ve verzi vydané 31. 1. 2022 objeví pro uživatele novinka - na titulní stránce se uživateli objeví možnost nechat si vygenerovat odkaz na tuto WS s kalendářem - dostane unikátní náhodný odkaz, který může využít. Takový odkaz nebude vyžadovat přihlášení a půjde použít v kalendářových aplikacích. Použití původního parametru 'login' půjde nově již jen pro přihlášeného uživatele. Tato možnost je již vytvořena a popsána je zde.
ucitel/getUcitelInfo. Obecná služba vracející informace o učiteli. Bylo dostupné bez přihlášení komukoliv. Nově se řídí nastavením přístupů v portálovém prohlížení na záložku "Učitel".
ucitel/najdiUcitelePodleJmena. Obecná služba vyhledávající učitele. Bylo dostupné bez přihlášení komukoliv. Nově se řídí nastavením přístupů v portálovém prohlížení na záložku "Učitel" a na možnost vyhledávání učitelů.
ucitel/getUciteleRoakce, ucitel/getUcitelePredmetu, ucitel/getUciteleKatedry. Obecná služba vyhledávající učitele. Bylo dostupné bez přihlášení komukoliv. Nově se řídí nastavením přístupů v portálovém prohlížení do příslušné sekce v portálovém prohlížení.
rozvrhy/getRozvrhBy … XXX - různé rozvrhy. Vrací různé rozvrhy (učitele, kroužku, pracoviště, stud. plánu, …). Mohlo být dostupné dokonce bez přihlášení komukoliv. Nově se řídí nastavením přístupů v portálovém prohlížení do příslušné sekce v portálovém prohlížení.
rozvrhy/getRozvrhoveAkce, rozvrhy/getRozvrhoveAkceInfo. Vyhledává rozvrhové akce podle různých kritérií či vrací detailní info o akci. Dostupnost se bude nově řídit nastavením přístupů v portálovém prohlížení do sekce "Rozvrhové akce".
mistnosti/getMistnostiInfo. Vyhledává místnosti podle různých kritérií či vrací detailní info o místnosti. Dostupnost se bude nově řídit nastavením přístupů v portálovém prohlížení do sekce "Místnosti".
prace/getKvalifikacniPrace, prace/serviceOAIPMH, prace/serviceOAIPMH_UspesneObhajene. Vrací seznam VŠKP podle různých kritérií. Dostupnost se bude nově řídit nastavením přístupů v portálovém prohlížení do sekce "Kvalifikační práce". Pokud chce uživatel hledat podle ID učitele, pak navíc se dostupnost řídí i přístupy do portálové sekce "Učitel - Kvalifikační práce". Pokud chce uživatel hledat podle pracoviště, pak navíc se dostupnost řídí i přístupy do portálové sekce "Pracoviště - Vedené vš. kvalifikační práce".
prace/getKvalifikacniPraceOsoby. Vrací seznam učitelů evidovaných u VŠKP (vedoucích, oponentů, …). Dostupnost se bude nově řídit nastavením přístupů v portálovém prohlížení do sekce "Kvalifikační práce". Pokud chce uživatel hledat podle ID učitele, pak navíc se dostupnost řídí i přístupy do portálové sekce "Učitel - Kvalifikační práce".
predmety/… , qram/… - různé služby. Vrací různé seznamy předmětů, informace o předmětech a podobně. Nově se řídí nastavením přístupů do příslušné sekce v portálovém prohlížení.
programy/… - různé služby. Vrací různé seznamy studijních programů, oborů, segmentů, modulů, studijních plánů a bloků…. Nově se řídí nastavením přístupů do příslušné sekce v portálovém prohlížení.