Bezpečnost a tok dat
Kde vaše data leží, co je zašifrované, jak je ověřené a omezené připojení AI, co Assetli loguje, co vidí poskytovatel AI a co zatím neumíme.
Naposledy aktualizováno: 17. září 2026
Tahle stránka je psaná pro technicky zdatného a skeptického čtenáře. Každé tvrzení níže bylo ověřeno proti kódu aplikace k datu uvedenému výše. Co je omezení a ne funkce, najdete v kapitole Co zatím neumíme, označené jako plánované.
Shrnutí
Dvě navazující stránky jdou hlouběji: Kdo zpracovává vaše data vypisuje každou třetí stranu a co dostane, Jak dlouho se data uchovávají uvádí dobu uchování každého záznamu.
- Assetli se nikdy nepřipojuje k vaší bance a nedrží přihlašovací údaje do bankovnictví. Data přicházejí importem souboru, ručním zadáním, nebo volitelnou synchronizací z Wallet by BudgetBakers pomocí tokenu té aplikace.
- Připojení AI stojí na OAuth 2.1 s PKCE, souhlasnou obrazovkou, krátce platnými tokeny uloženými jako otisk, jedním profilem na konektor a odděleným oprávněním ke čtení a k zápisu. Zápis vyžaduje placený tarif.
- Vaše konverzace s AI se k Assetli nedostane. Server dostane jen volání nástrojů. Čtení se nelogují, zápisy se logují 12 měsíců.
- Na API neběží žádná knihovna třetí strany pro sledování chyb ani analytiku. Analytika v prohlížeči na webových stránkách je podmíněná souhlasem a provoz API nikdy nevidí.
Kde data leží
| Co | Kde |
|---|---|
| Aplikace a API | Vercel, frankfurtský region (fra1) |
| Databáze | MongoDB Atlas |
| Nahrané soubory (výpisy, fotografie, dokumenty) | Objektové úložiště: Vercel Blob nebo Cloudflare R2 podle konfigurace nasazení |
| Veřejná referenční data (ceníky, statistiky) | Cloudflare R2 |
| Denní záloha databáze | Archiv z mongodump zašifrovaný AES-256 ještě předtím, než opustí server sestavení, uložený jako artefakt GitHub Actions |
| Měnové kurzy | Stahují se z frankfurter.app (kurzy ECB). Dotaz nese jen kódy měn |
| Platby | Stripe. Údaje o kartě se k Assetli nedostanou |
Přihlášení do Assetli
- E-mailem a heslem. Hesla se ukládají jako otisk algoritmem bcrypt.
- Přihlášení přes Google nebo Facebook (OAuth).
- Volitelné dvoufaktorové ověření aplikací TOTP se záložními kódy. Tajemství pro TOTP je zašifrované.
- Účet se po opakovaných neúspěšných pokusech o přihlášení uzamkne.
- Relace drží cookie s příznakem HTTP-only, vydává ji knihovna Auth.js.
Šifrování
- Veškerý provoz běží přes HTTPS.
- Šifrování na úrovni polí algoritmem AES-256-GCM (verzovaný zápis, náhodný inicializační vektor, autentizační značka) chrání: číslo účtu, IBAN a poznámky u bankovních účtů, token pro Wallet by BudgetBakers, tajemství dvoufaktorového ověření, vaše vlastní API klíče pro poskytovatele AI a poznámky Family Legacy. Zašifrovaná pole se nedají prohledávat dotazem do databáze a dešifrují se až při zobrazení záznamu.
- Přístupové a obnovovací tokeny OAuth, autorizační kódy a API klíče se ukládají jako otisk SHA-256. Čitelná podoba existuje pouze ve vašem klientovi.
Připojení AI krok za krokem
Tohle se stane, když se Claude nebo ChatGPT zeptáte na něco, co potřebuje vaše data.
- Váš klient zavolá
POST /api/mcps tělem JSON-RPC, tedy s názvem nástroje a jeho argumenty. Nic dalšího z konverzace se neodesílá. - Middleware požadavek propustí. Na téhle cestě není heslo pro celý web a neloguje se tělo požadavku.
- Ověření tokenu. Token z hlavičky
Authorization: Bearerse zahashuje a vyhledá v databázi. Musí existovat, být neexpirovaný (1 hodina), nezrušený, a jeho příjemce musí sedět na hostitele. Ze záznamu se získá vaše ID uživatele, profil zvolený při souhlasu, oprávnění a ID klienta. - Oprávnění, tarif a token z náhledu. Zápisový nástroj vyžaduje oprávnění
writea tarif Premium nebo Max. Bez kteréhokoli z nich volání skončí chybou a nic se neprovede. Bez obojího se zápisové nástroje klientovi ani nenabídnou. Zápis navíc musí nést potvrzovací token, který vydal jeho náhledový nástroj pro tytéž argumenty v posledních deseti minutách; bez něj, nebo s jinými argumenty, se zápis odmítne. - Spuštění nástroje. Obsluha se dotáže MongoDB s filtrem na vašeho uživatele a profil. Výsledky se poskládají do pevně dané sady polí.
- Audit (jen u zápisů). Název nástroje, ID klienta, výsledek a shrnutí argumentů se uloží do kolekce
mcp_audit_logss expirací po 365 dnech. Částky, kategorie, symboly, data a názvy cílů zůstávají; volný text (popisy, poznámky, obchodník, obsah výpisu) se ukládá jen jako délka, obsah výpisu navíc jako otisk. Samotný záznam nese původ (createdVia: MCP a ID konektoru) a každý seznam, kde se zobrazuje (transakce, obchody, odečty, cennosti, rozpočty), ho označí štítkem „AI“, jehož popisek uvádí kanál a nástroj. - Odpověď. Výsledek v JSON se vrátí klientovi, který ho předá modelu.
Co Assetli vidí a co ne
| Vidí Assetli? | |
|---|---|
| Váš dotaz a odpovědi modelu | Ne. Zůstávají v AI klientovi. |
| Název nástroje a argumenty | Ano, po dobu zpracování požadavku. |
| Argumenty zápisových volání | Ano, jako shrnutí bez volného textu, v auditním logu na 12 měsíců. |
| Argumenty čtecích volání | Neukládají se. |
| Výsledky nástrojů | Spočítají se a vrátí, neukládají se. |
| Identita klienta | Registrovaný název konektoru a jeho ID. V běžných provozních logech hostingu také IP adresa a identifikace prohlížeče serveru AI klienta. |
Věta „vidíme jen to, co při klikání v aplikaci” platí přesně u čtení. U zápisu si Assetli nechává o něco víc než při kliknutí na webu, totiž auditní záznam.
Co vidí poskytovatel AI
Poskytovatel, který provozuje váš model (Anthropic u Claude, OpenAI u ChatGPT, Google u Gemini), vidí vaše dotazy, výsledky nástrojů, a tedy i každé číslo, které nástroj vrátí. S těmi daty se nakládá podle podmínek daného poskytovatele, ne podle podmínek Assetli. Nástroje vracejí táž data, jaká vidíte v aplikaci: zůstatky, transakce s popisem a obchodníkem, pozice, hodnoty a adresy nemovitostí, registrační značky vozidel, dluhy. Nikdy nevracejí čísla účtů, IBAN, hesla, tokeny ani data jiných uživatelů.
Asistent v aplikaci funguje jinak. Tam posílá vaše zprávy a finanční snímek Anthropicu (nebo poskytovateli, jehož klíč jste zadali) samotné Assetli a konverzaci ukládá k vašemu profilu. Viz AI asistent.
Rozsah tokenu
- Jeden uživatel, jeden profil. Token nese profil, který jste zvolili při souhlasu. Konektor profily přepínat nemůže.
- Čtení, nebo zápis. Uděluje se na souhlasné obrazovce, zápis zahrnuje čtení. Server oprávnění kontroluje při každém volání.
- Vázaný na příjemce. Token vydaný pro
assetli.appkterýkoli jiný hostitel odmítne. - Krátce platný. Přístupový token 1 hodinu, obnovovací 60 dní a při každém obnovení se vymění za nový.
- Odvolatelný. Nabídka účtu (vpravo nahoře) → Připojení AI (MCP) vypíše každý konektor a najednou zruší všechny jeho tokeny.
- Bez sdílení tajemství. Klienti jsou veřejní OAuth klienti s PKCE, žádné klientské tajemství neexistuje a vaše heslo Assetli nikdy neopustí.
- Jen endpoint MCP. Token konektoru třetí strany přijímá
/api/mcpa nic jiného. REST API přijímá Bearer tokeny jen od vlastní mobilní aplikace.
Tentýž OAuth server bude vydávat tokeny i pro mobilní aplikaci Assetli, která je zatím ve vývoji. Je to vlastní aplikace, takže souhlasnou obrazovku přeskočí, ale projde stejným přihlášením, stejným PKCE i stejnými kontrolami tokenu.
Logování
Co se zapisuje a kam:
| Log | Obsah | Uchování |
|---|---|---|
| Auditní log MCP (databáze) | Uživatel, profil, ID klienta, název nástroje, úspěch nebo chyba, shrnutí argumentů bez volného textu. Jen zápisy. Vidíte ho v nabídce účtu → Připojení AI (MCP). | 365 dní |
| Provozní log požadavků (Vercel) | Metoda, cesta, stav, doba zpracování, IP klienta. Bez těl požadavků. | Podle nastavení tarifu Vercelu |
| Výstup funkcí (Vercel) | Chybové hlášky, které aplikace vypíše při selhání, například chybu databáze. Ne těla požadavků. | Podle nastavení tarifu Vercelu |
| Administrátorský chybový log (databáze) | Chyby aplikace z vybraných endpointů a z webového rozhraní. Na cestě MCP se nepoužívá. | Spravuje administrátor |
Co tam naopak není:
- Žádný Sentry, Datadog, PostHog ani podobná knihovna v API. Závislost toho druhu v projektu neexistuje.
- Žádný middleware, který by zachytával těla požadavků nebo odpovědí.
- Google Analytics a Microsoft Clarity se načítají jen v prohlížeči na webových stránkách a až po souhlasu s cookies. Provoz API a MCP se k nim nikdy nedostane.
Další propojení
- Wallet by BudgetBakers (Premium): vložíte API token z Walletu, Assetli ho uloží zašifrovaný a z Wallet API pouze čte. Nikdy do Walletu nezapisuje.
- API klíče (
ask_…): samostatný typ klíče jen pro čtení, určený pro endpoint s přehledem v JSON a pro datové API energií. Ukládají se jako otisk SHA-256, dají se omezit na čtení, opatřit expirací a zrušit v Nastavení. Připojení AI je nepoužívá. - Doplněk do Google Sheets: vlastní typ tokenu, který přijímají jen dva endpointy u hypoték. Je vypsaný a odvolatelný na téže stránce připojení.
- Doplněk do prohlížeče pro prověrku nemovitosti: přečte inzerát otevřený ve vašem prohlížeči a jeho text pošle analytickému endpointu. Server na realitní portály sám nechodí.
Vaše práva k datům
- Export: Nastavení → Export dat vytvoří soubor se všemi záznamy, které vlastníte, napříč kolekcemi, bez autentizačních tajemství a dočasných logů.
- Smazání: Nastavení → Smazat účet odstraní uživatele a každý záznam, který je na něj navázaný, včetně záznamů vlastněných skupinami a odkazem Family Legacy a včetně souborů. Vyžaduje se potvrzovací fráze.
Co zatím neumíme
Raději to vypíšeme, než abyste to našli sami.
- Potvrzení se vynucuje jako párování, ne jako souhlas. Server odmítne zápis, který nemá token z odpovídajícího náhledu pro tytéž argumenty z posledních deseti minut. Jestli jste náhled opravdu viděli a řekli ano, je pořád na AI klientovi; Claude i ChatGPT přidávají vlastní dotaz na povolení nástroje.
- Doba uchování logů na straně hostingu závisí na tarifu Vercelu a aplikace ji neřídí.
Hlášení bezpečnostního problému
Napište na info@assetli.app a do předmětu uveďte „security”. Prosíme, netestujte na datech jiných uživatelů.