Dela via


Agentsäkerhet

Att skapa säkra AI-agenter är ett delat ansvar mellan Agent Framework och programutvecklare. Agent Framework tillhandahåller byggstenarna – abstraktioner, leverantörer och orkestrering – men utvecklarna ansvarar för att validera indata, skydda dataflöden och konfigurera verktyg på lämpligt sätt för sitt scenario.

Den här artikeln beskriver metodtips för att skapa säkra och säkra agenter med Agent Framework.

Förstå förtroendegränser

Data flödar genom flera komponenter när en agent körs: användarindata, leverantörer av chatthistorik, kontextleverantörer, LLM-tjänsten och funktionsverktyg. Varje gräns där data kommer in i eller avslutar ditt program representerar en potentiell attackyta.

Viktiga förtroendegränser att tänka på:

  • AI-tjänst – Tar emot chattmeddelanden (som kan innehålla PII och systeminstruktioner) och returnerar LLM-genererade utdata.
  • Lagring av chatthistorik – Leverantörer kan läsa in och spara konversationsmeddelanden via extern lagring.
  • Kontexttjänster – Kontextleverantörer kan hämta eller lagra data från externa tjänster (minnen, användarprofiler, RAG-resultat).
  • Verktygsåtkomsttjänster – Funktionsverktyg kör kod som tillhandahålls av utvecklare och som kan anropa externa API:er eller databaser.

All extern tjänstkommunikation hanteras av utvecklarvalda klient-SDK:er. Agent Framework hanterar inte autentisering, kryptering eller anslutningsinformation för dessa tjänster.

Metodtips

Verifiera funktionsindata

AI:n kan anropa vilken funktion som helst som du anger som ett verktyg och välja argumenten. Behandla LLM-angivna argument som ej betrodda indata, liknande användarindata i ett webb-API.

  • Använd allow-listing – Verifiera indata mot kända värden i stället för att försöka filtrera kända och dåliga mönster. Kontrollera till exempel att en filsökväg finns i en tillåten katalog istället för att söka efter traversalsekvenser.
  • Framtvinga typ- och intervallbegränsningar – Kontrollera att argumenten är av den förväntade typen och inom godkända intervall (numeriska gränser, stränglängdsgränser, datumintervall).
  • Begränsa stränglängder – Framtvinga maximala längder på strängargument för att förhindra resursöverbelastning eller inmatningsattacker.
  • Förhindra sökvägsbläddering – När funktioner accepterar filsökvägar löser du dem till absoluta sökvägar och kontrollerar att de ligger inom tillåtna kataloger.
  • Använd parametriserade frågor – Om argument används i SQL-frågor, shell-kommandon eller andra tolkade kontexter, använd parametriserade frågor eller escaping – aldrig sammanlänkning av strängar.

Kräv godkännande för högriskverktyg

Som standard anropas alla verktyg som tillhandahålls till en agent utan användarens godkännande. Använd verktygets godkännandemekanism för att låsa högriskåtgärder med mänsklig bekräftelse.

När du bestämmer vilka verktyg som kräver godkännande bör du tänka på följande:

  • Biverkningar – Verktyg som ändrar data, skickar kommunikation, gör inköp eller har andra biverkningar bör i allmänhet kräva godkännande.
  • Datakänslighet – Verktyg som får åtkomst till eller returnerar känsliga data (PII, finansiella data, autentiseringsuppgifter) kräver godkännande.
  • Reversibilitet – Oåterkalleliga åtgärder (radering, att skicka e-post) innebär en högre risk än skrivskyddade frågor.
  • Effektomfång – Verktyg med bred påverkan (massåtgärder) bör kräva mer granskning än begränsade verktyg.

Håll systemmeddelandena utvecklarstyrda

Chattmeddelanden har en roll (system, user, assistant, tool) som avgör hur AI-tjänsten tolkar dem. Det är viktigt att förstå dessa roller:

Befattning Förtroendenivå
system Högsta förtroende – Direkt formar LLM-beteende. Får aldrig innehålla ej betrodda indata.
user Ej betrodd – kan innehålla försök till snabbinmatning eller skadligt innehåll.
assistant Ej betrodd – genereras av LLM, som är ett externt system.
tool Ej betrodd – kan innehålla data från externa system eller användarinfluerat innehåll.

Placera inte slutanvändarindata i system-role-meddelanden. Agent Framework anger otypad text som standard till rollen user, men var försiktig när du konstruerar meddelanden programmässigt.

Leverantörer av veterinära rådgivningstjänster

Kontextprovidrar och historikprovidrar kan mata in meddelanden med valfri roll, inklusive system. Koppla endast leverantörer som du litar på.

Tänk på indirekt promptinjektion: om det underliggande datalagret komprometteras kan adversariellt innehåll påverka beteendet hos LLM. Ett dokument som hämtas via RAG kan till exempel innehålla dolda instruktioner som gör att LLM avviker från avsett beteende eller exfilterar data via verktygsanrop.

Verifiera och sanera LLM-utdata

LLM-svar ska behandlas som ej betrodda utdata. AI-tjänsten är en extern slutpunkt som Agent Framework inte styr. Var medveten om:

  • Hallucination – LLM:er kan generera sannolikt klingande men faktiskt felaktig information. Behandla inte LLM-utdata som auktoritativa utan verifiering.
  • Indirekt promptinmatning – Data som hämtas av verktyg, kontextleverantörer eller chatthistorikleverantörer kan innehålla kontradiktoriskt innehåll som är utformat för att påverka LLM.
  • Skadliga nyttolaster – LLM-utdata kan innehålla innehåll som är skadligt om det återges eller körs utan sanitisering (HTML/JavaScript för XSS, SQL för inmatning, gränssnittskommandon).

Verifiera och sanera alltid LLM-utdata innan du återger det i HTML, kör det som kod, använder det i databasfrågor eller skickar det till någon säkerhetskänslig kontext.

Skydda känsliga data i loggar

Agent Framework stöder loggning och telemetri via OpenTelemetry. Känsliga data loggas endast när de aktiveras explicit.

  • Loggning – På loggnivå Traceloggas den fullständiga ChatMessages samlingen. Detta kan inkludera PII. Trace nivå ska aldrig aktiveras i produktion.
  • Telemetri – När EnableSensitiveData är inställt innehåller telemetri hela texten i chattmeddelanden, inklusive funktionsanrop och resultat. Aktivera inte detta i produktion.

Skydda sessionsinformation

Sessioner (AgentSession) representerar konversationskontext och kan serialiseras för beständighet. Behandla serialiserade sessioner som känsliga data:

  • Sessioner kan referera till konversationsinnehåll eller sessionsidentifierare.
  • Att återställa en session från en ej betrodd källa motsvarar att acceptera ej betrodda indata. En komprometterad lagringsserverdel kan ändra roller för att eskalera förtroendet.
  • Lagra sessioner i säker lagring med lämpliga åtkomstkontroller och kryptering.

Implementera resursgränser

Agent Framework har inga begränsningar för indata-/utdatalängden eller begärandefrekvenserna, eftersom det inte vet vad som är rimligt för ditt scenario. Du ansvarar för:

  • Gränser för indatalängd – Begränsa indatalängden för att förhindra kontextspill eller DoS-attacker.
  • Utdatalängdsgränser – Använd tjänstspecifika gränser (till exempel MaxOutputTokens i chattalternativ).
  • Hastighetsbegränsning – Använd hastighetsbegränsning för att förhindra kostnadsöverskridanden och missbruk från samtidiga begäranden.

Nästa steg