Model bezpieczeństwa dla administratorów
Klient AI jest niezaufany. Gateway rozstrzyga każde wywołanie na podstawie tokenu użytkownika i zatwierdzonych polityk, a nic w konfiguracji klienta ani w filtrze adresu /mcp nie poszerza dostępu: filtr tylko zawęża listę narzędzi.
Tokeny i kto je przyjmuje
Dział zatytułowany „Tokeny i kto je przyjmuje”| Token | Wystawia | Przyjmuje | Odbiorca (audience) |
|---|---|---|---|
| Token użytkownika klienta AI | Dostawca tożsamości | Gateway | mcp-gateway. Identyfikator klienta (azp) musi być w MCP_ALLOWED_CLIENTS |
| Token administracyjny | Dostawca tożsamości, wymieniany przez portal | API administracyjne gatewaya | mcp-gateway-admin, z klientem mcp-portal-bff |
| Token administracyjny | Dostawca tożsamości, wymieniany przez portal | Broker poświadczeń | mcp-credential-broker |
| Token wewnętrzny dla serwera | Gateway | Serwer MCP | Identyfikator tego serwera (mcp-<system>) |
Token dostawcy tożsamości nigdy nie trafia do systemu docelowego. Gateway zastępuje go poświadczeniem z brokera, a nagłówki w stronę serwera buduje od zera.
Gateway podpisuje nowy token przy każdym wywołaniu serwera: ES256, ważny 30 sekund, z przeznaczeniem use (call albo policy-data). Serwer odrzuca token z innym odbiorcą lub przeznaczeniem. Serwery pobierają klucze publiczne spod https://<platforma>/.well-known/mcp-jwks.json.
Strony administracji sprawdzają grupę mcp-platform-admin w portalu, a gateway i broker sprawdzają ją jeszcze raz na wymienionym tokenie. API administracyjne gatewaya nasłuchuje tylko na wewnętrznym porcie 8443 i wymaga też certyfikatu klienta portalu. Broker przyjmuje wywołania tylko na porcie 8443 z certyfikatem klienta od wewnętrznego CA (gateway, portal i zadanie offboardingu).
Połączenie z serwerem
Dział zatytułowany „Połączenie z serwerem”Między gatewayem a serwerem nie ma wzajemnego TLS, certyfikatu klienta ani wewnętrznego CA. Zaufanie to to, które zatwierdziłeś dla połączenia (zobacz Jak dodać i zatwierdzić serwer MCP):
- Zaufane CA: certyfikat łączy się z magazynem zaufania gatewaya (plus
MCP_SERVER_TRUSTED_CAS) i zawiera nazwę hosta. - Przypięty certyfikat: dokładnie ten certyfikat, którego odcisk SHA-256 zatwierdziłeś, bez łańcucha i bez sprawdzania hosta. Każdy inny certyfikat jest odrzucany jako Certyfikat zmieniony, dopóki go nie zatwierdzisz.
- Zwykły HTTP: bez szyfrowania. Tylko dla serwera w tej samej sieci Dockera co gateway.
Gateway przed każdym połączeniem odrzuca adresy wskazujące loopback, link-local, adresy nieokreślone, multicast i adresy metadanych chmury. Manifest serwera jest zapisywany tylko wtedy, gdy pochodzi spod adresu, który podałeś. Serwer nie może sam podać systemu i się zatwierdzić: połączenie, polityki i każda definicja narzędzia czekają na Ciebie, a definicja narzędzia jest przypięta skrótem. Inna definicja ukrywa narzędzie, dopóki jej nie zatwierdzisz.
Gdzie są sekrety
Dział zatytułowany „Gdzie są sekrety”- Poświadczenia użytkowników (tokeny, uprawnienia OAuth) są szyfrowane kluczem Transit OpenBao i związane z użytkownikiem oraz systemem. Żaden punkt końcowy nie zwraca sekretu do przeglądarki.
- Sekrety klientów OAuth są w portalu tylko do zapisu. Leżą w OpenBao KV pod
secret/mcp/system-clients/<system>. - Klucze kont serwisowych zapisuje operator w
secret/mcp/service-accounts/<system>. Broker ma tylko prawo odczytu (zobacz Jak dodać i zarządzać systemami). - Jedyny wyjątek od zasady “nigdy nie pokazywane”: ziarno Authenticatora pojawia się raz, przy rejestracji, jego właścicielowi po świeżym MFA.
- Wartości sekretów, tokeny i kody potwierdzeń nie trafiają do logów, audytu ani komunikatów błędów. Zobacz Audyt.
Kto może czytać woluminy OpenBao i jego klucz odpieczętowania, może czytać sekrety. Traktuj host jako granicę zaufania, a co chronić, sprawdź w Kopia zapasowa.
Świeże MFA w administracji
Dział zatytułowany „Świeże MFA w administracji”Te operacje wymagają logowania z drugim składnikiem w ciągu ostatnich 5 minut (auth_time oraz dowód acr albo amr). Jeśli Twoje jest starsze, portal przekierowuje Cię do dostawcy tożsamości i wraca do formularza:
- dodanie, zmiana (poza wyłączeniem) i usunięcie serwera oraz zatwierdzenie jego połączenia;
- zatwierdzenie polityk i zatwierdzenie obniżenia ryzyka;
- zapis mapowania zakresów;
- zapis albo usunięcie systemu;
- zastąpienie lub usunięcie nadpisania oraz zdjęcie wyłącznika awaryjnego;
- rejestracja i usunięcie Twojego Authenticatora.
Wyłączenie serwera lub narzędzia, dodanie nadpisania i Odśwież nie wymagają go. Gateway i broker sprawdzają auth_time i dowód MFA jeszcze raz na wymienionym tokenie, więc dostawca tożsamości musi przenosić te claimy do wymienianych tokenów (zobacz Konfiguracja). Step-up nigdy nie proponuje rejestracji OTP: użytkownik bez OTP jest odrzucany, więc samo hasło nigdy nie osiąga poziomu administratora.
Gdy coś zawodzi
Dział zatytułowany „Gdy coś zawodzi”Platforma zawodzi bezpiecznie (fail closed). Nigdy nie wywołuje serwera bez poświadczenia ani bez kontroli.
| Awaria | Skutek |
|---|---|
| Broker, OpenBao, PostgreSQL, Redis albo klucze dostawcy tożsamości niedostępne | 503 upstream_unavailable, żaden sekret nie jest wydawany |
| Klucz konta serwisowego brakuje, jest uszkodzony albo wygasł | Wywołanie jest odrzucane |
| Brak danych polityk albo są nieaktualne | Wywołanie jest odrzucane |
| Gateway nie może odczytać wyłączników awaryjnych | Każde wywołanie jest odrzucane, katalog odpowiada 503 |
| Certyfikat przypiętego serwera się zmienił | Wywołania są odrzucane, dopóki go nie zatwierdzisz |
| Nieznane narzędzie albo narzędzie, którego użytkownik nie może użyć | Ta sama odpowiedź w obu przypadkach, not_found_or_denied |
Tekst widoczny w portalu
Dział zatytułowany „Tekst widoczny w portalu”Opisy, schematy i podpowiedzi pochodzą z serwerów i systemów, więc to tekst niezaufany. Portal zapisuje ukryte znaki (znaczniki kierunku, znaki zerowej szerokości, znaki sterujące) jako znaczniki [U+XXXX], pokazuje podpowiedzi jako dane, nigdy jako instrukcje, i odrzuca definicję, której skrót nie zgadza się z tym, co pokazuje.
Klucze testowe
Dział zatytułowany „Klucze testowe”Opublikowane klucze testowe kontraktów (test-*, dev-*) są odrzucane, chyba że ustawiono profil deweloperski i jawne potwierdzenie jednocześnie. Nigdy nie ustawiaj ich na produkcji. Gateway zapisuje event=devstack_profile na poziomie WARN, gdy profil jest włączony.
Zgłoś podatność
Dział zatytułowany „Zgłoś podatność”Nie zakładaj publicznego zgłoszenia. Użyj prywatnego zgłaszania podatności w repozytorium komponentu (karta Security, Report a vulnerability) i podaj wersję albo tag obrazu oraz kroki odtworzenia. Nie dołączaj prawdziwych sekretów ani tokenów.
