AI Drupal Hooldus Turvalisus Audit

Kuidas hallata Drupali sisu ChatGPT ja MCP abil

🎧 Kuula kõiki artikleid järjest

Drupali sisu saab masinaga hallata nii, et inimene ei kaota kontrolli. Võti ei ole anda ChatGPT-le kogu admin-liides, vaid luua MCP kaudu kitsad tööriistad: leia artikkel, ava mustand, paku muudatus, valideeri, näita diffi ja lase inimesel avaldamine kinnitada.

ChatGPT, Claude, Codex ja teised AI-tööriistad ei pea piirduma sellega, et nad kirjutavad teksti vestlusaknasse. Õigesti ehitatud liidese kaudu saavad nad küsida saidilt konteksti, leida olemasoleva sisu, pakkuda parandusi ja valmistada ette muudatusi.

Drupaliga on see eriti huvitav, sest Drupalis on sisu tavaliselt juba struktureeritud: sisutüübid, väljad, tõlked, rollid, õigused, töövood, revisions ja logid. See ei tähenda, et AI peaks saama vabalt admin-liideses klõpsida. Pigem vastupidi. Mida võimsam on agent, seda kitsam ja selgem peab olema tööriist, mille kaudu ta tegutseb.

WebPro ehitas hiljuti oma saidile kohaliku MCP töövoo, millega ChatGPT või Codex saab blogiartikleid domeenipõhiste tööriistade kaudu hallata. See ei anna mudelile suvalist failisüsteemi, shelli ega tootmiskeskkonna ligipääsu. Tööriistad on piiratud blogi lähtefailidega ning iga muutus peab läbima valideerimise, buildi, testi, commiti, varukoopia ja deploy.

See on praktiline näide samast suunast, millest kirjutasime artiklis AI-agendid, Drupal ja LLM/GEO-valmidus. Agent-valmidus ei tähenda ainult seda, et leht on masinale loetav. See tähendab ka seda, et masin saab tegutseda ainult lubatud piirides.

Mis on MCP selles kontekstis?

Model Context Protocol (avaneb uues aknas) ehk MCP on viis, kuidas AI-rakendus saab ühenduda väliste süsteemide ja tööriistadega. Spetsifikatsioon eristab kolme tüüpi võimalusi: resources annavad konteksti ja andmeid, prompts kirjeldavad korduvaid töövooge ning tools on funktsioonid, mida mudel saab käivitada.

OpenAI dokumentatsioon kirjeldab sama suunda ChatGPT vaates: MCP-põhised rakendused võivad lubada ChatGPT-l ettevõtte tööriistades tegutseda, sh teatud juhtudel teha ka write või modify toiminguid. Samas rõhutab OpenAI, et selliseid tööriistu tuleb testida, õigustega piirata ja enne tööruumi lubamist üle vaadata. See ei ole tavaline "anna parool ja vaata, mis juhtub" integratsioon.

OpenAI, Anthropic ja Cursor: sama suund eri tööpinnal

Siin ei ole mõistlik rääkida ainult ühest AI-tööriistast. Sama sisutöö võib liikuda mitme tööpinna kaudu.

OpenAI ChatGPT developer mode (avaneb uues aknas) sobib siis, kui sisutoimetaja või projektijuht tahab töötada vestluse kaudu: leia vanad teenuselehed, tee ettepanek metaandmete parandamiseks, valmista mustand ette ja küsi enne muutuse rakendamist kinnitust. OpenAI enda dokumentatsioon ütleb selgelt, et write ja modify tegevused vajavad õiguste, kinnituste ja tööruumi tasemel ülevaatust.

Anthropic tutvustas MCP-d (avaneb uues aknas) algselt avatud standardina, millega AI-rakendused saavad turvalisemalt ühendada andmeallikaid ja tööriistu. Claude ja Claude Code tüüpi töövoogudes on see eriti kasulik siis, kui agent peab lugema projekti konteksti, mõistma sisumudelit ja pakkuma muudatust, mida arendaja või toimetaja enne rakendamist kontrollib.

Cursori MCP tugi (avaneb uues aknas) sobib rohkem arendaja tööpinnale. Kui Drupali sisuloogika, migratsiooniskriptid, JSON:API endpointid või kohandatud admin-tööriistad elavad koodibaasis, saab Cursor MCP kaudu ühendada välise konteksti ja arenduskeskkonna. See ei asenda toimetajat, aga aitab arendajal ehitada paremaid tööriistu, millega toimetaja hiljem turvaliselt töötab.

Praktiline vahe on lihtne:

  • ChatGPT sobib sisutoimetuse ja projektijuhtimise vestlusteks;
  • Claude või Codex sobib pikemate analüüside, koodimuudatuste ja kontrollitud agent-töövoogude jaoks;
  • Cursor sobib arendaja editori sisse, kus MCP saab ühendada koodi, dokumentatsiooni ja tööriistad.

