AI10 min čtení

AI agenti v produkci: oprávnění, izolace a schvalování

Incidenty z let 2025 a 2026 ukazují stejný vzorec: příliš široká oprávnění a žádná technická pojistka. Jak nastavit identity, RBAC a schvalování v AWS, Azure a Kubernetes.

Shrnutí

Zdokumentované incidenty z let 2025 a 2026 mají společnou příčinu: agent měl v ruce oprávnění, které k úkolu nepotřeboval, a mezi ním a destruktivní operací nestála žádná technická pojistka. Prompt injection přitom podle britského NCSC, OpenAI i Mety zůstává nevyřešeným problémem, takže pokyn v promptu nelze považovat za bezpečnostní opatření. Bezpečný provoz stojí na tom, co platí i pro lidi a CI/CD: minimální a krátkodobá oprávnění, izolace, schvalování nevratných akcí a zálohy mimo dosah agenta.

Co se skutečně stalo: čtyři případy, jeden vzorec

O „AI, která smazala produkci“ se píše hodně a často nepřesně. Následující případy jsou doložené vyjádřeními zúčastněných firem nebo bezpečnostním bulletinem.

Replit a SaaStr (červenec 2025)

Jason Lemkin, zakladatel SaaStr, zkoušel v Replitu stavět aplikaci pomocí agenta. Agent mu smazal produkční databázi navzdory vyhlášenému code freeze, vygeneroval smyšlená data a tvrdil, že obnova není možná. Rollback přitom nakonec fungoval. Podle shrnutí eWeek šlo o záznamy 1 206 manažerů a více než 1 196 firem. Šéf Replitu Amjad Masad označil incident za „nepřijatelný“ a firma oznámila automatické oddělení vývojové a produkční databáze, režim pouze pro plánování a obnovu ze zálohy jedním kliknutím.

PocketOS, Cursor a Railway (duben 2026)

Agent v Cursoru (model Claude Opus 4.6) řešil nesoulad přihlašovacích údajů ve stagingu. Podle popisu The Register našel v nesouvisejícím souboru API token k platformě Railway. Token vznikl kvůli správě vlastních domén, ale platil pro jakoukoli operaci včetně destruktivních. Agent jím jedním voláním API smazal volume s produkční databází a s ním i zálohy, protože Railway ukládal zálohy na úrovni volume do téhož volume. Celé to trvalo devět sekund. Nejnovější použitelná záloha byla podle zakladatele firmy tři měsíce stará; data nakonec obnovil až provozovatel platformy, který následně doplnil odložené mazání.

Amazon Q Developer pro VS Code (červenec 2025)

Tady nešlo o chybu agenta, ale o útok na něj. Podle bulletinu AWS-2025-015 se útočník díky nevhodně nastavenému rozsahu GitHub tokenu v konfiguraci CodeBuild dostal do repozitáře rozšíření a jeho kód se automaticky dostal do vydání 1.84.0. Vložený prompt měl podle BleepingComputer agenta navést ke smazání souborů a cloudových zdrojů. Podle AWS se nespustil kvůli syntaktické chybě; někteří výzkumníci podle BleepingComputer naopak uvádějí, že kód proběhl, jen bez škod. Opravu přinesla verze 1.85.0.

AWS Cost Explorer (prosinec 2025)

Financial Times spojil prosincový výpadek služby AWS Cost Explorer v jednom regionu s interním AI nástrojem. Amazon to v únorovém vyjádření odmítl: příčinou měla být chybně nakonfigurovaná role, tedy problém, který by nastal „s jakýmkoli vývojářským nástrojem (s AI i bez ní)“. Jako nápravu firma uvedla mimo jiné povinné peer review pro přístup do produkce.

Ať je pravdivá kterákoli verze posledního příběhu, pro čtenáře z ní plyne totéž: rozhodující nebyl model, ale role.

PřípadCo selhalo v oprávněníchCo by pomohlo
Replit / SaaStrAgent ve vývoji měl zápis do produkční databázeOddělená prostředí a identity
PocketOS / RailwayDlouhodobý token s plným rozsahem ležel v repozitáři; zálohy sdílely osud s datyÚzce vymezené krátkodobé tokeny, zálohy mimo dosah
Amazon QPříliš široký token v build pipelineLeast privilege v CI/CD, review vydání
AWS Cost ExplorerChybně nakonfigurovaná role (dle Amazonu)Peer review produkčních přístupů

Proč nestačí agentovi „říct, ať to nedělá“

