Bezpečnost aplikací a řízení přístupu.
Co mají všechny aplikace EasyPortal 365 pro SharePoint Online společné: kde leží data, jak fungují přihlášení a role, jaká oprávnění aplikace potřebují, co se zaznamenává a jak aplikace vyvíjíme a vydáváme – včetně mapování na OWASP Top 10:2025 a ISO/IEC 27001. AI Asistent má vlastní bezpečnostní dokument, protože jako jediný používá vlastní službu ve vaší Azure subscription.
1. Shrnutí
- Data zůstávají ve vašem SharePointu. Aplikace nemají vlastní databázi ani serverovou část, která by s daty pracovala. Data jsou v seznamech a knihovnách SharePointu ve vašem tenantu Microsoft 365, kde je můžete klasifikovat, zálohovat a řídit jako jakýkoli jiný obsah.
- Bez vlastního přihlášení. Aplikace běží jako webové části SharePointu (SharePoint Framework) pod identitou přihlášeného uživatele a mají jen ta práva, která má on.
- Role řídíte vy. Role jsou skupiny SharePointu, do kterých vkládáte osoby nebo skupiny Entra ID. Přístup k datům vynucuje SharePoint, ne jen uživatelské rozhraní.
- Jen delegovaná oprávnění. Microsoft Graph aplikace volají vždy jménem přihlášeného uživatele. Aplikační (app-only) přístup žádná aplikace pro SharePoint nevyžaduje.
- Žádné sledování. Aplikace neobsahují analytické ani sledovací nástroje třetích stran.
- Od nás se stahuje jen statický kód. Naše distribuční síť poskytuje kód aplikací, písma, licenční soubory a nahrávky průvodce. Každou verzi nejdřív vydáme tak, aby se k zákazníkům nedostala, a ověříme ji na našem prostředí; teprve pak ji vydáme ostře.
2. Hranice důvěry
| Hranice | Ochrana |
|---|---|
| prohlížeč ↔ SharePoint a Microsoft Graph | identita přihlášeného uživatele, TLS |
| prohlížeč ↔ distribuční síť EasyPortal 365 | TLS, jen stahování statických souborů; aplikace ověřují podpis a kontrolní součet kódu (kapitola 6) |
| prohlížeč ↔ veřejné služby (jen některé aplikace) | TLS, jen vyjmenované služby a jen data uvedená v kapitole 4.2 |
Váš tenant Microsoft 365 tvoří jednu doménu důvěry, kterou spravujete vy. Jediným trvalým externím prvkem je naše distribuční síť. K nám odchází jen e-mail s hlášením chyby, který uživatel odešle sám, a – jen pokud si je zapnete – data volitelné služby Connectors (4.2).
3. Přihlášení, role a oprávnění
3.1 Uživatel vůči SharePointu a Microsoft Graph
Aplikace běží v kontextu stránky SharePointu pod přihlášeným uživatelem, stejně jako ostatní rozšíření ve vašem tenantu. Nemají vlastní uživatelské účty, hesla ani registraci aplikace v Entra ID. Co uživatel nesmí v SharePointu, nesmí ani v aplikaci.
Mimo SharePoint aplikace používají Microsoft Graph s delegovanými oprávněními, např. pro odeslání oznámení e-mailem ze schránky uživatele nebo pro ověření členství ve skupinách. Konkrétní oprávnění každé aplikace vidíte při jejím schvalování v centru pro správu SharePointu. Delegované oprávnění nikdy nedá víc, než má uživatel sám: například správu skupin v Entra ID zvládne jen uživatel, který k ní má roli.
Vlastnost platformy, kterou je dobré znát: oprávnění Microsoft Graph schválená v centru pro správu SharePointu (API access) se vážou na sdílený principál tenantu SharePoint Online Client Extensibility Web Application Principal. Jsou tedy dostupná všem řešením SharePoint Framework ve vašem katalogu aplikací, nikoli jen naší aplikaci. Schvalování je proto rozhodnutí na úrovni tenantu a patří do vaší správy katalogu aplikací. Neschválené oprávnění aplikaci nerozbije, jen vypne funkci, která ho potřebuje.
3.2 Role
- Role jsou skupiny SharePointu, které aplikace při prvním spuštění založí na svém webu (např. správci, zapisovatelé, čtenáři – konkrétní role popisuje dokumentace aplikace).
- Členy určujete vy. Mohou to být osoby i skupiny Entra ID, včetně dynamických skupin podle atributů uživatele (oddělení, pozice, lokalita). Chcete-li role řídit atributy z Entra ID, stačí do role vložit takovou dynamickou skupinu.
- Aplikace nemá vlastní tabulku uživatelů ani rolí. Roli uživatele zjišťuje z členství ve skupinách SharePointu, u vnořených skupin Entra ID přes Microsoft Graph.
3.3 Kdo se k datům dostane
- Přístup vynucuje SharePoint. Seznamy s citlivými daty mají vlastní oprávnění (zrušené dědění z webu) a každá role dostane jen přístup, který potřebuje. Výchozí skupiny webu Členové a Návštěvníci lze z citlivých seznamů vyřadit úplně.
- Ochrana na úrovni položek. Kde to aplikace slibuje (např. „každý vidí jen své záznamy“), zajistí to v SharePointu – buď oprávněním přímo na položce, nebo nastavením seznamu, kdy každý čte jen položky, které sám založil.
- Seznamy, do kterých se jen přidává. Protokoly a evidence lze nastavit tak, aby do nich běžní uživatelé mohli zapisovat, ale nemohli záznamy měnit ani mazat.
- Uživatelské rozhraní podle role jen skrývá funkce, které uživatel stejně nesmí použít. Kde je některé omezení jen filtrem v aplikaci, uvádí to dokumentace aplikace výslovně.
- Vlastníci webu a správci kolekce webů mají v SharePointu vždy plný přístup ke všem datům na webu. Doporučujeme proto tento okruh držet co nejužší a aplikaci s citlivými daty umístit na samostatný web.
4. Data
4.1 Uložení
- Všechna data aplikací jsou v seznamech a knihovnách SharePointu na webu aplikace. Kde to dává smysl, jsou seznamy skryté v Obsahu webu, aby s nimi uživatelé nepracovali mimo aplikaci. Skrytí je věc přehlednosti, přístup řídí oprávnění.
- Na data se vztahují vaše nastavení Microsoft 365: umístění dat, zálohování, zásady uchovávání, štítky citlivosti, eDiscovery i ochrana před ztrátou dat (DLP).
- Statistiky volání rozhraní SharePointu a Microsoft Graph (počty volání a omezení rychlosti podle typu dotazu, bez obsahu) se ukládají do seznamu na stejném webu. Nic z toho neodchází mimo tenant.
4.2 Co odchází mimo váš tenant
| Kdy | Kam | Co |
|---|---|---|
| uživatel v aplikaci odešle e-mail (oznámení, kopie záznamu) | adresát, kterého zvolí aplikace podle nastavení nebo uživatel | obsah e-mailu; odchází ze schránky uživatele přes Microsoft 365 a zůstává v jeho Odeslané poště |
| uživatel nahlásí chybu nebo navrhne zlepšení | podpora EasyPortal 365 (support@easyportal365.com); odchází ze schránky uživatele a zůstává v jeho Odeslané poště | text hlášení a přílohy, závažnost, název a verze aplikace, jméno a e-mail uživatele, identifikátor tenantu, adresa webu, typ prohlížeče a čas |
| načtení aplikace | distribuční síť EasyPortal 365 | nic se neodesílá; prohlížeč stahuje statické soubory (kód, písma, licenční soubor, nahrávky průvodce) |
| CRM, Doklady přijaté – vyhledání firmy | ARES (Ministerstvo financí ČR) | jen IČO |
| Vozový park – hledání adres | Nominatim, Photon | text hledané adresy |
| Vozový park – mapa | OpenStreetMap (mapové dlaždice), unpkg.com (styly mapové knihovny) | zobrazená oblast mapy |
| Workplace – počasí (volitelné) | Open-Meteo | název obce a souřadnice |
| Workplace – oborové novinky (volitelné) | veřejný zdroj RSS přes veřejné proxy allorigins.win nebo r.jina.ai | jen adresa veřejného zdroje |
| Řízené dokumenty – přísný režim potvrzení (volitelné) | api.ipify.org | nic; služba vrátí veřejnou IP adresu uživatele do záznamu potvrzení |
| Atlas – roadmapa Microsoft 365 | služba EasyPortal 365 (Azure, západní Evropa) | nic; stahují se jen veřejné informace o novinkách Microsoft 365 |
| CRM, Worklog, Marketing, Workplace, Mediální centrum, Moje dokumenty – funkce AI (jen s nasazeným AI Asistentem) | služba AI Asistenta ve vaší Azure subscription | text dotazu a podklady; popisuje bezpečnostní dokument AI Asistenta |
| Workplace, Mediální centrum – vložené video | YouTube, Vimeo | běžné údaje prohlížeče, jen když obsah video obsahuje |
| CRM – napojení na Mailchimp (volitelné) | služba EasyPortal 365 Connectors (Azure, západní Evropa) a Mailchimp | kontaktní údaje synchronizované s Mailchimpem; služba ukládá jen šifrovaný přístupový token a údaje o připojeném účtu |
U všech přenosů prohlížeč vždy předá běžné technické údaje (IP adresa, typ prohlížeče). Kontrola licence používá jen otisk (hash) identifikátoru tenantu, žádné údaje o uživatelích. Zpracování v případě služby Connectors upravuje čl. 10 obchodních podmínek (kapitola 8).
4.3 Záznamy a audit trail
- Auditní protokol Microsoft 365 (Microsoft Purview). Protože data leží v SharePointu, zaznamenává vytvoření, změnu a smazání položek a operace se soubory včetně přístupu k nim standardní auditní protokol Microsoft 365. Odtud ho můžete předávat do svého nástroje na správu logů (SIEM) přes Office 365 Management Activity API nebo konektory, které pro to nástroje běžně mají. Samotné zobrazení položky seznamu (bez otevření souboru) se v protokolu nezaznamenává. Délka uchování v Microsoft 365 závisí na licenci.
- Historie verzí. Seznamy s evidencí mají zapnuté verze, takže je u každé položky vidět, kdo, kdy a co změnil.
- Protokoly aplikací. Aplikace, kde na tom záleží, vedou vlastní protokol změn v seznamu, do kterého běžní uživatelé mohou jen zapisovat.
- Aplikace běží v prohlížeči a nemají serverovou část, proto samy nezapisují do syslogu. Cestou pro centrální log management je auditní protokol Microsoft 365.
5. Instalace a správa
- Instalace vyžaduje správce SharePointu: nahrání instalačního balíčku do katalogu aplikací a schválení oprávnění Microsoft Graph (API access).
- První spuštění provede vlastník webu: aplikace založí své seznamy, skupiny a oprávnění. Běžný uživatel tyto kroky provést nemůže.
- Teams. Aplikace s podporou Teams používají stejný kód i stejná oprávnění. V Teams aplikace data jen čte a zapisuje; seznamy ani konfiguraci nezakládá.
- Odinstalace. Odebrání aplikace nemaže data na webu. Oprávnění schválená v API access je třeba odvolat ručně v centru pro správu SharePointu – je to vlastnost platformy.
6. Distribuce a integrita kódu
- Kód aplikací se načítá z distribuční sítě EasyPortal 365 (
cdn.easyportal365.cz) a běží v prohlížeči uživatele s jeho právy. Distribuční síť obsahuje jen statické soubory; nemá přístup k vašemu tenantu a neukládá nic, co by od vás přišlo. - Verze vydáváme řízeně. Novou verzi nejdřív zveřejníme tak, aby se k vám nedostala, a ověříme ji na našem prostředí. Teprve ostré vydání ji zpřístupní zákaznickým webům; ty běží na poslední ostré verzi. Na vyžádání můžeme váš web podržet na konkrétní verzi nebo ho vrátit na předchozí.
- Ověření podpisu a kontrolního součtu. Aplikace přijmou jen verzi uvedenou v námi podepsaném seznamu vydání a každý soubor kódu načtou s kontrolním součtem (Subresource Integrity). Podvržený nebo změněný soubor prohlížeč odmítne spustit.
- Do distribuční sítě zapisuje jen jeden účet, organizace má vynucené dvoufázové ověření a přepis historie hlavní větve je blokovaný.
- Knihovny třetích stran jsou součástí našich balíčků a písma hostujeme sami. Aplikace nenačítají kód z veřejných CDN; jedinou výjimkou jsou styly mapové knihovny ve Vozovém parku (unpkg.com).
7. Jak aplikace vyvíjíme
7.1 Kód a jeho správa
- Zdrojový kód je v soukromých repozitářích na GitHubu; organizace má vynucené dvoufázové ověření.
- Před uložením každé změny automatická kontrola hlídá, aby se do repozitářů nedostala jména zákazníků; v repozitářích dokumentace a distribuční sítě navíc i neviditelné a obousměrné znaky Unicode (ochrana proti útokům typu Trojan Source).
- Před zveřejněním souborů do distribuční sítě kontrola projde přesně ty soubory, které se mají zveřejnit, a zastaví publikaci, pokud by obsahovaly údaje zákazníků.
7.2 Kontroly kvality, které blokují vydání
- TypeScript v přísném režimu (
strict) a ESLint zaměřený na skutečné chyby (např. neošetřené asynchronní operace). Počet výjimek z pravidel smí jen klesat. - Automatické testy běží při každém sestavení k vydání; neúspěšný test vydání zastaví.
- Bezpečnostní a logičtí strážci (v každé aplikaci desítky kontrol, část je specifická pro aplikaci), např.:
- seznam, který slibuje omezený přístup, ho má skutečně nastavený,
- každý panel a každá akce prochází kontrolou role,
- nečitelná data se nikdy nevyhodnotí jako „prázdná“ a nepřepíšou existující záznamy,
- historie změn nikdy netvrdí „beze změn“, když se ji nepodařilo načíst.
7.3 Zásady bezpečného kódu
- Obsah ze SharePointu je nedůvěryhodný vstup. Formátovaný text z editorů aplikací propouští sdílený sanitizér jen se seznamem povolených prvků. Obsah stránek a položek SharePointu zbavuje skriptů, nebezpečných prvků a obslužných atributů a odkazy i styly propouští jen z povolených schémat a vlastností.
- Oprávnění se vynucují v SharePointu, ne jen v rozhraní; kontroly rolí pokrývají všechny vstupní body aplikace.
- Zápis, který selže, je chyba. Aplikace neoznámí úspěch, když SharePoint zápis odmítl, a destruktivní operace pracují jen s ověřeně načtenými daty.
- Žádná tajemství v kódu prohlížeče. Kód aplikací neobsahuje hesla, klíče k datům zákazníků ani přístupové tokeny.
- Pravidelné bezpečnostní revize celé flotily i jednotlivých aplikací; nálezy ověřujeme proti kódu, opravujeme a evidujeme v seznamu technického dluhu s jednoznačným označením až do uzavření.
7.4 Vydávání a opravy
- Každá verze projde sestavením s testy a strážci, zveřejní se nejdřív bez dopadu na zákazníky a ověří se na našem prostředí.
- Novou řadu vydáváme jen na rozhodnutí vedení; zákazníci vidí změny v sekci „Co je nového“ přímo v aplikaci.
- Aktualizace, které označíme jako bezpečnostní, kritické nebo povinné, je zákazník povinen instalovat a používat (obchodní podmínky, čl. 6).
8. Smluvní rámec
- Dodavatel: accelapps s.r.o., Hvězdova 1716/2b, Nusle, 140 00 Praha 4, IČO 066 28 362, zapsaná u Městského soudu v Praze, oddíl C, vložka 285754.
- Obchodní podmínky (VOP) jsou součástí každé objednávky. Článek 10 obsahuje smlouvu o zpracování osobních údajů podle čl. 28 odst. 3 GDPR. Ve výchozím modelu běží aplikace ve vašem prostředí a my data nehostujeme; pokud data zpracováváme (např. služba Connectors nebo podpora s přístupem do vašeho prostředí), řídí se tímto článkem.
- Náš přístup do vašeho prostředí je možný jen přes účet, který nám pro implementaci nebo podporu zřídíte. Jeho rozsah a dobu platnosti řídíte vy.
- Podpora: support@easyportal365.com, v pracovní dny 9:00–16:00; přijetí požadavku potvrzujeme do dvou pracovních dnů.
9. Doporučení pro nasazení
- Aplikaci s citlivými daty dejte na samostatný web a označte ho štítkem citlivosti podle vaší klasifikace.
- Okruh vlastníků webu a správců kolekce webů držte co nejužší – mají přístup ke všem datům.
- Do rolí vkládejte skupiny Entra ID, ideálně dynamické, ať se přístup mění s nástupem, přeřazením i odchodem zaměstnance.
- Oprávnění Microsoft Graph schvalujte vědomě – platí pro všechna řešení SharePoint Framework v tenantu (3.1).
- Auditní protokol Microsoft 365 napojte na svůj log management (4.3).
- Implementační účet dodavatele po dokončení implementace omezte nebo zrušte.
10. Mapování na OWASP Top 10:2025
Přehled odpovídá rizikům webových aplikací z žebříčku OWASP Top 10:2025. AI Asistent má navíc mapování na OWASP Top 10 for LLM Applications ve svém bezpečnostním dokumentu.
| Riziko | Jak je ošetřené |
|---|---|
| A01 Narušené řízení přístupu | přístup k datům vynucuje SharePoint (vlastní oprávnění seznamů, ochrana na úrovni položek), ne uživatelské rozhraní; role jsou skupiny SharePointu, které řídíte vy; kontroly rolí pokrývají všechny vstupní body aplikace a strážci při každém sestavení ověřují, že seznam slibující omezený přístup ho má skutečně nastavený (3.3, 7.2) |
| A02 Chybná konfigurace | seznamy, skupiny a oprávnění zakládá aplikace sama při prvním spuštění podle předpisu, bez ručního nastavování; výchozí skupiny webu Členové a Návštěvníci lze z citlivých seznamů vyřadit; doporučená nastavení tenantu jsou v kapitole 9 |
| A03 Selhání dodavatelského řetězce | knihovny třetích stran jsou součástí našich balíčků s uzamčenými verzemi; aplikace nenačítají kód z veřejných CDN; kód se ověřuje podpisem a kontrolním součtem; do distribuční sítě zapisuje jen jeden účet s vynuceným dvoufázovým ověřením (6) |
| A04 Kryptografická selhání | všechna spojení běží přes TLS; aplikace neukládají hesla ani vlastní tajemství; šifrování dat v klidu zajišťuje Microsoft 365; seznam vydání je podepsaný (6) |
| A05 Injekce | obsah ze SharePointu je nedůvěryhodný vstup a do stránky se dostane jen přes sdílený sanitizér; odkazy a styly jen z povolených schémat a vlastností (7.3) |
| A06 Nezabezpečený návrh | žádná serverová část ani vlastní databáze; jen delegovaná oprávnění; hranice přístupu leží v platformě, ne v kódu aplikace; pravidelné bezpečnostní revize (1, 7.3) |
| A07 Selhání autentizace | aplikace nemají vlastní přihlášení ani hesla; přihlášení zajišťuje Entra ID včetně vícefaktorového ověření a podmíněného přístupu, které nastavujete vy (3.1) |
| A08 Selhání integrity softwaru nebo dat | podpis a kontrolní součet kódu; každá verze se nejdřív ověří na našem prostředí; nečitelná data se nikdy nevyhodnotí jako prázdná a nepřepíšou existující záznamy; destruktivní operace pracují jen s ověřeně načtenými daty; historie verzí u evidencí (6, 7.2, 7.3, 4.3) |
| A09 Selhání logování a upozorňování | operace zaznamenává auditní protokol Microsoft 365, který předáte do svého SIEM a nad kterým si v Microsoft Purview nastavíte upozornění; aplikace vedou vlastní protokoly, do kterých běžní uživatelé mohou jen přidávat (4.3) |
| A10 Nesprávné zpracování výjimečných stavů | zápis, který SharePoint odmítl, se hlásí jako chyba, nikdy jako úspěch; výpadek čtení se neplete s prázdnými daty; historie změn netvrdí „beze změn“, když se ji nepodařilo načíst (7.2, 7.3) |
11. Mapování na ISO/IEC 27001:2022 (výběr)
| Oblast (Annex A) | Kde v řešení |
|---|---|
| 5.15 / 5.18 Řízení přístupu a přístupová práva | identita uživatele, role jako skupiny SharePointu, oprávnění vynucená SharePointem (3) |
| 5.19–5.22 Vztahy s dodavateli | smluvní rámec, zpracování osobních údajů podle čl. 28 GDPR, náš přístup jen přes účet, který řídíte vy (8) |
| 5.23 Bezpečnost cloudových služeb | data ve vašem tenantu Microsoft 365 pod vašimi zásadami (4.1) |
| 8.2 Privilegovaná přístupová práva | vlastníci webu a správci kolekce webů, instalace jen správcem SharePointu (3.3, 5) |
| 8.3 Omezení přístupu k informacím | oprávnění seznamů, ochrana na úrovni položek, seznamy jen pro přidávání (3.3) |
| 8.4 Přístup ke zdrojovému kódu | soukromé repozitáře, vynucené dvoufázové ověření (7.1) |
| 8.9 Správa konfigurace | oprávnění a seznamy zakládané podle předpisu aplikace (5) |
| 8.12 Prevence úniku dat | data zůstávají v tenantu, platí vaše DLP a štítky citlivosti; toky mimo tenant jsou vyjmenované (4.1, 4.2) |
| 8.15 / 8.16 Logování a monitoring | auditní protokol Microsoft 365, historie verzí, protokoly aplikací (4.3) |
| 8.24 Kryptografie | TLS na všech spojeních, podepsaný seznam vydání, kontrolní součty kódu (6) |
| 8.25 / 8.28 Bezpečný vývoj a kódování | přísný TypeScript, sanitizace vstupů, strážci a testy jako brána vydání (7) |
| 8.29 Bezpečnostní testování | automatické testy a pravidelné bezpečnostní revize s evidencí nálezů (7.2, 7.3) |
| 8.32 Řízení změn | vydání nejdřív bez dopadu na zákazníky, ověření, pak ostré vydání; možnost podržet verzi (6, 7.4) |
12. Známá omezení
Uvádíme je otevřeně, protože podle nich se rozhoduje. Jde o vlastnosti platformy, ne o chyby, které by šly opravit v aplikaci.
| # | Omezení | Co s tím |
|---|---|---|
| 1 | Vlastníci webu a správci kolekce webů mají v SharePointu vždy přístup ke všem datům na webu | aplikaci s citlivými daty dejte na samostatný web a tento okruh držte co nejužší |
| 2 | Schválená oprávnění Microsoft Graph jsou dostupná všem řešením SharePoint Framework v tenantu | schvalovat vědomě a hlídat, co se do katalogu aplikací nahrává |
| 3 | Samotné zobrazení položky seznamu se v auditním protokolu Microsoft 365 nezaznamenává | pro citlivé evidence verze a protokoly aplikací; dokumenty ukládat jako soubory, jejichž otevření se zaznamená |
| 4 | Omezení, které je jen filtrem v aplikaci, není oprávnění | dokumentace aplikace taková místa uvádí výslovně; kde je třeba hranice, nastavit oprávnění v SharePointu |
| 5 | Kód aplikace běží v prohlížeči přihlášeného uživatele a načítá se z naší distribuční sítě. Kdyby někdo podvrhl náš kód, získal by nanejvýš to, k čemu má přístup daný uživatel | podpis a kontrolní součet kódu, jediný účet se zápisem do distribuční sítě, dvoufázové ověření (6) |
| 6 | Odebrání aplikace neodvolá schválená oprávnění Microsoft Graph | odvolat ručně v centru pro správu SharePointu (5) |
13. Reference
- OWASP: OWASP Top 10:2025
- Microsoft: Audit log activities · Office 365 Management Activity API