Drupal saidi jaoks ei ole küsimus "milline mudel võidab". Küsimus on selles, kas OpenAI, Anthropic või Cursor saavad kõik sama piiratud ja auditeeritava tööriistakihi kaudu tegutseda. Kui tööriistakiht on hea, võib selle taga olev AI klient ajas muutuda.

Drupali jaoks on MCP kasulik just seetõttu, et me ei pea agenti siduma üldise admin-liidesega. Saame ehitada tööriista, mis räägib Drupali või projekti sisumudeliga täpselt:

  • leia artiklid teema, keele või staatuse järgi;
  • ava konkreetne artikkel koos frontmatteri ja sisuga;
  • loo uus mustand;
  • uuenda ainult lubatud välju;
  • kontrolli, kas tõlge ja alternate-seos on olemas;
  • valideeri sisureeglid;
  • näita eelvaadet;
  • paku avaldamist ainult siis, kui testid läbivad.

Selline piirang ei ole ebamugavus. See on töövoo turvapiir.

Halb lahendus: AI kui admin-kasutaja

Kõige lihtsam, aga kehvem mõte oleks anda AI-le tavalise admin-kasutaja ligipääs ja lasta tal brauseris vorme täita.

See võib demos töötada, kuid päris veebis tekib kiiresti mitu probleemi:

  • agent näeb rohkem, kui tal on vaja;
  • iga UI muudatus võib töövoo katki teha;
  • sisulise vea ja tehnilise vea eristamine on keeruline;
  • muutuse põhjendus ei pruugi jääda auditijälge;
  • õiguste piiramine sõltub liiga palju üldisest admin-rollist;
  • inimene näeb tulemust sageli alles pärast salvestamist.

Drupal admin-liides on mõeldud inimesele. AI-agent vajab teistsugust pinda: väikest hulka hästi kirjeldatud tööriistu, mille sisend ja väljund on masinloetav.

Parem lahendus: domeenipõhised tööriistad

WebPro blogi MCP töövoos on tööriistad nimetatud sisutoimetuse keeles, mitte serveri või failisüsteemi keeles. Näiteks saab agent otsida artikleid, avada konkreetse artikli, luua mustandi, uuendada lubatud välju, valideerida sisu, näidata eelvaadet ning pakkuda avaldamist või avaldamise tagasivõtmist.

See erinevus on oluline. Kui agent saab käsu "paranda see lõik eesti artiklis ja hoia ingliskeelne vaste samaväärne", siis ta ei vaja serverikäskude, failikopeerimise, andmebaasikliendi või suvalise HTTP kliendi ligipääsu. Ta vajab tööriista, mis mõistab artiklit kui artiklit.

Hea MCP tööriist Drupali sisu jaoks peaks tegema vähem, aga täpsemalt:

  • piirama, milliseid sisutüüpe saab muuta;
  • nõudma keele ja slug'i täpsust;
  • tagastama revisioni või muu lukustusmärgi;
  • lubama muutust ainult siis, kui revision klapib;
  • kontrollima frontmatterit, välju ja kohustuslikke linke;
  • looma vaikimisi mustandi, mitte avaldatud sisu;
  • logima, kes või mis tööriist muutuse algatas;
  • jätma inimesele selge ülevaatuse koha.

Meie enda lahenduses ei ole write tööriistadel ligipääsu kogu projektile. Need saavad töötada ainult eesti ja inglise blogi Markdown-failidega. Uue artikli loomine algab mustandina. Olemasoleva artikli muutmisel kasutatakse optimistic lockingut: enne uuendamist tuleb võtta artikli praegune revision ja see uuendamisel kaasa anda. Kui keegi teine jõudis vahepeal sama artiklit muuta, tuleb konflikt välja, mitte ei kirjutata tööd vaikides üle.

Drupal lisab siia töövoo ja õigused

Kui sama põhimõtet rakendada otse Drupal saidis, on kõige olulisem mitte alustada ChatGPT-st, vaid Drupali sisumudelist.

Drupal core'i Content Moderation (avaneb uues aknas) ja Workflows võimaldavad sisule olekuid ja üleminekuid: näiteks draft, review, published ja archived. Agent ei pea saama avaldada. Ta võib luua mustandi, parandada metaandmeid, pakkuda tõlget või märkida lehe ülevaatuseks.

Praktiline rollijaotus võiks olla selline:

  • AI-agent võib lugeda avalikku ja lubatud sisekonteksti;
  • AI-agent võib luua mustandi või muudatusettepaneku;
  • AI-agent ei saa muuta kasutajaõigusi, konfiguratsiooni ega mooduleid;
  • AI-agent ei saa avaldada ilma inimese kinnituseta;
  • toimetaja näeb diffi ja otsustab;
  • arenduse või hooldusega seotud muudatused käivad läbi tavapärase release protsessi.