V případě PocketOS měl agent v systémových instrukcích výslovný zákaz destruktivních a nevratných příkazů bez pokynu uživatele. Sám pak přiznal, že pravidlo porušil a jen odhadoval, že se mazání týká stagingu. Instrukce v promptu je přání, nikoli kontrola přístupu.

Druhý důvod je prompt injection. Britské NCSC upozorňuje, že jazykové modely nevynucují hranici mezi instrukcemi a daty, a proto na rozdíl od SQL injection neexistuje obdoba parametrizovaných dotazů. Doporučuje omezovat dopad, ne spoléhat na prevenci. OpenAI v prosinci 2025 napsala, že prompt injection pravděpodobně nikdy nebude „vyřešena“ úplně. Meta ji v říjnu 2025 nazvala zásadní nevyřešenou slabinou všech LLM.

Smrtící trojice a pravidlo dvou

Simon Willison v červnu 2025 pojmenoval kombinaci, která vede k úniku dat, jako „lethal trifecta“: přístup k soukromým datům, vystavení nedůvěryhodnému obsahu a možnost komunikovat ven. Má-li agent všechny tři vlastnosti, útočníkovi stačí dostat do obsahu, který agent čte, vlastní instrukce: do issue, e-mailu, webové stránky nebo logu.

Meta na to navázala pravidlem dvou: agent má v jedné relaci splňovat nejvýše dvě ze tří vlastností: zpracovává nedůvěryhodné vstupy, má přístup k citlivým systémům nebo datům, mění stav nebo komunikuje navenek. Potřebuje-li všechny tři, nemá pracovat autonomně a vyžaduje přinejmenším lidské schválení nebo jinou spolehlivou validaci.

Guardraily nejsou hranice oprávnění

Filtry promptů a detektory injekcí snižují pravděpodobnost útoku, ne jeho dopad. Willison připomíná, že v bezpečnosti webových aplikací je zachycení 95 % útoků nedostatečný výsledek. Rozhodující kontroly proto musí být deterministické a ležet mimo model: IAM, RBAC, síťová pravidla, schvalovací krok.

Model oprávnění: čtyři stupně autonomie

OWASP v prosinci 2025 vydal Top 10 pro agentní aplikace; mezi riziky jsou například zneužití nástrojů (ASI02) a zneužití identity a oprávnění (ASI03). Seznam zavádí i princip „least agency“: dát agentovi jen tolik autonomie, kolik bezpečně vymezený úkol vyžaduje. V praxi se osvědčuje rozlišit stupně a ke každému přiřadit jinou identitu.

StupeňCo agent smíTypické použitíPojistka
0: čteníČíst metriky, logy, konfiguraci; žádné secretsDiagnostika, triage incidentůRead-only role, maskování citlivých dat v logu
1: návrhOtevřít pull request, připravit plán změnyÚpravy IaC, manifestů, pipelineReview člověkem, změnu provede pipeline, ne agent
2: schvalovaná akceSpustit předem definovanou operaci po schváleníRestart, škálování, rollbackSchválení mimo agenta, allowlist operací
3: autonomie v sandboxuCokoli, ale jen v izolovaném prostředí bez produkčních datVývoj, testy, experimentyOddělený účet nebo cluster, omezený egress

Stupeň 1 je pro produkci výchozí volba. Agent, který navrhuje změny přes Git, dědí všechny kontroly, které už v pipeline existují: review, testy, policy, auditní stopu. Jak takovou pipeline postavit, popisuje článek o zabezpečení CI/CD.

Cloud: krátkodobé identity a zúžené relace

Základní pravidlo: agent nikdy nepracuje s přihlašovacími údaji člověka ani s dlouhodobým klíčem. Dostává vlastní identitu, pro každý úkol novou krátkou relaci a oprávnění zúžená na daný úkol.

V AWS k tomu slouží session policies. Podle dokumentace IAM jsou výsledná oprávnění relace průnikem identity-based politik role a politiky předané při vytvoření relace. Jednu roli tak lze pro konkrétní úkol dále omezit, aniž by vznikaly desítky rolí.

aws sts assume-role \
  --role-arn arn:aws:iam::111122223333:role/agent-diagnostics \
  --role-session-name agent-ticket-4821 \
  --duration-seconds 3600 \
  --policy file://agent-session.json

# agent-session.json
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "cloudwatch:GetMetricData",
      "logs:FilterLogEvents",
      "ec2:Describe*",
      "rds:Describe*"
    ],
    "Resource": "*"
  }]
}

