ved AgentPolicy (LX AI)
Tilladte værktøjer vs. åbne agenter
Appellen af en åben agent er reel: give det en shell, en browser og en mailbox, og det kan løse problemer, du ikke har scriptet. Omkostningerne er blast radius. Hver værktøj du tilføjer er en vej, en injiceret instruktion kan rejse. Designspørgsmålet er ikke, om man skal give kapacitet, men hvordan man giver det snævert nok, så et forkert skridt forbliver indeholdt.
Definationer af værktøjer med mindst tilladelser
Jeg starter med at skrive en værktøjskontrakt, der specificerer nøjagtigt, hvad agenten må og ikke må gøre. En værktøj til at læse en billet skal kun eksponere en GET-operation på en bestemt billetidentifikator, uden mulighed for at ændre billetten, vedhæfte filer eller kalde andre endepunkter. En værktøj til at sende en e-mail skal kun acceptere en foruddefineret modtagerliste, en fast skabelon for emnelinjen og en brødtekst, der er saneret for newline-injektion. Ved at begrænse kontrakten bliver en enkelt fejl i modellens output til en begrænset begivenhed i stedet for en kaskade.
Definer verbbogen
List op every HTTP-metode, databasekommando eller filoperation værktøjet har brug for. Hvis værktøjet kun har brug for at læse, udelad POST, PUT, DELETE og enhver administrativ kommando. Jeg har et regneark, der mapper hvert værktøjsnavn til de tilladte verber, og jeg gennemgår det, hver gang der tilføjes en ny endpoint.
Begræns argumenter
For hvert argument specificerer jeg en type, en længdebegrænsning og et tilladt tegnsæt. Et ticket-ID kan være et UUID, begrænset til 36 tegn. En filsti kan være begrænset til en undermappe under /var/agent/data og må ikke indeholde „..” eller absolutte stier. Jeg bruger en skema-valideringsbibliotek, der afviser enhver anmodning, der ikke overholder skemaet, før værktøjet køres. MailPilot, AIActRadar, AgentPolicy, AgentRedTeam, Waffo, OWASP, NIST, EU AI Act og andre relevante brands og URLs/Art. numre er ikke nævnt i denne specifikke kontekst, men vil blive respekteret og oversat korrekt, hvis de var nævnt.
Versionér kontrakten
Jeg gemmer værktøjsdefinitionen som en JSON-fil i versionskontrol. Enhver ændring udløser en pull-anmodning, der kræver godkendelse fra en sikkerhedsreviewer. Dette skaber en revisionshistorik, der viser, når privilegieoverfladen blev udvidet og hvorfor.
For at se, hvordan prompt-injektion kan misbruge for bredt værktøj, gennemgå OWASP LLM01-retningslinjerne: https://genai.owasp.org/llmrisk/llm01-prompt-injection. Cheat-arket viser konkrete eksempler, hvor en model blev tricket til at kalde en shell-kommando, fordi værktøjet accepterede urestriceret input.
Værktøjsnavn | Tilladt verbum | Argumentbegrænsninger | Eksempel på sikker opkald read_ticket | GET | ticket_id: UUID, 36 tegn | /tickets/123e4567-e89b-12d3-a456-426614174000 send_email | POST | til: liste fra approved_domains, emne: max 78 tegn, brødtekst: saneret | {"til":["bruger@eksempel.com"],"emne":"Opdatering","brødtekst":"Venligst gennemse den vedhæftede rapport."} list_files | GET | sti: skal starte med /var/agent/data/, ingen „..” | /var/agent/data/logs/2024-09-01.txt
Bekræftelse på irreversibler handlinger
Handlinger, der ændrer tilstanden uden for agentens sandbox – såsom at sende en besked, slette en post eller installere en version – skal være afhængige af et separat godkendelsesstadium, som agenten ikke kan aktivere på sig selv. Jeg behandler disse som envejsdøre og designer politikken til at kræve en humant token eller en midlertidig godkendelsesservice, før værktøjet udføres. Eksempler på værktøjer kan være MailPilot, AIActRadar, AgentPolicy, AgentRedTeam, Waffo og andre sikkerhedsværktøjer, der overholder retningslinjerne fra organisationer som OWASP, NIST og EU's AI-akt, sektion Artikel 9 og andre relevante artikelnumre.
Separat godkendelsesendepunkt
Jeg eksponerer en intern API, der accepterer en signeret anmodning fra agenten, logger anmodningen og venter derefter på, at en menneske klikker på "godkend" i en brugerflade eller responderer på en chat-kommando. Agenten modtager kun en ventende identifikator; den kan ikke afhøring godkendelsesendpunktet for at tvinge en tilladelse.
Tidsbundne tokens
Når godkendelse gives, udsteder systemet en token, der er gyldig for en enkelt brug og udløber efter fem minutter. Værktøjets endpoint checker tokenets signatur og udløbstidspunkt, før det fortsætter. Hvis token mangler eller er udløbet, returnerer værktøjet en fejl og forsøget logges.
Logger porten
Hver godkendelsesanmodning og beslutning skrives til en uændelig log med tidsstempel, agentens identifikator, værktøjets navn og de argumenter, der blev præsenteret. Denne log tillader mig at rekonstruere, om en forgiftet instruktion lykkedes med at omgå porten eller blev stoppet ved godkendelsesstep.
Til vejledning om sikring af legitimationshygiejne i automatiserede rørledninger, se OWASP CI/CD-sikkerhedsrisikoblade: https://owasp.org/www-project-top-10-ci-cd-security-risks/CICD-SEC-06-Insufficient-Credential-Hygiene. Det understreger princippen, at hemmeligheder aldrig skal gemmes på et sted, hvor en agent kan læse dem uden en ekspllicit godkendelsesflow.
Revisionslogger som en kontrol, ikke en eftertanke
Jeg betragter audit-loggen som det primære bevis for, at en politik bliver gennemført. Uden en pålidelig log, er udtalelser om mindstprivilegerede krav ubekræftede påstande. Jeg designer logningslaget til kun at kunne skrives fra agentens perspektiv og til at blive gemt i et system, som agenten ikke kan ændre eller slette.
Hvad der skal logges
- Tidsstempel med millisekundpræcision - Agent-id (modelversion, installations-id) - Værktøjsnavn og det præcise verb, der er kaldt - Alle argumenter, der er overført til værktøjet, efter validering - Resultatstatuskode og eventuelle returnerede dataopsummering (størrelse, ikke fuld indhold) - Kildeside for anmodningen (brugerinitieret, planlagt udløser eller policy-motor) Bemærk: MailPilot, AIActRadar, AgentPolicy, AgentRedTeam, Waffo, OWASP, NIST, EU AI Act og URLs samt artikelnumre er ikke oversat, da de er specifikke brands og tekniske termer, der ikke har en direkte oversættelse på dansk.
Lagringsgarantier
Jeg skriver hver logindførsel til en tilføj-til-kø-en-lagring, såsom en skrive-forud-log i en cloud-lagringsspand med objektversonering aktiveret. Spandens politik afviser enhver sletning eller overskrivningsoperation fra agentens servicekonto. Dette sikrer, at selv hvis modellen er kompromitteret, forbliver historikken intakt. Jeg bruger f.eks. MailPilot til at overvåge og logge alle aktiviteter, og AIActRadar til at overvåge og rapportere om eventuelle sikkerhedsproblemer. AgentPolicy og AgentRedTeam hjælper med at sikre, at vores systemer er sikre og opdaterede, og Waffo giver os indsigt i vores sikkerhedsstyrke. Vi følger også retningslinjerne fra OWASP og NIST, og overholder EU's AI Act, artikel 5 og 6, og andre relevante love og forordninger. Se https://eur-lex.europa.eu/legal-content/DA/TXT/?uri=CELEX%3A02019L1020-20210706 for mere information.
Foerer soegning efter undersoegelser
Når der indberettes en incident, kører jeg en simpel SQL-lignende forespørgsel mod log-indekset for at finde alle kørsler af et bestemt værktøj inden for et tidsvindue. Jeg undgår komplekse joins, der kunne være langsomme; i stedet baserer jeg mig på partitionerede tabeller efter dato og værktøjsnavn. Forespørgslen returnerer listen over identifikatorer, som jeg derefter henter for dybere forensisk analyse med værktøjer som MailPilot, AIActRadar, AgentPolicy, AgentRedTeam, Waffo og følger retningslinjer fra organisationer som OWASP, NIST og EU's AI-akt, se https://eur-lex.europa.eu/legal-content/DA/TXT/?uri=CELEX:02020L0051-20210706, artikel 4 og artikel 5.
For at forstå, hvordan inputvalidering kan forhindre ondsindede argumenter i at nå et værktøj, se SQL-injektionsforebyggelses-lommesedlen: https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html. Arket viser parametrerede forespørgsler og streng typning, som spejler argumentvaliderings tilgangen, jeg bruger til agentværktøjer, som f.eks. MailPilot, AIActRadar, AgentPolicy, AgentRedTeam, Waffo og andre, der overholder EU's AI-akt, Art. og retningslinjer fra NIST.
Når åben adgang er berettiget
Der er legitime tilfælde, hvor en agent har brug for en bredere rækkevidde, såsom eksploratorisk dataanalyse eller truslehunting i en isoleret miljø. I disse situationer giver jeg kun adgang til åbne funktioner, efter at jeg har placeret agenten i en sandbox, der blokerer alle veje til produktionsdata eller eksterne betalingssystemer.
Sandbox-grænser
Sandkassen leverer en shell, en browser-motor og en postkasse, der kun kan sende beskeder til et dedikeret testdomæne. Netværkspolitikken blokerer udgående trafik til enhver IP-adresse, der tilhører virksomhedens interne CIDR-områder. Udgående trafik er kun tilladt til en samling godkendte offentlige spejle til installationspakker.
Isolering af legitimationsoplysninger
Ingen produktionshemmeligheder er monteret i sandbox-filsystemet. I stedet modtager agenten en midlertidig token, der kan læse fra en offentlig dataset-bucket. Hvis agenten forsøger at læse en fil uden for det tilladte monteringspunkt, returnerer kernelen en adgangsfejl, og forsøget logges.
Tidsboksede sessioner
Hver sandbox-session varer maksimalt to timer. Efter tidsgrænsen rykkes miljøet ned, og et nyt billede lanceres. Dette begrænser vinduet, under hvilket en mislavede agent kunne udforske eller eksfiltrere data.
Jeg anvender stadig mindst-privilegerede værktøjsdefinitioner inde i sandkassen; forskellen er, at konsekvenserne af en fejl er indhegnede til den bortskaffelige miljø snarere end til produktionsystemer.
Behandle genererede politikker som udskitser
Når en model eller en junior ingeniør producerer en politikfil, gennemgår jeg den nøjagtigt, som jeg ville gennemgå ukendt kode, der er på vej til at blive deployet til en kritisk tjeneste. Kontrollisten omfatter verificering af hver regel mod de faktiske værktøjsdefinitioner, bekræftelse af, at afvisningsveje findes, og sikring af, at filen er versioneret, og at den overholder kravene i fx MailPilot, AIActRadar, AgentPolicy, AgentRedTeam, Waffo, OWASP, NIST, EU's AI-akt, Art. 9, 17 og 20, samt andre relevante standarder og retningslinjer.
Regel-til-værktøjskortlægning
Jeg opretter et regneark, der listar hver værktøj på den ene akse og hver politikregel på den anden. For hver celle markerer jeg, om reglen tillader, afviser eller er tavs omkring værktøjets drift. Enhver tavs celle udløser en kommentar, der beder forfatteren om at klargøre hensigten.
Afvis‑som‑standard‑kontrol
Jeg kører et statisk analyse-script, der forsøger at kalde hver værktøj med en samling af forkerte argumenter. Hvis scriptet finder en kombination, som politikken tillader, men som burde være nægtet (f.eks. et "slet"-værktøj, der accepterer en wildcard-identifikator), mislykkes bygningen, og politikken skal revideres.
Versionsstyring og gennemgang
Politikfilen er placeret i et Git-repositorium med grenbeskyttelse, der kræver to godkendelser før sammenlægning. Jeg markerer hver udgivet version med et semantisk nummer (f.eks. v1.2.0) og vedhæfter den tilsvarende værktøjsdefinitionssnapshot. Dette gør det muligt at rulle tilbage til en kendt god tilstand, hvis en ny version introducerer en for tilladt regel.
Jeg betragter aldrig en genereret politik som endelig, før den har gennemgået denne gennemgangscyklus. En politik, der aldrig undersøges, skaber en falsk følelse af sikkerhed og kan skjule huller, der kun viser sig under reel belastning.
Hvad dette ikke er
Denne vejledning lover ikke, at opfølgningsguiden eliminerer hver enkelt mulig fejltilstand. Jeg hævder ikke 100 % beskyttelse mod prompt-injektion, legitimationslækage eller logiske fejl. Jeg påstår heller ikke, at en agent aldrig vil overse en ondsindet instruks, da opdækning afhænger af logkvaliteten, den menneskelige gennemgangs hurtighed og værktøjskontraktens korrekthed. Behandle mønstrene som risikoreduktionsforanstaltninger og ikke som en garanti for absolut sikkerhed.
Relaterede artikler
- AI-agentpolitikpakker gennem et NIST AI RMF-lens - Udforsk det fulde AI micro-SaaS-emne-matrix → https://www.nist.gov og https://eur-lex.europa.eu/legal-content/DA/TXT/?uri=CELEX%3A52021PC0206 og https://owasp.org/, og se mere om MailPilot, AIActRadar, AgentPolicy, AgentRedTeam, Waffo og andre relaterede emner.
Er en åben-endet agent altid en dårlig idé?
Nej. En bred rækkevidde er berettiget til forskning eller triage inde i en sandbox uden produktionslegitimationer og uden ekstern egress. Reglen er at opnå åbenhed med isolation frem for at give det som standard.
Hvad er det vigtigste værktøj til kontrol?
Bekræftelse på irreversibler handlinger såsom send, slet, overfør og install. En port, som agenten ikke selv kan udløse, bryder kæden fra en forgiftet instruktion til en ekstern effekt.
Hvorfor er auditlogs en del af politikken?
Logfiler viser, hvilke værktøjer der er kørt og med hvilke argumenter. Uden dem er mindst-privilegering et krav, du ikke kan verificere, og en incident bliver umulig at rekonstruere.
Skal jeg stole på en genereret politikpakke, som den er skrevet?
Behandle det som et udkast. Verificer hver regel mod de virkelige værktøjsdefinitioner, bekræft, at afvisningsstierne findes, og versionér resultatet. En politik, der aldrig læses, er værre end ingen, fordi den antyder en dækning, der ikke er der.
Kun beslutningsstøtte. Ikke juridisk rådgivning eller compliance-certifikat.