Indeks dziennikaDockup / notatka terenowa
Note / production-guardrails-for-ai-agents

Produkcyjne mechanizmy ochronne dla AI Agent zapewniające bezpieczną autonomię

Produkcyjne mechanizmy ochronne dla AI Agentów obejmujące sekrety, potwierdzenia, logi audytowe, ograniczony dostęp, ustrukturyzowane błędy i bezpieczne workflow autonomicznego wdrażania.

Produkcyjne mechanizmy ochronne dla AI Agentów muszą działać niezależnie od uprzejmie sformułowanego promptu. Autonomiczny coding agent może pomylić target, ponowić operację, ujawnić dane uwierzytelniające w wyjaśnieniu albo kontynuować działanie po niejednoznacznej odpowiedzi. Bezpieczeństwo produkcyjne musi więc być zapewnione w interfejsie wykonywalnym, modelu autoryzacji i śladzie audytowym — nie tylko w instrukcjach.

Dockup łączy wskazówki dotyczące zachowania zawarte w skillu Claude Code i Codex z egzekwowaniem zasad na poziomie CLI: sekrety są maskowane, destrukcyjne operacje wymagają --yes, błędy zwracają stabilne kody, wdrożenia mogą oczekiwać na stan terminalny, a mutacje pojawiają się w logu audytowym.

Dlaczego mechanizmy ochronne muszą być egzekwowane poniżej promptu?

Prompt jest przydatną polityką, ale nie stanowi granicy bezpieczeństwa. Kontekst agenta może zostać obcięty, instrukcje mogą być sprzeczne, a model może wybrać błędną interpretację. Narzędzie bazowe powinno utrudniać lub całkowicie uniemożliwiać niebezpieczne zachowanie.

Rozważmy żądanie usunięcia. Słaby projekt udostępnia komendę, która od razu usuwa zasoby, i polega na tym, że agent pamięta, by wcześniej poprosić o zgodę. Lepszy projekt odrzuca operację, dopóki nie zostanie podana osobna flaga potwierdzenia.

Dockup stosuje ten silniejszy wzorzec:

dockup up production/api --prune --json

Bez jawnego potwierdzenia destrukcyjne czyszczenie zostaje odrzucone, a JSON zawiera code:"needs_confirm". Nic nie zostaje usunięte. Agent musi przekazać ten wynik człowiekowi, uzyskać zgodę, a następnie świadomie ponowić operację:

dockup up production/api --prune --yes --json

To defense in depth. Skill Dockup instruuje agenta, by się zatrzymał, natomiast CLI zapobiega przypadkowemu wykonaniu operacji nawet wtedy, gdy instrukcja zostanie pominięta.

Jak maskowanie sekretów chroni autonomicznych agentów?

Agenci często umieszczają wynik komendy w swoim rozumowaniu lub odpowiedzi końcowej. Jeśli operacja odczytu zwróci token produkcyjny, sekret może trafić do historii czatu, logów, telemetrii, zrzutów ekranu lub skopiowanych notatek incydentu.

Bezpieczny interfejs konfiguracji oddziela metadane sekretu od jego wartości. Dockup zwraca klucze zmiennych środowiskowych oraz znacznik isSecret, ale zapisane wartości sekretów są równe null albo zamaskowane.

dockup env list -s production/api --json

Agent może ustawić sekret bez późniejszego odczytywania go:

dockup env set API_KEY="$API_KEY" \
  --secret \
  -s production/api \
  --json

Maskowanie sekretów nie eliminuje potrzeby ostrożnego obchodzenia się z procesem. Oryginalna wartość nadal istnieje w środowisku powłoki podczas wykonywania operacji set. Unikaj set -x, nie wyświetlaj zmiennej za pomocą echo i nie twórz ciągów komend, które są przechwytywane przez szczegółowe logowanie.

Hasła do baz danych, klucze API, tokeny rejestrów, dane uwierzytelniające SSH oraz dane uwierzytelniające Windows RDP należy traktować jako dane jednorazowe lub przeznaczone do ograniczonego wyświetlania. Agent powinien przechowywać je w zatwierdzonym menedżerze sekretów albo przekazywać bezpośrednio do kolejnego procesu, bez powtarzania ich w tekście.

Szersze podejście na poziomie aplikacji opisano w artykule security best practices.

Jak powinno działać zatwierdzanie destrukcyjnych operacji?

Nie każda mutacja wymaga takiego samego poziomu formalności. Przydatny model autonomii rozdziela operacje według odwracalności i blast radius:

PoziomPrzykładDomyślne zachowanie agenta
Tylko odczytLista usług, odczyt statusu, wyświetlanie logówWykonaj i podsumuj
Odwracalny zapisUstawienie zmiennej, uruchomienie wdrożeniaWykonaj w zatwierdzonym zakresie
Odzyskiwanie operacyjneRestart, ponowne uruchomienie starszego wdrożeniaWykonaj, jeśli runbook na to pozwala; przedstaw dowody
DestrukcyjneZniszczenie usługi, usunięcie bazy danych, opuszczenie projektuZatrzymaj się i poproś o jawną zgodę
Szeroko destrukcyjneZastosowanie --prune, przekazanie własnościWymagaj potwierdzenia człowieka dotyczącego konkretnego targetu