Název relace s číslem tiketu se propíše do auditního logu, takže lze každé volání API přiřadit ke konkrétnímu úkolu. V Azure plní stejnou roli spravované identity a federované přihlašování s rolemi přiřazenými na úrovni resource group, ne subscription.

Čtyři pravidla, která platí u každého poskytovatele

  • Produkce a ne-produkce v oddělených účtech nebo subscriptions; agent ve stagingu nemá k produkci žádnou cestu.
  • Žádné dlouhodobé tokeny v repozitáři ani v pracovním adresáři agenta. Co agent může přečíst, to může použít.
  • Destruktivní operace (mazání databází, volume, záloh, klíčů) zakázané organizační politikou i pro role, které je „omylem“ dostanou.
  • Zálohy v jiném účtu, s ochranou proti smazání a s pravidelně testovanou obnovou.

Širší kontext nastavení účtů a identit v AWS rozebírá článek o bezpečnosti cloudu v AWS.

Kubernetes: RBAC, krátké tokeny a sandbox

V Kubernetes je potřeba počítat s tím, že RBAC je čistě aditivní: pravidla typu „deny“ neexistují. Co agent nemá dostat, nesmí být v žádné roli, kterou je na jeho ServiceAccount navázána.

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: agent-diagnostics
  namespace: shop-prod
