Przejdź do głównej zawartości

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.

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).

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.

  • 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.

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.

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

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.

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.

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.