Bezpieczeństwo agenta AI: uprawnienia, sandboksy i zatwierdzenia

Tłumaczenie automatyczne

Ten artykuł został automatycznie przetłumaczony z angielskiego oryginału.

Bezpieczeństwo agenta AI kontroluje, co aplikacja może czytać, zmieniać i wysyłać. Agent korzystający z narzędzi może przetwarzać prywatne dane, używać danych uwierzytelniających i zmieniać systemy zewnętrzne. Jego dozwolone działania wymagają kontroli w kodzie, nawet gdy odpowiedź modelu wygląda na bezpieczną.

Udostępniaj tylko narzędzia potrzebne do zadania. Sprawdzaj uprawnienia przed każdym wywołaniem narzędzia, izoluj wykonywanie, ograniczaj dane uwierzytelniające i rejestruj wynik. Wymagaj zatwierdzenia działań o dużym wpływie. Filtry tekstowe mogą pomóc wykryć niebezpieczne treści, ale nie zastąpią tych kontroli.

Ta lista kontrolna zakłada, że agent czyta niezaufane dane wejściowe i może uzyskać dostęp do prywatnych danych lub zmieniać systemy zewnętrzne. Wstrzyknięcie instrukcji do promptu to instrukcja w tych danych, która próbuje zmienić zachowanie agenta. Na przykład wyszukany dokument może polecić mu przesłanie prywatnych plików. Ograniczenie narzędzi i żądań wychodzących ogranicza skutki takiej instrukcji.

Kontrole według możliwości

MożliwośćKontrolaCo egzekwować
Dowolne korzystanie z narzędziNajmniejsze uprawnieniaUdostępniaj tylko niezbędne narzędzia, zgodnie z wytycznymi OWASP dotyczącymi MCP.
Odczyt prywatnych danych lub zmiany zewnętrzneKontrole uprawnieńSprawdzaj użytkownika, argumenty, cel i dozwolone działanie bezpośrednio przed wykonaniem.
Kod, pliki lub automatyzacja przeglądarkiSandboksOgraniczaj dostępne pliki, procesy, stan przeglądarki i adresy docelowe ruchu wychodzącego.
Działania o dużym wpływieZatwierdzenie przez człowiekaPokaż dokładny cel i zmianę przed wdrożeniem produkcyjnym, płatnością, usunięciem lub wysłaniem danych na zewnątrz.
Usługi wymagające uwierzytelnieniaDane uwierzytelniające o ograniczonym zakresieOgranicz każdą integrację do niezbędnych zasobów i działań.
Niezaufane serwery MCPIzolacja serwerówPrzeglądaj definicje narzędzi i zapobiegaj przyznawaniu dostępu do innego narzędzia przez instrukcje zwracane przez serwer.
Wykonywanie narzędziŚlady audytoweRejestruj tożsamość, cel, decyzję o uprawnieniach, zatwierdzenie i wynik; maskuj prywatną zawartość danych.
Przetwarzanie danych wejściowych i wyjściowychGuardrailsSprawdzaj zakres ochrony dla każdego narzędzia. Filtr tekstowy nie przyznaje uprawnień ani nie cofa wykonanego działania.
Testy wydania i regresjiTesty atakówTestuj wstrzykiwanie instrukcji do promptu, mylące definicje narzędzi, ujawnianie prywatnych danych i obchodzenie uprawnień.

Co wdrożyć w pierwszej kolejności

Najpierw usuń zbędne możliwości. Jeśli agent nie musi zapisywać danych w GitHub, nie przyznawaj mu tokenu z uprawnieniami zapisu. Jeśli potrzebuje wyłącznie informacji o wolnych terminach w kalendarzu, nie przyznawaj mu pełnego dostępu do skrzynki pocztowej.

Następnie sprawdzaj politykę przed każdym wywołaniem narzędzia. Analizuj nazwę narzędzia, argumenty, zasób docelowy, użytkownika, środowisko i skutek uboczny. Pozornie nieszkodliwa prośba nadal może wygenerować niebezpieczne polecenie powłoki.

Dodaj sandboksy dla wykonywania kodu, automatyzacji przeglądarki, dostępu do plików i przetwarzania niezaufanych dokumentów. Sandboks nie gwarantuje poprawności działania, ale ogranicza szkody wynikające ze zmanipulowanego wyniku narzędzia lub zdezorientowanego modelu.

Kontroluj zarówno przepływ danych, jak i wykonywanie. Ogranicz docelowe adresy ruchu wychodzącego, maskuj sekrety w wynikach narzędzi, oddzielaj niezaufane treści od danych uwierzytelniających i rejestruj próby wysyłania danych na zewnątrz. Sandboks systemu plików, który nadal zezwala na dowolny dostęp do sieci, pozwala na bezpośrednią eksfiltrację danych.

Stosuj zatwierdzenie przez człowieka dla działań nieodwracalnych. Nie zatwierdzaj każdego kroku. Zatwierdzaj konkretne działania o dużym wpływie: wdrożenia produkcyjne, usuwanie danych, wysyłanie wiadomości e-mail, transfery pieniędzy, zmiany uprawnień i decyzje podlegające regulacjom.

Ryzyka specyficzne dla MCP

MCP jest użyteczny, ponieważ standaryzuje dostęp do narzędzi. Jest ryzykowny, ponieważ opisy narzędzi, schematy, tożsamości serwerów, zakresy OAuth i wyniki narzędzi stają się częścią kontekstu decyzyjnego modelu.

W przypadku MCP podczas przeglądu kodu stosowałbym następujące zasady:

  • przeglądaj opisy i schematy narzędzi przed zatwierdzeniem
  • preferuj dane uwierzytelniające o ograniczonym zakresie dla każdego serwera
  • izoluj niezaufane serwery MCP od narzędzi dających dostęp do wrażliwych zasobów
  • monitoruj zmiany definicji narzędzi po instalacji
  • traktuj wynik narzędzia jako niezaufane dane wejściowe
  • rejestruj tożsamości serwerów i narzędzi, decyzje polityk oraz wyniki; przed zapisaniem minimalizuj argumenty i wyniki oraz maskuj ich poufne dane

Guardrails to za mało

Guardrails mogą sprawdzać tekst i wywołania narzędzi. W OpenAI Agents SDK guardrails danych wejściowych narzędzi mogą zablokować chronione narzędzie funkcyjne, zanim zostanie uruchomione. Narzędzia hostowane i wbudowane narzędzia wykonawcze nie korzystają z tego samego potoku, dlatego sprawdzaj zakres ochrony dla każdego udostępnianego narzędzia. Kontrole danych wyjściowych odbywają się po wykonaniu i nie mogą cofnąć skutku ubocznego.

Egzekwuj uprawnienia przed wykonaniem, obok kontroli guardrails. Utrzymuj ograniczony zakres danych uwierzytelniających i izoluj narzędzia, nawet gdy ich dane wejściowe przejdą walidację.

Stosuj się do wytycznych OWASP dotyczących logowania: wykluczaj sekrety i zbędne dane osobowe ze śladów. Ogranicz, kto może odczytywać logi, i ustaw okres przechowywania. Rejestr audytowy powinien umożliwiać odtworzenie działania bez kopiowania wszystkich prywatnych danych.

Dalsza lektura

Materiały referencyjne