Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vytváření zabezpečených agentů AI je sdílená odpovědnost mezi architekturou agentů a vývojáři aplikací. Agent Framework poskytuje stavební bloky – abstrakce, poskytovatele a orchestraci – ale vývojáři zodpovídají za ověřování vstupů, zabezpečení toků dat a konfiguraci nástrojů vhodných pro jejich scénář.
Tento článek popisuje osvědčené postupy pro vytváření bezpečných a zabezpečených agentů pomocí agenta Framework.
Porozumět hranicím důvěry
Data procházejí několika komponentami při spuštění agenta: uživatelský vstup, poskytovatelé historie chatu, poskytovatelé kontextu, služba LLM a nástroje funkcí. Každá hranice, kde data zadávají nebo ukončují vaši aplikaci, představuje potenciální prostor pro útok.
Klíčové hranice důvěry, které je třeba zvážit:
- Služba AI – přijímá zprávy chatu (které mohou zahrnovat PII a systémové instrukce) a vrací výstup vygenerovaný LLM.
- Úložiště historie chatu – Poskytovatelé můžou načítat a uchovávat zprávy konverzace prostřednictvím externího úložiště.
- Kontextové služby – Poskytovatelé kontextu mohou načítat nebo ukládat data z externích služeb (paměti, profily uživatelů, výsledky RAG).
- Služby s přístupem k nástrojům – Nástroje funkcí spouštějí kód zadaný vývojářem, který může volat externí rozhraní API nebo databáze.
Veškerou komunikaci externích služeb zpracovává klientská sada SDK zvolená vývojářem. Agent Framework nespravuje podrobnosti o ověřování, šifrování ani připojení pro tyto služby.
Osvědčené postupy
Validace vstupů funkce
AI může volat libovolnou funkci, kterou zadáte jako nástroj, a zvolit argumenty. Považovat argumenty poskytnuté LLM za nedůvěryhodný vstup, podobně jako vstup uživatele ve webovém rozhraní API.
-
Použití výpisu povolených hodnot – Ověřte vstupy proti známým dobrým hodnotám místo filtrování známých chybných vzorů. Zkontrolujte například, že cesta k souboru je v povoleném adresáři, místo abyste ověřovali sekvence procházení
... - Vynucení omezení typu a rozsahu – Ověřte, zda jsou argumenty očekávaného typu a v rámci přijatelných rozsahů (číselné hranice, limity délky řetězců, rozsahy kalendářních dat).
- Omezte délky řetězců – vynucujte maximální délky u argumentů řetězců, aby se zabránilo vyčerpání prostředků nebo útokům prostřednictvím injektáže.
- Zabránit procházení cest – Když funkce přijímají cesty k souborům, přeloží je na absolutní cesty a ověří, že spadají do povolených adresářů.
- Používejte parametrizované dotazy – pokud se argumenty používají v dotazech SQL, příkazech prostředí nebo jiných interpretovaných kontextech, používejte parametrizované dotazy nebo escaping – nikdy zřetězení řetězců.
Vyžadování schválení u vysoce rizikových nástrojů
Ve výchozím nastavení jsou všechny nástroje poskytované agentům vyvolány bez schválení uživatele. Pomocí mechanismu schvalování nástroje uzamkněte operace s vysokým rizikem za lidské potvrzení.
Při rozhodování, které nástroje vyžadují schválení, zvažte:
- Vedlejší účinky – nástroje, které upravují data, odesílají komunikaci, nakupují nebo mají jiné vedlejší účinky, by obecně měly vyžadovat schválení.
- Citlivost dat – Nástroje, které přistupují k citlivým datům (PII, finanční data, přihlašovací údaje) zaručují schválení.
- Reverzibilita – Nezvratné operace (odstranění, odesílání e-mailů) představují vyšší riziko než dotazy jen pro čtení.
- Rozsah dopadu – Nástroje s rozsáhlým dopadem (hromadné operace) by měly vyžadovat větší kontrolu než úzce vymezené nástroje.
Udržování systémových zpráv řízených vývojářem
Zprávy chatu mají roli (system, user, assistant, tool), která určuje, jak je služba AI interpretuje. Pochopení těchto rolí je důležité:
| Úloha | Úroveň důvěryhodnosti |
|---|---|
system |
Nejvyšší míra důvěry – přímo ovlivňuje chování LLM. Nesmí obsahovat nedůvěryhodný vstup. |
user |
Nedůvěryhodné – může obsahovat pokusy o vložení výzvy nebo škodlivý obsah. |
assistant |
Nedůvěryhodné – vygenerováno LLM, což je externí systém. |
tool |
Nedůvěryhodné – může obsahovat data z externích systémů nebo obsahu ovlivněného uživatelem. |
Neumisťujte vstup koncového uživatele do zpráv s rolí system. Agent Framework nastavuje text bez typu na roli user, ale při programovém vytváření zpráv buďte opatrní.
Poskytovatelé rozšíření pro veterináře
Zprostředkovatelé kontextu a poskytovatelé historie mohou vkládat zprávy s libovolnou rolí, včetně system. Připojte jenom zprostředkovatele, kterým důvěřujete.
Mějte na paměti nepřímé injekce promptů: Pokud dojde ke kompromitaci podkladového úložiště dat, může nepřátelský obsah ovlivnit chování LLM. Například dokument načtený přes RAG může obsahovat skryté instrukce, které způsobí, že LLM se odchyluje od zamýšleného chování nebo exfiltruje data prostřednictvím volání nástrojů.
Ověření a sanitizace výstupu LLM
Odpovědi LLM by se měly považovat za nedůvěryhodný výstup. Služba AI je externí koncový bod, který rozhraní Agent Framework neřídí. Mějte na paměti:
- Halucinace – Velké jazykové modely (LLM) mohou generovat informace, které zní přesvědčivě, ale jsou fakticky nesprávné. Nezacházejte s výstupem LLM autoritativně bez ověření.
- Nepřímá injektáž výzev – Data načtená nástroji, poskytovateli kontextu nebo poskytovateli historie chatu mohou obsahovat škodlivý obsah navržený tak, aby ovlivnil LLM.
- Škodlivé datové části – výstup LLM může obsahovat obsah, který je škodlivý při vykreslení nebo spuštění bez sanitizace (HTML/JavaScript pro XSS, SQL pro injektáž, příkazy prostředí).
Před vykreslením ve formátu HTML vždy ověřte a sanitujte výstup LLM , spusťte ho jako kód, použijte ho v databázových dotazech nebo ho předejte libovolnému kontextu citlivému na zabezpečení.
Ochrana citlivých dat v protokolech
Agent Framework podporuje protokolování a telemetrii prostřednictvím OpenTelemetry. Citlivá data se protokolují jenom v případech, kdy je explicitně povoleno:
-
Protokolování – Na úrovni
Traceprotokolu se zaprotokoluje úplnáChatMessageskolekce. To může zahrnovat osobní identifikovatelné informace (PII).Traceúroveň by nikdy neměla být povolena v produkčním prostředí. -
Telemetrie – Když
EnableSensitiveDataje nastavená, telemetrie zahrnuje celý text zpráv chatu, včetně volání funkcí a výsledků. Nepovolujte to v produkčním prostředí.
Zabezpečení dat relace
Relace (AgentSession) představují kontext konverzace a lze je serializovat pro trvalost. Zacházet se serializovanými relacemi jako s citlivými daty:
- Relace můžou odkazovat na obsah konverzace nebo identifikátory relací.
- Obnovení relace z nedůvěryhodného zdroje je ekvivalentní přijetí nedůvěryhodného vstupu. Ohrožený úložný backend může měnit role k zvýšení úrovně důvěry.
- Ukládejte relace v zabezpečeném úložišti s odpovídajícími kontrolami přístupu a šifrováním.
Implementace limitů prostředků
Agent Framework neukládá omezení pro délku vstupu a výstupu ani četnost požadavků, protože neví, co je pro váš scénář rozumné. Zodpovídáte za:
- Limity délky vstupu – Omezte délku vstupu, abyste zabránili útokům na přetečení kontextu nebo útokům doS.
-
Limity délky výstupu – Použijte limity poskytované službou (například
MaxOutputTokensv možnostech chatu). - Omezování rychlosti – Používejte zařízení pro omezování rychlosti, abyste zabránili překročení nákladů a zneužití souběžných požadavků.