Twoja instancja RDS nie ma publicznego endpointu.
Sięgnij po nią przez AWS SSM, bez bastionu.
AgentsRoom otwiera do Twojej bazy sesję przekierowania portów AWS Session Manager i przez nią podłącza swojego klienta SQL. Sesja uruchamia aws ssm start-session z dokumentem AWS-StartPortForwardingSessionToRemoteHost, autoryzowana profilem AWS skonfigurowanym już na Twojej maszynie.
Baza zostaje w swojej prywatnej podsieci, grupa bezpieczeństwa pozostaje zamknięta, a nic nowego nie zostaje wystawione do internetu. Zmienia się tylko to, że wreszcie możesz ją odpytać, a razem z Tobą agent AI do kodowania, w trybie tylko do odczytu.
Jak AgentsRoom sięga po instancję RDS w prywatnej podsieci przez AWS Systems Manager, nie otwierając niczego na internet.
Ten układ jest na tyle powszechny, że aż nudny, i na tyle uciążliwy, że potrafi kosztować całe popołudnie. Instancja Amazon RDS siedzi w prywatnej podsieci. Nie ma publicznego endpointu. Jej grupa bezpieczeństwa przyjmuje ruch z aplikacji i z niczego więcej. W całym tym VPC nie ma nigdzie otwartego portu SSH dla ruchu przychodzącego, bo ktoś postąpił słusznie i go zamknął. A teraz musisz zajrzeć do trzech wierszy, żeby zrozumieć błąd.
AWS Systems Manager Session Manager rozwiązuje już kwestię transportu. Zarządzany węzeł EC2 wewnątrz VPC potrafi przekierować lokalny port na Twojej maszynie do trzeciego hosta, który jest dla niego osiągalny, a instancja RDS w prywatnej podsieci jest dokładnie takim hostem. Dokument, który to robi, to AWS-StartPortForwardingSessionToRemoteHost, a polecenie to aws ssm start-session. Nic egzotycznego, nic do zainstalowania na bazie.
AgentsRoom uruchamia to polecenie za Ciebie i podpina na drugim końcu klienta SQL. Raz wybierasz instancję, region i profil, przypinasz do tego połączenie z bazą, a od tej chwili otwarcie bazy to jedno kliknięcie. Sesję autoryzuje Twój własny profil AWS albo logowanie SSO, więc dla samego przeskoku nie jest przechowywany żaden klucz ani żadne hasło.
Zwykłe obejścia zawsze coś kosztują
Trzy odpowiedzi na ten sam problem i cena, jaką każda z nich każe zapłacić.
Host bastionu do utrzymania
Maszyna przeskokowa w publicznej podsieci to serwer, który łatasz, monitorujesz, opłacasz i w końcu o nim zapominasz. Niesie ze sobą otwarty port SSH dla ruchu przychodzącego, listę autoryzowanych kluczy rozjeżdżającą się wraz z rotacją ludzi i grupę bezpieczeństwa, którą od otwarcia na cały świat dzieli jedna nieuważna edycja. Istnieje tylko po to, żeby ktoś mógł od czasu do czasu sięgnąć po bazę.
VPN dla pytania o trzy wiersze
Klient VPN wpuszcza całą Twoją maszynę do sieci po to, żeby odpowiedzieć na pytanie o trzy wiersze. Trzeba go wdrożyć, rozdystrybuować, odnawiać i odbierać, kłóci się z resztą Twojej łączności, a na laptopie krążącym między sieciami to on psuje się pierwszy. Większość zespołów, które go mają, i tak trzyma obok bastion.
Dane logowania rozsyłane w kopiach
Rozwiązanie awaryjne, po które sięgają wszyscy, jest gorsze : endpoint i hasło lądują w wiadomości na czacie, we współdzielonej notatce, w skrypcie wrzuconym przez przypadek do repozytorium albo w prompcie wysłanym do agenta AI. Dostęp rozlewa się po miejscach, których nikt nie śledzi, a odebranie go później oznacza rotację danych logowania i nadzieję, że każda kopia zniknęła.
Od prywatnej instancji RDS do zbioru wyników
Cztery kroki, raz wykonane, a potem to już jedno kliknięcie.
Zapisz połączenie AWS SSM
W menedżerze połączeń dodaj połączenie i ustaw jego transport na AWS SSM. Podajesz identyfikator instancji zarządzanego węzła EC2, który sięga po bazę (i-0123456789abcdef0), swój profil AWS oraz region. Nie ma pola na hasło ani pola na klucz, bo sesję autoryzują dane logowania AWS obecne już na Twojej maszynie.
Dodaj bazę i sięgnij po nią przez to połączenie
Dodaj połączenie MySQL albo MariaDB, wpisując endpoint RDS jako host, a do tego port, użytkownika i nazwę bazy. W polu Połącz przez wybierz zapisane przed chwilą połączenie AWS SSM zamiast Połączenia bezpośredniego. To cała konfiguracja : endpoint pozostaje prywatny, grupa bezpieczeństwa pozostaje zamknięta.
AgentsRoom otwiera sesję
Kiedy otwierasz połączenie, AgentsRoom prosi system operacyjny o wolny port loopback, a następnie uruchamia aws ssm start-session z dokumentem AWS-StartPortForwardingSessionToRemoteHost, przekazując endpoint RDS jako host, port bazy jako portNumber i zarezerwowany port jako localPortNumber. Czeka, aż ten port faktycznie przyjmie połączenie TCP, zanim uzna tunel za gotowy, więc klient nigdy nie łączy się za wcześnie.
Odpytaj ją sam albo pozwól agentowi
Konsola SQL łączy się z 127.0.0.1 na przekierowanym porcie i zachowuje się jak każde inne połączenie : przeglądarka schematu, jedno polecenie naraz, ograniczone zbiory wyników. Agent AI do kodowania może odpytać to samo połączenie przez MCP, tylko do odczytu, nigdy nie dostając hasła. Zamknięcie połączenia ubija razem z nim proces sesji.
Polecenie, które uruchamia AgentsRoom
Nie ma tu żadnego własnościowego protokołu i nic nie jest reimplementowane w JavaScript. AgentsRoom uruchamia AWS CLI jako proces potomny, przekazując argumenty bezpośrednio, a nie przez powłokę, i czyta jego wyjście. Jeśli kiedykolwiek otwierałeś sesję przekierowania portów ręcznie, to jest ta sama linijka, którą już znasz.
aws ssm start-session \
--target i-0a1b2c3d4e5f \
--document-name AWS-StartPortForwardingSessionToRemoteHost \
--parameters host=acme-prod.abc123.eu-west-1.rds.amazonaws.com,\
portNumber=3306,localPortNumber=54321 \
--profile acme-prod --region eu-west-1Identyfikator instancji, endpoint, region i profil pochodzą z zapisanego przez Ciebie połączenia. Port lokalny wybiera system operacyjny w chwili otwarcia.
Przekierowanie do samego zarządzanego węzła, zamiast do bazy stojącej za nim, to ten sam dokument z host=localhost. Dlatego jeden typ połączenia obsługuje zarówno bazę w prywatnej podsieci, jak i usługę działającą na instancji, z którą się łączysz.
Co musi być spełnione, zanim to zadziała
AgentsRoom steruje Twoją konfiguracją AWS, nie zastępuje jej. Pięć rzeczy musi być na miejscu i są to dokładnie te same, których Session Manager wymaga sam z siebie.
AWS CLI na Twojej maszynie
AgentsRoom wywołuje binarkę aws bezpośrednio. Jeśli aws ssm start-session działa w Twoim terminalu, zadziała i tutaj.
Wtyczka session-manager-plugin
Session Manager potrzebuje swojej wtyczki zainstalowanej obok CLI. Bez niej sesja kończy się natychmiast, a AgentsRoom pokazuje Ci błąd wypisany przez CLI, zamiast wisieć w oczekiwaniu.
Działający profil AWS albo logowanie SSO
Autoryzacja pochodzi z Twoich własnych danych logowania, przekazywanych jako --profile i --region. AgentsRoom przechowuje nazwę profilu i region, nigdy klucz, nigdy sekret.
Zarządzany węzeł w VPC
Instancja EC2 zarejestrowana w Systems Manager, z działającym SSM Agent i profilem instancji, który zezwala na sesję. To przez ten węzeł przechodzi ruch, a on sam nie potrzebuje żadnego własnego portu przychodzącego.
Droga z węzła do bazy danych
Grupa bezpieczeństwa bazy musi przyjmować ruch z węzła na porcie bazy, a Twoja polityka IAM musi zezwalać na ssm:StartSession z tym dokumentem. Nic więcej w VPC nie musi się zmieniać.
Co tunel robi, a czego robić odmawia
Właściwości, które decydują o tym, czy taką konfigurację można bezpiecznie zostawić na laptopie.
Wyłącznie loopback
Przekierowany port jest przypięty do 127.0.0.1 i do niczego więcej. Baza osiągana w ten sposób nigdy nie jest ponownie wystawiana w sieci lokalnej, więc Wi-Fi w kawiarni nie zamienia Twojego laptopa w otwarte proxy do produkcji.
Port wybrany przez system
AgentsRoom prosi system operacyjny o wolny port i przekazuje go sesji. Nie ma stałego portu do odgadnięcia, nie ma nic do rezerwowania z góry i nie ma kolizji z niczym, co akurat uruchomiłeś.
Gotowe znaczy gotowe
Tunel zostaje uznany za otwarty dopiero wtedy, gdy lokalny port faktycznie przyjmie połączenie TCP, a jeśli nigdy tego nie zrobi, poddaje się, pokazując błąd wypisany przez CLI. Żadnego arbitralnego czekania, żadnego klienta łączącego się z portem, który jeszcze nie nasłuchuje.
Żadnego klucza ani hasła dla samego przeskoku
Sesję SSM autoryzuje Twój profil AWS albo sesja SSO. AgentsRoom przechowuje identyfikator instancji, nazwę profilu i region, czyli nic, co mógłby odtworzyć ktoś, kto przeczytał tę konfigurację.
Baza pozostaje tylko do odczytu
Połączenie z bazą jest po utworzeniu tylko do odczytu. Zapis wymaga uczynienia tego konkretnego połączenia zapisywalnym oraz wyraźnego potwierdzenia, a połączenie oznaczone jako produkcyjne mówi o tym głośno właśnie w tym potwierdzeniu.
Jedno polecenie na wywołanie
Każde wywołanie niesie dokładnie jedno polecenie, więc nic nie chowa się za średnikiem, a zbiory wyników są ograniczane, żeby szerokie zapytanie nie zalało okna ani kontekstu agenta.
Dlaczego to mniej dostępu, a nie więcej
Tunel brzmi jak dziura i ten odruch jest słuszny : większość sposobów sięgania po prywatną bazę faktycznie poszerza powierzchnię ataku. Ten ją zawęża. Po stronie bazy nic nie zostaje otwarte, w całym VPC nie powstaje żaden port przychodzący, a zarządzany węzeł nie potrzebuje własnego nasłuchu SSH. Ruch wychodzi z węzła do usługi Systems Manager, a Twoja maszyna spotyka go właśnie tam.
Autoryzacja zostaje tam, gdzie Twoja organizacja już nią zarządza. Sesję przyznaje Twoja tożsamość AWS, przez profil albo logowanie SSO skonfigurowane już na maszynie, co oznacza, że jest logowana jak każda inna sesja Session Manager, odbierana w dniu, w którym odbierana jest ta tożsamość, i ograniczana polityką IAM, a nie tym, kto akurat trzyma klucz. AgentsRoom przechowuje identyfikator instancji, nazwę profilu i region : nic z tego nie jest danymi logowania.
Po stronie bazy obowiązują dokładnie te same zabezpieczenia, co przy każdym innym połączeniu w AgentsRoom. Domyślnie tylko do odczytu, jedno polecenie na wywołanie, ograniczone zbiory wyników i flaga produkcji, która utwardza potwierdzenie zapisu. Agent AI odpytujący przez MCP dostaje zbiór wyników, a nigdy hasło, a narzędzie, którym odpytuje, odrzuca wszystko poza odczytem, niezależnie od tego, na co połączenie pozwala człowiekowi.
Tylko MySQL i MariaDB, a PostgreSQL nie jest jednym z nich
Klient bazy danych mówi protokołem sieciowym MySQL, więc działające silniki to MySQL i MariaDB. Na RDS oznacza to RDS for MySQL, RDS for MariaDB oraz edycje zgodne z Aurora MySQL. RDS for PostgreSQL i Aurora PostgreSQL nie są obsługiwane, podobnie jak SQL Server, Oracle, MongoDB czy SQLite. Masz prawo wiedzieć o tym przed pobraniem, a nie po nim.
Sam transport SSM jest niezależny od silnika, bo przekierowuje port TCP. Dla PostgreSQL brakuje klienta na wierzchu, a nie tunelu pod spodem. O tym, który silnik będzie następny, decyduje to, o co proszą ludzie, więc jeśli brakuje Twojego, napisz który na publicznym backlogu, a zostanie policzony.
Poproś o swój silnik bazy danychAgent też może ją odpytać, tylko do odczytu
Gdy połączenie już istnieje, agent AI do kodowania może z niego korzystać przez AgentsRoom MCP, wskazując je po nazwie. db_list zwraca zapisane połączenia i ich metadane, db_schema przechodzi po schematach, tabelach i kolumnach bez linijki SQL, db_query uruchamia jedno polecenie i zwraca ograniczoną liczbę wierszy, a db_connection_new proponuje bazę, której jeszcze nie zapisałeś, wypełniając wstępnie formularz, który sprawdzasz i zapisujesz.
AgentsRoom sam otwiera sesję SSM, gdy agent o to poprosi, więc agent nigdy nie dotyka danych logowania AWS, hasła do bazy ani numeru portu. Z powrotem wraca zbiór wyników. db_query jest tylko do odczytu, niezależnie od tego, na co pozwala połączenie, a ta reguła żyje w aplikacji desktopowej, a nie w procesie MCP, więc obowiązuje nawet wtedy, gdy ktoś namówi agenta, żeby poprosił o coś innego.
Na tym właśnie polega zrobienie tego porządnie. Agent debugujący na replice produkcyjnej w prywatnej podsieci czyta wiersze, które tłumaczą błąd, i nie ma żadnej drogi, żeby je zmienić, żadnych danych logowania, które mogłyby wyciec do jego kontekstu, ani żadnego sposobu, żeby sięgnąć po tę bazę po zamknięciu aplikacji.
FAQ
Jak połączyć się z instancją RDS, która nie ma publicznego endpointu?
Przez sesję przekierowania portów AWS SSM. Zapisz połączenie AWS SSM wskazujące zarządzany węzeł EC2, który sięga po bazę, a potem utwórz połączenie MySQL albo MariaDB z endpointem RDS jako hostem i wybierz to połączenie SSM w polu Połącz przez. AgentsRoom otwiera sesję poleceniem aws ssm start-session i podłącza klienta SQL do przekierowanego portu loopback. Baza nie zyskuje żadnego publicznego endpointu, a jej grupa bezpieczeństwa pozostaje bez zmian.
Którego dokumentu SSM używa AgentsRoom?
AWS-StartPortForwardingSessionToRemoteHost, z host ustawionym na endpoint bazy, portNumber ustawionym na port bazy i localPortNumber ustawionym na port loopback zarezerwowany na Twojej maszynie. Ten dokument przekierowuje przez zarządzany węzeł do trzeciego hosta, czyli dokładnie do takiego przypadku, jakim jest instancja RDS w prywatnej podsieci. Przekierowanie do samego węzła to ten sam dokument z host=localhost.
Czy nadal potrzebuję hosta bastionu?
Nie. Session Manager zastępuje maszynę przeskokową w tym zastosowaniu : zarządzany węzeł nie potrzebuje ani przychodzącego portu SSH, ani publicznego IP, ruch wychodzi z węzła w stronę usługi Systems Manager, a Twoja maszyna dołącza do sesji z zewnątrz. Nie ma listy kluczy do utrzymania ani publicznej podsieci do pilnowania.
Co muszę mieć zainstalowane na swojej maszynie?
AWS CLI i session-manager-plugin, a do tego działający profil AWS albo logowanie SSO. AgentsRoom wywołuje binarkę aws bezpośrednio, więc jeśli aws ssm start-session działa w Twoim terminalu, zadziała i tutaj. Jeśli brakuje wtyczki, sesja kończy się natychmiast, a AgentsRoom pokazuje Ci błąd wypisany przez CLI, zamiast wisieć na niewidocznym pytaniu.
Czy AgentsRoom przechowuje do tego klucz AWS?
Nie. Sesję autoryzują dane logowania AWS skonfigurowane już na Twojej maszynie, przekazywane do CLI jako --profile i --region. AgentsRoom przechowuje identyfikator instancji, nazwę profilu i region, które nie są danymi logowania. Hasło do bazy to osobna sprawa : leży w sejfie zaszyfrowane przez pęk kluczy Twojego systemu i nigdy nie wraca do agenta AI.
Którego portu lokalnego używa tunel i kto może się do niego dostać?
System operacyjny wybiera wolny port w chwili otwarcia, a tunel przypina go wyłącznie do 127.0.0.1. Nic w sieci lokalnej nie może się do niego dostać i nie ma stałego portu do odgadnięcia. Tunel zostaje uznany za gotowy dopiero wtedy, gdy ten port faktycznie przyjmie połączenie TCP, i jest zamykany razem z połączeniem.
Czy to działa z RDS for PostgreSQL?
Nie. Klient bazy danych obsługuje wyłącznie MySQL i MariaDB, więc na RDS oznacza to RDS for MySQL, RDS for MariaDB oraz edycje zgodne z Aurora MySQL. RDS for PostgreSQL i Aurora PostgreSQL nie są dziś obsługiwane, podobnie jak SQL Server, Oracle, MongoDB czy SQLite. Sam tunel SSM przekierowuje port TCP i silnik go nie obchodzi : brakuje klienta na wierzchu. Poproś o silnik na publicznym backlogu, a zostanie policzony.
Czy mogę przekierować do samej instancji EC2 zamiast do bazy danych?
Tak. To ten sam dokument z host=localhost, więc usługa nasłuchująca na zarządzanym węźle jest osiągalna w ten sam sposób. To samo połączenie AWS SSM otwiera też zwykłą sesję terminala na tej instancji, i właśnie tak uruchamia się agenta CLI na maszynie, która w ogóle nie ma przychodzącego portu SSH.
Czy agent AI może odpytać bazę przez tunel?
Tak, tylko do odczytu. Agent wskazuje zapisane połączenie przez AgentsRoom MCP, aplikacja otwiera sesję SSM i sama wykonuje polecenie, a z powrotem wraca wyłącznie zbiór wyników. Agent nigdy nie dostaje profilu AWS, danych logowania do endpointu ani hasła do bazy, a db_query odrzuca wszystko poza odczytem, niezależnie od tego, na co to połączenie pozwala człowiekowi.
Może Cię też zainteresować
Połączenia z bazami danych
Zapisuj swoje połączenia MySQL i MariaDB, sięgaj po bazę w prywatnej podsieci przez tunel SSH albo sesję AWS SSM i pozwól agentom AI odpytywać ją przez MCP. Domyślnie tylko do odczytu, jedno polecenie na wywołanie, ograniczone zbiory wyników, a hasło nigdy nie trafia do agenta.
Połączenia SSH
Zapisuj swoje połączenia SSH, otwieraj wbudowany terminal po SSH i uruchamiaj Claude Code, Codex lub Antigravity CLI bezpośrednio na zdalnym serwerze czy VPS. Uwierzytelnianie kluczem SSH lub hasłem, profile połączeń per projekt, bez osobnego klienta SSH.
Menedżer sekretów
Przechowuj klucze API, tokeny i hasła w pęku kluczy swojego systemu, odwołuj się do nich przez {{secret:NAME}} w komendach dev i środowiskach agentów, a AgentsRoom rozwiąże je przy starcie. Agenci widzą nazwy, nigdy wartości, i nic nie jest synchronizowane z serwerem.
Zdalna Flota
Uruchom agentów kodowania Claude, Codex i Antigravity na każdym Macu, który posiadasz, i zaproś współpracowników do współpracy nad tymi samymi agentami w czasie rzeczywistym. Komputer biurowy, komputer domowy, serwer budowy, wspólne projekty zespołowe : wszystko w jednym zintegrowanym, szyfrowanym widoku.
Odpytaj bazę, do której nikt nie może się dostać
Pobierz AgentsRoom, zapisz połączenie AWS SSM, wskaż mu bazę MySQL albo MariaDB i odpytuj swoją prywatną instancję RDS bez bastionu, bez VPN i bez współdzielonego hasła.
Aplikacja towarzyszaca: monitoruj agentów w podrozy
Użyj Claude, Codex, Antigravity CLI lub innego dostawcy AI.
Wysyłaj bugi i prośby bezpośrednio do swojego publicznego backlogu.
Spojrzenie na AgentsRoom w akcji.