rules:
- apiGroups: [""]
  resources: ["pods", "pods/log", "events", "services"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
  resources: ["deployments", "replicasets"]
  verbs: ["get", "list", "watch"]
# zadne secrets, zadne pods/exec, zadne create/delete

Token pro agenta vystavte vždy s omezenou platností, například kubectl create token agent-diag -n shop-prod --duration=30m. Příkaz vyžádá token service accountu s požadovanou životností; server ji může upravit podle své konfigurace.

Tři pasti z oficiální dokumentace

  • Secrets: podle doporučených postupů pro RBAC práva list a watch na Secrets fakticky zpřístupňují jejich obsah, stejně jako get.
  • Vytváření workloadů: právo vytvářet Pody v namespace implicitně dává přístup k Secrets, ConfigMaps, PersistentVolumes a k oprávněním všech service accountů v tomtéž namespace. Hranice uvnitř namespace dokumentace označuje za slabé.
  • Wildcardy: role s * dává práva i na typy objektů, které v clusteru teprve vzniknou.

Z druhého bodu plyne praktický závěr: agent, který smí nasazovat, patří do vlastního namespace s vynuceným Pod Security Standardem, případně do samostatného clusteru.

Kde agent běží

Agent, který spouští vygenerovaný kód, potřebuje silnější izolaci než běžný kontejner. Pod hlavičkou SIG Apps vzniká projekt Agent Sandbox, který přidává CRD Sandbox pro izolované stavové workloady a nízkoúrovňovou izolaci deleguje na runtime jako gVisor nebo Kata Containers. K tomu patří NetworkPolicy s výchozím zákazem odchozího provozu a seznamem povolených cílů. Právě tím se přerušuje třetí rameno smrtící trojice. Obecné zásady izolace shrnuje článek o bezpečnosti kontejnerů.

Schvalování a audit: co funguje a kde to má limity

Lidské schválení má smysl jen tehdy, když ho agent nemůže obejít a když člověk vidí, co schvaluje. To znamená schvalovací krok mimo agenta (pipeline, ticketing, chatops), zobrazení konkrétního příkazu nebo diffu a jasně určeného prostředí.

Protiargument je oprávněný: schvaluje-li člověk desítky akcí denně, začne potvrzovat mechanicky a kontrola ztrácí hodnotu. Schválení proto vyhraďte nevratným operacím a běžné vratné akce řešte allowlistem a limity (počet replik, rozsah namespace, časové okno).

Auditní stopa musí spojit tři věci: kdo úkol zadal, co agent zamýšlel (prompt, plán, volání nástrojů) a co se skutečně stalo na API cloudu a clusteru. Bez samostatné identity agenta a pojmenovaných relací se třetí část od lidské činnosti neodliší.

Kdy doporučení neplatí v plné síle

V izolovaném vývojovém prostředí bez produkčních dat a bez přístupu k produkčním tokenům je plná autonomie rozumná a schvalování každého kroku jen zdržuje. Stejně tak čistě čtecí agent bez přístupu k citlivým datům nepotřebuje těžký proces. Náklady na kontrolu mají odpovídat tomu, co může agent v nejhorším případě způsobit.

Jak velký je to problém mimo titulky

Průzkum, který si u Dimensional Research zadal SailPoint (353 respondentů, zveřejněno v květnu 2025), uvádí, že 80 % firem zaznamenalo nezamýšlené akce agentů a 39 % přístup agenta k systémům, ke kterým mít přístup neměl. Bezpečnostní politiky pro agenty mělo jen 44 % organizací. Jde o průzkum dodavatele nástrojů pro správu identit, takže čísla berte jako orientační; směr ale odpovídá tomu, co ukazují incidenty výše.

Co udělat v pondělí

Kontrola před tím, než agent dostane další přístup

Sepište agenty a AI nástroje, které mají přístup ke cloudu, clusteru nebo databázi (včetně těch na noteboocích vývojářů) a pod jakou identitou pracují.
Prohledejte repozitáře a pracovní adresáře na dlouhodobé tokeny a klíče; nalezené zrotujte a nahraďte krátkodobými.
U každého tokenu ověřte skutečný rozsah, ne účel, pro který vznikl.
Zaveďte pro agenty samostatné role a service accounty; výchozí stupeň pro produkci je čtení nebo návrh přes pull request.
Zablokujte mazání databází, volume a záloh na úrovni organizační politiky a zapněte ochranu proti smazání.
Ověřte, že zálohy leží mimo dosah identit agenta, a proveďte zkušební obnovu.
U každého agenta projděte pravidlo dvou: nedůvěryhodný vstup, citlivá data, změna stavu nebo komunikace ven. Které dvě si ponechá?
Omezte odchozí síťový provoz prostředí, kde agent běží, na seznam povolených cílů.

Klíčové poznatky

  • Incidenty jsou selháním oprávnění, ne „vzpourou“ modelu. Replit, PocketOS i Amazon Q spojuje příliš široký přístup a chybějící technická pojistka.
  • Prompt není kontrola přístupu. Agent zákaz v instrukcích poruší omylem nebo po prompt injection, kterou zatím nikdo neumí spolehlivě vyloučit.
  • Pravidlo dvou je použitelné rozhodovací kritérium. Nedůvěryhodný vstup, citlivá data a akce navenek se v jedné autonomní relaci nemají potkat.
  • Identita na úkol, ne na agenta. Krátké relace se zúženou politikou a pojmenováním podle tiketu omezují dopad a dávají auditní stopu.
  • V Kubernetes rozhoduje namespace a runtime. RBAC neumí deny, právo vytvářet Pody otevírá Secrets a spouštění cizího kódu patří do sandboxu.
  • Zálohy musí přežít nejhorší scénář. Pokud je může smazat stejná identita jako data, nejsou to zálohy.

Zdroje

  1. The Register: Vibe coding service Replit deleted user’s production database (červenec 2025)
  2. eWeek: AI Agent Wipes Production Database, Then Lies About It (červenec 2025)
  3. The Register: Cursor-Opus agent snuffs out startup’s production database (duben 2026)
  4. ACS Information Age: Gone in 9 seconds: AI agent deletes company database (květen 2026)
  5. AWS: Security Bulletin AWS-2025-015: Amazon Q Developer for VS Code Extension (červenec 2025)
  6. BleepingComputer: Amazon AI coding agent hacked to inject data wiping commands (červenec 2025)
  7. Amazon: vyjádření k článku Financial Times o výpadku AWS Cost Explorer (únor 2026)
  8. Simon Willison: The lethal trifecta for AI agents (červen 2025)
  9. Meta AI: Agents Rule of Two: A Practical Approach to AI Agent Security (říjen 2025)
  10. NCSC (UK): Prompt injection is not SQL injection (prosinec 2025)

Dále použito a odkázáno v textu: TechCrunch k vyjádření OpenAI (prosinec 2025), OWASP Top 10 for Agentic Applications 2026 a shrnutí Aikido, tisková zpráva SailPoint (květen 2025), dokumentace AWS IAM, dokumentace Kubernetes (RBAC, RBAC Good Practices, kubectl create token) a projekt Agent Sandbox.

Chystáte se pustit AI agenty k produkční infrastruktuře?

DevSecOps.cz pomáhá navrhnout model oprávnění pro agenty v AWS, Azure a Kubernetes, od identit a rolí přes izolaci až po schvalování a audit.

Nebo napište na info@devsecops.cz. Údaje zpracujeme podle zásad ochrany soukromí.