Przejdź do głównej treści
Gdy agent zostaje przejęty — prompt injection, zatruty wynik narzędzia, rozbiegana pętla — to, co faktycznie może zrobić, jest ograniczone dokładnie jedną rzeczą: tym, co jego kluczowi API wolno było robić. Klucz bez limitów i bez polityki zamienia jednego skompromitowanego agenta w incydent obejmujący całą przestrzeń roboczą. Ta strona to przebieg utwardzania, który uruchamiasz wobec każdego klucza, zanim trafi na produkcję, i ponownie w rytmie później. Jest celowo krótka: jedna lista kontrolna, jeden przepracowany przykład, potem linki do głębi dla każdego pola. Po model myślowy za nią, zacznij od Zakres i klucze; po referencję pole po polu, zobacz przegląd kluczy.

1. Lista kontrolna minimalnych uprawnień

Przepuść każdy klucz — nowy czy istniejący — przez tych sześć bramek w edytorze klucza (/console/token). Ustawienie którejkolwiek wymaga roli Developer lub wyższej; dwie płaszczyzny polityk (§5–6) są tworzone osobno, a wiązane tutaj.
Ustaw model_limits na dokładną listę, której ten agent potrzebuje (i włącz model_limits_enabled). Wywołanie dowolnego modelu spoza listy jest odrzucane, zanim opuści bramę, więc przejęty agent nie może eskalować do droższego lub potężniejszego modelu. Sprawdź: czy lista jest tak krótka, jak pozwala zadanie — idealnie jeden model? Głębia: Limity modeli.
Ustaw allow_ips na adresy źródłowe lub CIDR, z których agent faktycznie wywołuje. Wyciekły klucz okazany skądkolwiek indziej jest odrzucany na warstwie uwierzytelniania. Pusty oznacza, że wszystkie IP są dozwolone. Sprawdź: dla agenta o stałym hoście lub zaplanowanego, czy lista jest niepusta i ograniczona do tego egressu? Głębia: Lista dozwolonych IP.
Ustaw credit_limit_usd na pułap, którego agent nigdy nie powinien przekroczyć w swoim okresie życia. Brama egzekwuje go wobec wydatków klucza. 0 oznacza nieograniczone — rozbiegana pętla może wydrenować całe twoje saldo. Sprawdź: czy limit to prawdziwy budżet, a nie 0? Głębia: Kwota, limit i wygaśnięcie.
Ustaw expired_time na bezwzględne wygaśnięcie — koniec sprintu, wdrożenia lub przebiegu CI. -1 oznacza nigdy nie wygasa. Krótkożyciowy klucz nie może zalegać jako zapomniana powierzchnia ataku. Sprawdź: czy efemeryczny lub kontraktorski klucz ma prawdziwe wygaśnięcie, a nie -1? Głębia: Klucze wygasające.
Dołącz guardrail przez guardrail_id, tak by tekst żądania (i, gdzie obsługiwane, odpowiedzi) był prześwietlany pod kątem PII, sekretów i intencji injection, zanim dotrze do modelu. Sprawdź: czy klucz, który obsługuje wrażliwe prompty, ma powiązany guardrail lub dziedziczy domyślny przestrzeni roboczej? Zobacz §5.
Dołącz politykę firewalla przez firewall_policy_id, tak by każde wywołanie narzędzia, dyspozycja MCP i egress, które ten klucz wystawia, były oceniane wobec listy dozwolonych tego, czego agent prawowicie potrzebuje. Sprawdź: czy agent, który wywołuje narzędzia, ma powiązaną politykę firewalla lub dziedziczy domyślną przestrzeni roboczej? Zobacz §6.
Pola powyżej to jedyne dźwignie konfigurowalne przez klienta na kluczu — ustaw je wszystkie w konsoli; nic tutaj nie wymaga zmiany w kodzie agenta. Odczyt klucza pokazuje go zamaskowanym; plaintext jest pokazywany raz przy tworzeniu. Zobacz Maskowanie klucza.

2. Co / jak często / gdzie

Trzy pytania zamieniają listę kontrolną z jednorazowej harówki w postawę.

Co

Sześć bramek powyżej, w kolejności: model_limitsallow_ipscredit_limit_usdexpired_timeguardrail_idfirewall_policy_id.

Jak często

Na każdym kluczu przy tworzeniu i na powracającym przeglądzie — gdy zmienia się zakres agenta, gdy rotujesz klucz i w stałym rytmie dla długożyciowych kluczy.

Gdzie

W edytorze klucza w konsoli (/console/token), jako Developer+. Dwie polityki są tworzone we własnych konsolach, potem wiązane na kluczu.

3. Jeden konkretny klucz o minimalnych uprawnieniach