Jawna zgoda powinna obejmować dokładny target i konsekwencje. „Tak, kontynuuj” jest słabsze niż „Usuń staging/old-api oraz powiązane zasoby usługi”. Agent nie powinien ponownie wykorzystywać zgody udzielonej dla innej komendy lub innego targetu.

Dockup config as code domyślnie działa addytywnie. dockup up nie usunie zmiennych środowiskowych ani domen nieobecnych w manifeście. Usunięcie wymaga jawnej flagi --prune:

dockup plan production/api --json
dockup up production/api --prune --json

Plan jest operacją tylko do odczytu i należy go najpierw przejrzeć. Nawet z użyciem --prune sekrety, usługi, bazy danych i wolumeny są chronione przed tą ścieżką czyszczenia manifestu. Pełny workflow opisano w artykule dockup.yaml config as code.

Jak ustrukturyzowane błędy ograniczają autonomię?

Agent potrzebuje skończonego zestawu bezpiecznych ścieżek działania. Komunikaty w dowolnym formacie są przydatne dla ludzi, ale stabilne kody błędów sprawiają, że pierwsza reakcja jest deterministyczna.

KodPrawidłowa reakcja
not_logged_inZatrzymaj się i uzyskaj prawidłowe dane uwierzytelniające
not_linkedRozwiąż target albo przekaż go jawnie
no_targetUruchom wykrywanie usługi; nigdy nie wymyślaj sluga
needs_confirmPoproś człowieka o zgodę
deploy_trigger_failedPoinformuj, dlaczego nie można było rozpocząć operacji
deploy_failedSprawdź logi buildu
deploy_timeoutZgłoś niepewność, ponieważ nie osiągnięto stanu terminalnego

Wdrożenie powinno korzystać z oczekiwania na stan terminalny:

dockup deploy production/api --wait --json

Domyślny timeout wynosi 900 sekund. Kod wyjścia 0 potwierdza, że wdrożenie zakończyło się powodzeniem. Kod różny od zera uniemożliwia agentowi kontynuowanie zmian w domenie, migracji lub komunikatów tak, jakby produkcja była już gotowa.

Ten projekt omówiono w artykule AI agent CLI design. Zasada jest prosta: narzędzie musi jednoznacznie sygnalizować niejednoznaczny wynik.

Co powinien rejestrować log audytowy?

Autonomia bez przypisania odpowiedzialności jest długiem operacyjnym. Produkcyjny ślad audytowy powinien odpowiadać na pytania: kto wykonał działanie, jakiego interfejsu użył, jaki target został zmieniony, czy operacja była odczytem czy zapisem, kiedy nastąpiła i czy zakończyła się powodzeniem.

Dockup rejestruje działania z CLI, UI i API. Operatorzy mogą sprawdzać ostatnie mutacje:

dockup audit --writes --json
dockup audit --number 30 --json
dockup audit --search domains --json

Raport agenta powinien uzupełniać zapis platformy. Uwzględnij:

  1. Rozwiązany target project/service.
  2. Kategorię komendy, bez wartości sekretów.
  3. Identyfikatory wdrożeń lub zasobów zwrócone przez platformę.
  4. Kod wyjścia i ustrukturyzowany status.
  5. Dowody zebrane po wykonaniu mutacji.
  6. Każdą zgodę otrzymaną na destrukcyjne działania.
  7. Pozostałą niepewność lub dalsze kroki.

Logi audytowe nie służą wyłącznie do szukania winnych po incydencie. Pozwalają drugiemu agentowi lub operatorowi odtworzyć stan bez ponownego wykonywania ryzykownych komend.

Jak zespoły mogą bezpiecznie zwiększać autonomię agenta?

Zacznij od dostępu tylko do odczytu i jednej usługi niskiego ryzyka. Rozszerzaj zakres dopiero wtedy, gdy agent pokaże, że poprawnie wykrywa targety, zachowuje higienę sekretów, rozgałęzia obsługę błędów i tworzy raporty.

Praktyczna ścieżka rozwoju wygląda następująco:

Etap 1: Obserwacja

Zezwól na listowanie usług, odczyt statusu, historię wdrożeń, logi buildu, logi runtime, uptime, odczyt zużycia zasobów i skanów bezpieczeństwa. Porównuj podsumowanie agenta z surowym JSON-em.

Etap 2: Wdrażanie w obrębie stałego targetu

Zezwól na wdrażanie jednej usługi z --wait. Wymagaj health checku i ustrukturyzowanego raportu końcowego. Nie przyznawaj uprawnień do usuwania ani zarządzania zespołem.

Etap 3: Zarządzanie odwracalną konfiguracją

Zezwól na aktualizowanie zmiennych jawnych i sekretów, konfigurację health checków oraz ustawianie niestandardowej domeny zgodnie ze zweryfikowanym runbookiem. Po zmianach środowiska wymagaj ponownego wdrożenia.

