AI a bezpečnost

AI asistent mi upravuje obsah webu, ale nemá administrátorský účet ani přístup do databáze. V LydiaCMS je to obyčejný uživatel s omezenými oprávněními a všechno, co udělá, se zapíše do auditního logu. Rutinní úpravy textů, SEO a překladů mu proto můžu svěřit a stále vím, co se změnilo.

Co se může pokazit a co s tím systém dělá

Asistent udělá chybu

Každá změna se zapíše do auditního logu se starou a novou hodnotou a administrace ji ukáže jako rozdíl. Vidím tak, kdo změnu provedl a co přesně se v textu změnilo, a špatnou úpravu vrátím jedním kliknutím.

Okno se změnami v auditním logu LydiaCMS: rozdíl názvu stránky a tlačítko Vrátit tuto změnu
Rozdíl změny v historii záznamu s tlačítkem pro její vrácení. Vrácení se zapíše jako nová změna, takže jde samo vrátit zpět.

Změnu jde vrátit jen tehdy, když se záznam od ní nezměnil. Pokud ano, systém vrácení odmítne a vypíše, která pole se mezitím změnila, takže se nepřepíše novější práce. Vracení se týká stránek a dalších obsahových záznamů. U uživatelů a rolí ho záměrně nenabízím.

Asistent chce víc, než smí

MCP server běží pod konkrétním uživatelem a každá operace prochází stejnou kontrolou oprávnění (ACL) jako administrace. Asistent nemůže spravovat uživatele ani role a nikdo nemůže přidělit víc práv, než sám má. Jak se oprávnění dědí po stromě kontextů, popisuje Architektura.

Do obsahu se dostane škodlivý kód

HTML se při ukládání filtruje podle seznamu povolených značek a atributů (HTMLPurifier). Skripty a nepovolené atributy se z obsahu odstraní bez ohledu na to, kdo ho poslal.

Server volá někdo nepovolaný

Nástroje s oprávněním vyžadují sdílený token. Když není token nastavený, server nepustí nikoho. Token se čte z prostředí až při volání, takže nekončí v zkompilovaném DI kontejneru.

Jak to používám

Tímto způsobem upravuju i obsah tohoto webu: texty stránek, jejich SEO vlastnosti (slug, titulek, popis), nahrávání obrázků a překlady. Nástroje vznikají z registrovaných endpointů administračního API a jmenují se podle nich, například core_pages_update nebo core_translations_set. Další balíčky přidávají vlastní nástroje, například správu měst a zemí v balíčku location.

Pod pokličkou: jedno API, dva transporty

  • Lokální STDIO v lydiacms/core. MCP klient spustí lydiacms:mcp přes Docker, CLI nebo SSH, takže není potřeba žádný veřejný HTTP endpoint.
  • Streamable HTTP v lydiacms/api. Stejné schopnosti lze vzdáleně vystavit přes /api/mcp a ověřovat webservice Bearer tokenem. Vzdálený přístup se musí zapnout výslovně.

← LydiaCMS