Zaplanowany agent, który streszcza zgłoszenia wsparcia jednym tanim modelem, z jednego hosta, potrzebuje prawie żadnych uprawnień. W pełni utwardzony klucz:
PoleWartośćDlaczego
model_limitsjeden model do streszczanianie może eskalować do modelu z pierwszej linii
allow_ipsCIDR egressu schedulerawyciekły klucz jest bezużyteczny gdzie indziej
credit_limit_usdtygodniowy pułaprozbiegana pętla nie wydrenuje salda
expired_timekoniec wdrożeniaauto-wygasa, nie może zalegać
guardrail_idguardrail maskujący PIItekst żądania jest prześwietlany
firewall_policy_idlista dozwolonych tylko z jego narzędziamibrak niespodziewanych wywołań narzędzi
Jeśli ten agent zostanie przejęty, wciąż może wywołać tylko jeden model, tylko z jednego zakresu IP, tylko do swojego limitu i tylko narzędzia, na które pozwala jego polityka firewalla. Reszta przestrzeni roboczej jest nietknięta — a ślad audytu firewalla pokazuje dokładnie, do czego był upoważniony.
Klucz bez model_limits, bez allow_ips, z credit_limit_usd: 0, expired_time: -1 i bez załącznika polityki ma maksymalne uprawnienia. Jeśli wycieknie, posiadacz dostaje twoją całą przestrzeń roboczą. Traktuj tę kombinację jako odkrycie, nie domyślną — zobacz nieograniczone vs ograniczone.

4. Wywołanie relay /v1 vs konsola

Lista kontrolna jest konfigurowana w konsoli twoją sesją (użytkownik Developer+). Twój agent nigdy nie dotyka tych tras konfiguracji — okazuje swój klucz relay o ograniczonym zakresie (sk-orca-…) przy wywołaniach inferencji /v1/*, a limity i powiązane polityki powyżej są egzekwowane na każdym z nich.
# Wywołanie runtime agenta — klucz relay, ograniczony powyższą listą kontrolną.
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [{"role": "user", "content": "Summarize this ticket..."}]
  }'
Jeśli model_limits klucza nie zawiera openai/gpt-4o-mini, to wywołanie jest odrzucane, zanim opuści bramę. Jeśli IP wywołującego nie jest w allow_ips, jest odrzucane na warstwie uwierzytelniania. Kod agenta pozostaje ten sam; klucz decyduje o promieniu rażenia.

5. Bramka 5 — powiązany guardrail

guardrail_id wiąże uporządkowaną politykę treści w zakresie przestrzeni roboczej z kluczem. Rozwiązywanie to jawny guardrail klucza (jeśli istnieje i jest włączony), w przeciwnym razie domyślny przestrzeni roboczej, w przeciwnym razie żaden.
Guardrails są ścisłym przełącznikiem wyłączającym, gdy wyłączone: wyłączony lub usunięty guardrail_id oznacza, że klucz dostaje żaden guardrail — nie wraca do domyślnego przestrzeni roboczej. To przeciwieństwo płaszczyzny firewalla (§6), więc zweryfikuj, że powiązany guardrail jest włączony, nie tylko dołączony.
Reguły guardrailu uruchamiają się przed modelem (etap wejścia) i, gdzie obsługiwane, na odpowiedzi (etap wyjścia), z akcjami block, mask lub flag. Preset PII Shield, na przykład, maskuje PII w żądaniu, zanim kiedykolwiek dotrze do modelu. Twórz i dołączaj guardrails jako Developer+ — zobacz Guardrails oraz Powiązanie polityk.

6. Bramka 6 — powiązana polityka firewalla + zakres gateway

firewall_policy_id wiąże politykę wywołań narzędzi w zakresie przestrzeni roboczej. Rządzi akcjami, które podejmuje agent — ogłaszanymi narzędziami, emitowanymi przez model tool_calls, dyspozycjami MCP i wychodzącym egressem — wobec uporządkowanej listy reguł, których werdykty to allow, audit, deny, sanitize, pending_approval lub cap_cost.
Płaszczyzna firewalla rozwiązuje się inaczej niż guardrails: wyłączona dołączona polityka firewalla wraca do domyślnej przestrzeni roboczej, nie wyłącza egzekwowania. Więc powiązanie polityki i wyłączenie jej cofa klucz do domyślnej przestrzeni roboczej — nigdy po cichu nie zostaje bez ochrony.
Najszybszy sposób, by ustawić obie płaszczyzny naraz, to poziom autonomii — pojedynczy przełącznik, który atomowo konfiguruje postawę firewalla i guardrailu twojej przestrzeni roboczej (tight / balanced / permissive), z cofnięciem jednym kliknięciem. Zobacz Firewall §8.
is_firewall_gateway to osobny rodzaj klucza — wybijany wyłącznie dla tras Firewall MCP i evaluate-hook (/api/v1/firewall/*), nigdy do inferencji. Zwykły klucz dostaje 403 na tych trasach, a klucz gateway na ścieżce inferencji jest nadmiernie uprawniony. Włączenie flagi oraz odczyt plaintextu klucza gateway wymagają Admin+. Jeden klucz, jeden cel.

7. Po liście kontrolnej

Baza secure-agents

Rekomendowana postawa początkowa — jeden przełącznik autonomii, potem strój z prawdziwego ruchu.

Powiązanie polityk

Jak guardrail_id i firewall_policy_id dołączają się i rozwiązują.

Nadmierne uprawnienia

Zagrożenie, które ta lista kontrolna ma zawężać.

Wyciekły klucz

Co zrobić w chwili, gdy klucz o ograniczonym zakresie zostanie ujawniony.
Im węższy każdy klucz, tym mniejszy promień rażenia, gdy jakikolwiek agent zostanie skompromitowany — i tym jaśniejszy zapis tego, do czego każdy agent był upoważniony. Uruchom listę kontrolną minimalnych uprawnień na każdym kluczu i nie przestawaj jej uruchamiać.