Etap 4: Wykonywanie działań naprawczych

Zezwól na restart lub rollback wyłącznie wtedy, gdy agent wybierze dokładny, znany identyfikator wdrożenia i zachowa dowody niepowodzenia.

Etap 5: Destrukcyjne działania wymagające zgody

Pozostaw destrukcyjne flagi za jawną zgodą człowieka, nawet jeśli dane uwierzytelniające technicznie na nie pozwalają. W miarę możliwości używaj ograniczonych kluczy API i regularnie przeglądaj ślad audytowy.

Instalacja skilla agenta wzmacnia te zachowania:

npm install -g dockup-cli
dockup skill install
dockup skill status --json

Dokumentacja Dockup CLI opisuje egzekwowane zachowanie komend. Agent powinien weryfikować lokalny schemat zamiast polegać na zapamiętanym przykładzie.

Lista kontrolna przeglądu mechanizmów ochronnych

Przed przyznaniem dostępu do produkcji odpowiedz na każde pytanie:

  • Czy agent potrafi wykrywać dokładne targety bez zgadywania?
  • Czy wartości sekretów są maskowane we wszystkich ścieżkach odczytu?
  • Czy każda nieudana mutacja zwraca kod różny od zera?
  • Czy długie operacje mogą oczekiwać na stan terminalny?
  • Czy destrukcyjne działania są blokowane bez jawnego potwierdzenia?
  • Czy dane uwierzytelniające są ograniczone i dostarczane poza promptami?
  • Czy każdą mutację można znaleźć w logu audytowym?
  • Czy istnieje przetestowana procedura rollbacku lub odzyskiwania?
  • Czy wersje skilla i pliku wykonywalnego mogą się rozjechać?
  • Czy raport końcowy oddziela fakty od niepewności?

Odpowiedź „nie” oznacza zadanie projektowe, a nie zadanie związane z pisaniem promptów. Autonomia produkcyjna powinna rosnąć wyłącznie wraz ze wzrostem podstawowych gwarancji.

Testuj mechanizmy ochronne jako przypadki awarii

Przegląd jest niepełny, dopóki zespół celowo nie przetestuje granic systemu. Uruchom wdrożenie z nieprawidłowym tokenem, zażądaj nieznanego targetu, doprowadź do niepowodzenia testowego buildu, ustaw bardzo krótki timeout i spróbuj wykonać destrukcyjną komendę bez potwierdzenia. Każdy przypadek powinien skutkować kodem wyjścia różnym od zera, stabilnym kodem, brakiem wycieku sekretu i brakiem niezamierzonej mutacji.

Testy te zamieniają produkcyjne mechanizmy ochronne dla AI Agentów w obserwowalne gwarancje. Powtarzaj je po aktualizacjach CLI lub polityk, tak jak powtarza się testy uwierzytelniania i autoryzacji aplikacji. Mechanizm ochronny istniejący wyłącznie na slajdzie nie zabezpieczy nieuwalnianego bez nadzoru release’u.

Wprowadź workflow na produkcję

Zainstaluj skill, przejrzyj jego instrukcje i przetestuj każdy mechanizm ochronny — w tym zablokowaną destrukcyjną komendę — zanim wydasz token produkcyjny.

npm install -g dockup-cli
dockup skill install

Pierwsza komenda instaluje CLI. Druga instaluje pasujący skill Dockup dla Claude Code i Codex. Zacznij bezpłatnie na app.dockup.ai.

FAQ

Czy same instrukcje w promptach wystarczą, aby zapewnić bezpieczeństwo AI agenta na produkcji?

Nie. Prompty pomagają kierować zachowaniem, ale krytyczne mechanizmy, takie jak maskowanie sekretów, potwierdzenia, autoryzacja, kody wyjścia i logowanie audytowe, muszą być egzekwowane przez narzędzie i platformę.

Jak Dockup blokuje destrukcyjne operacje?

Destrukcyjne komendy odmawiają wykonania bez jawnej flagi --yes i zwracają ustrukturyzowany kod needs_confirm, dzięki czemu agent może się zatrzymać i poprosić człowieka o zgodę.

Czy AI agent może odczytać wartości sekretnych zmiennych środowiskowych z Dockup?

Zapisane wartości sekretów są maskowane w wynikach. Agent widzi klucz i znacznik sekretu oraz może zastąpić wartość, ale nie otrzymuje zapisanej wartości sekretu.

Dlaczego ustrukturyzowane kody błędów są ważne dla autonomii?

Ograniczają agenta do znanych ścieżek odzyskiwania, takich jak żądanie uwierzytelnienia, wykrycie dokładnego targetu, odczyt logów buildu lub prośba o potwierdzenie.

Jak zespół powinien zacząć przyznawać dostęp do produkcji?

Zacznij od operacji tylko do odczytu, następnie zezwól na wdrażanie do jednego targetu niskiego ryzyka, a do odwracalnej konfiguracji i działań naprawczych przechodź dopiero wtedy, gdy agent konsekwentnie przedstawia weryfikowalne dowody.