See mudel sobib eriti hästi organisatsioonidele, kus on mitu keelt, palju teenusekirjeldusi, korduvad metaandmed, vananev dokumentatsioon või suur hulk sisutoimetajaid. Agent aitab järjepidevust hoida, aga ei võta vastutust üle.

Mida saab ChatGPT Drupal sisus päriselt teha?

Kui tööriistad on õigesti ehitatud, saab ChatGPT aidata väga praktilistes töödes.

Sisu leidmine. "Leia kõik teenuselehed, kus räägime Drupal 7 migratsioonist, aga ei viita auditi lehele." Agent ei pea ainult otsima tekstina. Ta saab kasutada sisutüüpi, keelt, taksonoomiat ja välju.

Metaandmete korrastamine. Paljudel saitidel on metakirjeldused ebaühtlased. Agent saab pakkuda paremaid kirjeldusi, aga tööriist saab piirata pikkust, kontrollida dubleerimist ja näidata muudatust enne salvestamist.

Tõlgete võrdlus. Mitmekeelses Drupalis saab agent võrrelda eesti ja inglise versiooni ning märkida, kus faktid erinevad. See ei tähenda automaatset tõlkimist üle olemasoleva teksti. Pigem tähendab see sisulise erinevuse nähtavaks tegemist.

Aegunud info leidmine. Kui artiklis on vana versiooninumber, kuupäev või teenusekirjeldus, saab agent selle esile tuua. Avalikustamine peab siiski käima läbi inimese.

Ligipääsetavuse ja struktuuri kontroll. Agent saab kontrollida, kas piltidel on alt-tekstid, kas pealkirjad on loogilises järjekorras, kas tabelid vajavad selgitust ja kas linkide tekstid on arusaadavad.

Sisutoimetaja töölaud. Agent võib koostada nimekirja lehtedest, mis vajavad ülevaatust: vähese sisuga teenused, vanad uudised, katkised viited, puuduvad tõlked või korduvad pealkirjad.

Need on tööd, kus AI ei pea olema loominguline autor. Ta peab olema järjekindel abiline, kes käib suure hulga sisu läbi ja pakub kontrollitava muudatuse.

Mida ei tohiks AI-le avada?

Kõige olulisemad piirid tasub sõnastada enne esimese MCP tööriista ehitamist.

AI-agent ei peaks vaikimisi saama:

  • muuta rolle ja õigusi;
  • paigaldada või eemaldada mooduleid;
  • käivitada suvalisi käske serveris;
  • lugeda isikuandmeid või vormide tundlikku sisu;
  • muuta makse-, login- või integratsiooniseadeid;
  • avaldada kriitilist sisu ilma ülevaatuseta;
  • kustutada sisu ilma taastamisvõimaluseta.

Kui mõni neist tegevustest on äriliselt vajalik, peab selle jaoks olema eraldi kitsas tööriist, eraldi õigus ja väga selge auditijälg.

Kuidas alustada?

Hea esimene samm ei ole suur AI-projekt. Alustada saab ühest töövoost, mille mõju on selge ja risk piiratud.

Näiteks:

  • artiklite või teenuselehtede metaandmete ülevaatus;
  • tõlgete erinevuste kontroll;
  • vananenud Drupal versiooniinfo leidmine;
  • mustandi loomine olemasoleva sisumudeli järgi;
  • sisulehe eelvaate ja diffi genereerimine enne avaldamist.

Tehniliselt võib see töötada mitmel moel. Staatilises saidis võib MCP tööriist muuta Markdown lähtefaile. Drupal saidis võib tööriist suhelda JSON:API, kohandatud endpointi või Drupali enda sisuloogikaga. Oluline ei ole üks konkreetne protokollikiht, vaid see, et agent ei tegutseks väljaspool sisumudelit, õigusi ja töövoogu.

Kokkuvõte

ChatGPT ja MCP kaudu Drupali sisu haldamine ei tähenda, et AI-st saab admin. Hea lahendus teeb vastupidist: võtab üldise admin-ligipääsu ära ja asendab selle väikeste, täpsete, auditeeritavate tööriistadega.

Drupal sobib selleks hästi, sest tal on juba olemas sisumudelid, rollid, õigused, töövood, revisions, mitmekeelsus ja API-d. MCP annab võimaluse teha need võimalused AI-agentidele arusaadavaks ja kasutatavaks.

WebPro aitab Drupal saitidel selliseid töövooge planeerida, auditeerida ja arendada. Alustada võib Drupal auditist või AI ja Drupal töövoogude ülevaatusest: millist sisu võib masin lugeda, mida ta võib muuta ja kus peab inimene otsuse alles hoidma.

Kaido Toomingas, WebPro tehniline juhtWebPro Company OÜ Tehniline juht: Kaido Toomingas

Vajad Drupal abi?

Saada veebiaadress ja lühike taust. Ütleme, kas järgmine mõistlik samm on audit, hooldus, versiooniuuendus või migratsioon.