RDS через AWS SSM

Ваш інстанс RDS не має публічної точки входу.
Дістаньтеся його через AWS SSM, без бастіона.

AgentsRoom відкриває до вашої бази даних сесію перенаправлення портів AWS Session Manager і підключає через неї свій SQL-клієнт. Сесія запускає aws ssm start-session з документом AWS-StartPortForwardingSessionToRemoteHost, авторизована профілем AWS, уже налаштованим на вашій машині.

База даних лишається у своїй приватній підмережі, група безпеки лишається закритою, і ніщо нове не відкривається в інтернет. Змінюється тільки те, що ви нарешті можете надсилати до неї запити, і AI-агент для кодування теж, лише для читання.

Перенаправлення портів SSM
Без публічної точки входу
AgentsRoom
127.0.0.1: порт, вибраний ОС
aws ssm start-session
AWS-StartPortForwardingSessionToRemoteHost
Керований вузолi-0a1b2c3d4e5f
RDS MySQL
приватна підмережа: 3306
Резервуємо вільний loopback-порт
Лише loopback, ніколи локальна мережаНі вхідного SSH, ні публічної точки входу

Як AgentsRoom дістається інстанса RDS у приватній підмережі через AWS Systems Manager, нічого не відкриваючи в інтернет.

Конфігурація достатньо поширена, щоб бути нудною, і достатньо болюча, щоб з'їсти півдня. Інстанс Amazon RDS стоїть у приватній підмережі. Публічної точки входу він не має. Його група безпеки приймає трафік від застосунку і більше ні від кого. Вхідного порту SSH немає ніде в цьому VPC, бо хтось учинив правильно і закрив його. А тепер вам треба подивитися на три рядки, щоб зрозуміти баг.

AWS Systems Manager Session Manager уже вирішує питання транспорту. Керований вузол EC2 усередині VPC уміє перенаправити локальний порт на вашій машині до третього хоста, якого сам може дістатися, а саме таким і є інстанс RDS у приватній підмережі. Документ, який це робить, називається AWS-StartPortForwardingSessionToRemoteHost, а команда: aws ssm start-session. Нічого екзотичного, і на базі даних нічого встановлювати не треба.

AgentsRoom виконує цю команду за вас і ставить SQL-клієнт на другому кінці. Ви один раз обираєте інстанс, регіон і профіль, прив'язуєте до нього з'єднання з базою даних, і відтоді відкриття цієї бази: один клік. Сесію авторизує ваш власний профіль AWS або вхід через SSO, тож для самого переходу не зберігається ні ключа, ні пароля.

Звичні обхідні шляхи всі чогось коштують

Три відповіді на одну проблему і ціна, яку бере кожна з них.

Бастіон, який треба обслуговувати

Проміжна машина в публічній підмережі: це сервер, який ви оновлюєте, моніторите, оплачуєте і зрештою забуваєте. Вона несе вхідний порт SSH, список авторизованих ключів, що розповзається, поки люди приходять і йдуть, і групу безпеки, від якої до відкритості всьому світу лишається одне необережне редагування. Існує вона тільки заради того, щоб хтось час від часу міг дістатися бази даних.

VPN заради питання про три рядки

Клієнтський VPN заводить усю вашу машину всередину мережі, щоб відповісти на питання про три рядки. Його треба розгорнути, роздати, поновлювати і відкликати, він свариться з рештою вашого підключення, а на ноутбуці, який кочує між мережами, ламається першим. Більшість команд, які його мають, усе одно тримають бастіон поруч.

Облікові дані, розтягнуті копіями

Альтернатива, до якої всі скочуються, ще гірша: точка входу і пароль опиняються в повідомленні чату, у спільній нотатці, у скрипті, закоміченому випадково, або в підказці, надісланій AI-агенту. Доступ розходиться туди, де його ніхто не відстежує, а щоб відкликати його потім, доводиться робити ротацію облікових даних і сподіватися, що жодної копії не лишилося.

Від приватного інстанса RDS до набору результатів

Чотири кроки, зроблені один раз, а далі: один клік.

01

Збережіть з'єднання AWS SSM

У менеджері з'єднань додайте з'єднання і виберіть для нього транспорт AWS SSM. Ви вказуєте ID інстанса керованого вузла EC2, який може дістатися бази даних (i-0123456789abcdef0), ваш профіль AWS і регіон. Полів для пароля і для ключа немає, бо сесію авторизують облікові дані AWS, уже наявні на вашій машині.

02

Додайте базу даних і діставайтеся її через це з'єднання

Додайте з'єднання MySQL або MariaDB, вказавши точку входу RDS як хост, а також порт, користувача і базу даних. У полі "Діставатися через" виберіть щойно збережене з'єднання AWS SSM замість прямого з'єднання. Це вся конфігурація: точка входу лишається приватною, група безпеки лишається закритою.

03

AgentsRoom відкриває сесію

Коли ви відкриваєте з'єднання, AgentsRoom просить в операційної системи вільний loopback-порт, а потім запускає aws ssm start-session з документом AWS-StartPortForwardingSessionToRemoteHost, передаючи точку входу RDS як host, порт бази даних як portNumber і зарезервований порт як localPortNumber. Він чекає, доки цей порт справді почне приймати TCP-з'єднання, і лише тоді оголошує тунель готовим, тож клієнт ніколи не підключається зарано.

04

Запитуйте самі або дайте запитати агенту

SQL-консоль підключається до 127.0.0.1 на перенаправленому порту і поводиться як будь-яке інше з'єднання: перегляд схеми, одна інструкція за раз, обмежені набори результатів. AI-агент для кодування може надсилати запити до того самого з'єднання через MCP, лише для читання, жодного разу не отримавши пароль. Коли ви закриваєте з'єднання, процес сесії згасає разом із ним.

Що виконується насправді

Команда, яку запускає AgentsRoom

Тут немає ні власного протоколу, ні чогось переписаного на JavaScript. AgentsRoom запускає AWS CLI як дочірній процес, передаючи аргументи напряму, а не через оболонку, і читає його вивід. Якщо ви бодай раз відкривали сесію перенаправлення портів вручну, цей рядок вам уже знайомий.

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-1

ID інстанса, точка входу, регіон і профіль беруться зі збереженого вами з'єднання. Локальний порт обирає операційна система в момент відкриття.

Перенаправлення до самого керованого вузла, а не до бази даних за ним, це той самий документ із host=localhost. Саме тому один тип з'єднання покриває і базу даних у приватній підмережі, і сервіс, що працює на інстансі, до якого ви підключені.

Передумови

Що має бути на місці, щоб це запрацювало

AgentsRoom керує вашою конфігурацією AWS, а не замінює її. П'ять речей мають бути на місці, і це ті самі п'ять, яких Session Manager потребує сам по собі.

  • AWS CLI на вашій машині

    AgentsRoom викликає бінарник aws напряму. Якщо aws ssm start-session працює у вашому терміналі, то працює і тут.

  • Плагін session-manager-plugin

    Session Manager потребує, щоб його плагін був установлений поряд із CLI. Без нього сесія завершується одразу, і AgentsRoom показує вам помилку, яку вивів CLI, замість того щоб зависнути.

  • Робочий профіль AWS або вхід через SSO

    Авторизацію дають ваші власні облікові дані, передані як --profile і --region. AgentsRoom зберігає ім'я профілю і регіон, ніколи ключ, ніколи секрет.

  • Керований вузол у VPC

    Інстанс EC2, зареєстрований у Systems Manager, із запущеним SSM Agent і профілем інстанса, який дозволяє сесію. Це вузол, крізь який іде трафік, і власного вхідного порту йому не потрібно.

  • Шлях від вузла до бази даних

    Група безпеки бази даних має приймати трафік від вузла на порту бази даних, а ваша політика IAM має дозволяти ssm:StartSession із цим документом. Більше нічого у VPC змінювати не треба.

Що тунель робить і що він робити відмовляється

Властивості, від яких залежить, чи безпечно лишати це налаштованим на ноутбуці.

Лише loopback

Перенаправлений порт прив'язаний до 127.0.0.1 і ні до чого більше. База даних, до якої дістаються так, ніколи не публікується заново в локальній мережі, тож Wi-Fi у кав'ярні не перетворює ваш ноутбук на відкритий проксі до продакшну.

Порт, вибраний ОС

AgentsRoom просить в операційної системи вільний порт і передає його сесії. Немає фіксованого порту, який можна вгадати, немає чого резервувати заздалегідь і немає конфлікту з тим, що у вас уже запущене.

Готовий означає готовий

Тунель вважається піднятим лише тоді, коли локальний порт справді приймає TCP-з'єднання, а якщо цього так і не стається, здається з тією помилкою, яку вивів CLI. Ніякого довільного очікування, ніякого клієнта, що підключається до порту, який ще не слухає.

Ні ключа, ні пароля для цього переходу

Сесію SSM авторизує ваш профіль AWS або сесія SSO. AgentsRoom зберігає ID інстанса, ім'я профілю і регіон, і нічого такого, що міг би відтворити той, хто прочитав цю конфігурацію.

База даних лишається лише для читання

Щойно створене з'єднання з базою даних працює лише для читання. Щоб записати, треба зробити саме це з'єднання доступним для запису і явно підтвердити операцію, а з'єднання, позначене як продакшн, каже про це вголос у цьому підтвердженні.

Одна інструкція на виклик

Кожен виклик несе рівно одну інструкцію, тож за крапкою з комою нічого не сховається, а набори результатів обмежені, щоб широкий запит не міг затопити ні вікно, ні контекст агента.

Чому це менше доступу, а не більше

Тунель звучить як діра, і рефлекс правильний: більшість способів дістатися приватної бази даних справді розширюють поверхню атаки. Цей її звужує. З боку бази даних не відкривається нічого, ніде у VPC не з'являється вхідний порт, а керованому вузлу не потрібен власний слухач SSH. Трафік іде від вузла назовні до сервісу Systems Manager, і ваша машина зустрічає його там.

Авторизація лишається там, де ваша організація вже нею керує. Сесію надає ваша ідентичність AWS через профіль або вхід SSO, уже налаштований на машині, а отже, вона логується як будь-яка інша сесія Session Manager, відкликається того самого дня, коли відкликають цю ідентичність, і обмежується політикою IAM, а не тим, у кого випадково опинився ключ. AgentsRoom зберігає ID інстанса, ім'я профілю і регіон: жодне з цього не є обліковими даними.

З боку бази даних діють ті самі запобіжники, які отримує кожне з'єднання в AgentsRoom. Лише для читання за замовчуванням, одна інструкція на виклик, обмежені набори результатів і позначка продакшн, яка робить підтвердження запису суворішим. AI-агент, який надсилає запити через MCP, отримує набір результатів і ніколи пароль, а інструмент, яким він запитує, відхиляє все, крім читання, хоч би що з'єднання дозволяло робити людині.

Що не підтримується

Лише MySQL і MariaDB, і PostgreSQL до них не належить

Клієнт баз даних говорить мережевим протоколом MySQL, тож працюють рушії MySQL і MariaDB. На RDS це означає RDS for MySQL, RDS for MariaDB і сумісні з MySQL редакції Aurora. RDS for PostgreSQL і Aurora PostgreSQL не підтримуються, як не підтримуються SQL Server, Oracle, MongoDB чи SQLite. Ви маєте право знати це до завантаження, а не після нього.

Сам транспорт SSM не залежить від рушія, бо він перенаправляє TCP-порт. Для PostgreSQL бракує клієнта над ним, а не тунелю під ним. Який рушій буде наступним, вирішують запити людей, тож якщо вашого бракує, назвіть його в публічному беклозі, і його порахують.

Попросіть підтримку свого рушія бази даних
AI-агенти + приватні бази даних

Агент теж може надсилати до неї запити, лише для читання

db_listdb_schemadb_querydb_connection_new

Щойно з'єднання існує, AI-агент для кодування може користуватися ним через AgentsRoom MCP, називаючи його на ім'я. db_list повертає збережені з'єднання та їхні метадані, db_schema проходить схеми, таблиці та стовпці без жодного рядка SQL, db_query виконує одну інструкцію і повертає обмежену кількість рядків, а db_connection_new пропонує базу даних, якої ви ще не зберігали, заздалегідь заповнюючи форму, яку переглядаєте і зберігаєте ви.

Коли агент просить, AgentsRoom сам відкриває сесію SSM, тож агент ніколи не має справи ні з обліковими даними AWS, ні з паролем бази даних, ні з номером порту. Назад їде набір результатів. db_query працює лише для читання, хоч би що дозволяло з'єднання, і це правило живе в настільному додатку, а не в процесі MCP, тож воно тримається, навіть якщо агента вмовили попросити щось інше.

Саме заради цього все і робиться як слід. Агент, який шукає баг на продакшн-репліці в приватній підмережі, читає рядки, що пояснюють помилку, і не має ні способу їх змінити, ні облікових даних, які могли б витекти в його контекст, ні шляху дістатися цієї бази, коли додаток закрито.

Часті запитання

Як підключитися до інстанса RDS, який не має публічної точки входу?

Через сесію перенаправлення портів AWS SSM. Збережіть з'єднання AWS SSM, що вказує на керований вузол EC2, здатний дістатися бази даних, а потім створіть з'єднання MySQL або MariaDB з точкою входу RDS як хостом і виберіть це з'єднання SSM у полі "Діставатися через". AgentsRoom відкриває сесію командою aws ssm start-session і підключає SQL-клієнт до перенаправленого loopback-порту. База даних лишається без публічної точки входу, а її група безпеки лишається незмінною.

Який документ SSM використовує AgentsRoom?

AWS-StartPortForwardingSessionToRemoteHost, у якому host дорівнює точці входу бази даних, portNumber дорівнює порту бази даних, а localPortNumber дорівнює loopback-порту, зарезервованому на вашій машині. Цей документ перенаправляє через керований вузол до третього хоста, а це якраз випадок інстанса RDS у приватній підмережі. Перенаправлення до самого вузла: той самий документ із host=localhost.

Чи потрібен мені й далі бастіон?

Ні. Для цього сценарію Session Manager замінює проміжну машину: керованому вузлу не потрібні ні вхідний порт SSH, ні публічна IP-адреса, трафік іде від вузла до сервісу Systems Manager, а ваша машина приєднується до сесії ззовні. Немає ні списку ключів, який треба підтримувати, ні публічної підмережі, за якою треба наглядати.

Що має бути встановлено на моїй машині?

AWS CLI і session-manager-plugin, а також робочий профіль AWS або вхід через SSO. AgentsRoom викликає бінарник aws напряму, тож якщо aws ssm start-session працює у вашому терміналі, то працює і тут. Якщо плагіна бракує, сесія завершується одразу, і AgentsRoom показує вам помилку, яку вивів CLI, замість того щоб зависнути на невидимому запиті.

Чи зберігає AgentsRoom ключ AWS для цього?

Ні. Сесію авторизують облікові дані AWS, уже налаштовані на вашій машині і передані до CLI як --profile і --region. AgentsRoom зберігає ID інстанса, ім'я профілю і регіон, а це не облікові дані. Пароль до бази даних: окрема історія, він лежить у сховищі, зашифрованому через ключове сховище вашої ОС, і ніколи не повертається AI-агенту.

Який локальний порт використовує тунель і хто може до нього дістатися?

Операційна система обирає вільний порт у момент відкриття, а тунель прив'язує його лише до 127.0.0.1. Ніщо в локальній мережі не може до нього дістатися, і немає фіксованого порту, який можна вгадати. Тунель вважається готовим лише тоді, коли цей порт справді приймає TCP-з'єднання, і закривається разом зі з'єднанням.

Чи працює це з RDS for PostgreSQL?

Ні. Клієнт баз даних підтримує лише MySQL і MariaDB, тож на RDS це означає RDS for MySQL, RDS for MariaDB і сумісні з MySQL редакції Aurora. RDS for PostgreSQL і Aurora PostgreSQL сьогодні не підтримуються, як не підтримуються SQL Server, Oracle, MongoDB чи SQLite. Сам тунель SSM перенаправляє TCP-порт, і рушій йому байдужий: бракує саме клієнта над ним. Назвіть потрібний рушій у публічному беклозі, і його порахують.

Чи можу я перенаправити до самого інстанса EC2 замість бази даних?

Так. Це той самий документ із host=localhost, тож сервіс, який слухає на керованому вузлі, досяжний так само. Те саме з'єднання AWS SSM також відкриває звичайну термінальну сесію на цьому інстансі, і саме так ви запускаєте CLI агента на машині, яка взагалі не має вхідного порту SSH.

Чи може AI-агент надсилати запити до бази даних через тунель?

Так, лише для читання. Агент називає збережене з'єднання через AgentsRoom MCP, додаток відкриває сесію SSM і сам виконує інструкцію, а назад їде тільки набір результатів. Агент ніколи не отримує ні профілю AWS, ні облікових даних точки входу, ні пароля бази даних, а db_query відхиляє все, крім читання, хоч би що це з'єднання дозволяло робити людині.

Вам також може сподобатися

З'єднання з базами даних

Зберігайте свої з'єднання з MySQL і MariaDB, діставайтеся бази даних у приватній підмережі через SSH-тунель або сесію AWS SSM і дозвольте своїм AI-агентам надсилати до неї запити через MCP. Лише для читання за замовчуванням, одна інструкція на виклик, обмежені набори результатів, і пароль ніколи не потрапляє до агента.

SSH-з'єднання

Зберігайте ваші SSH-з'єднання, відкривайте вбудований термінал через SSH і запускайте Claude Code, Codex або Antigravity CLI безпосередньо на вашому віддаленому сервері або VPS. Аутентифікація за ключем SSH або паролем, профілі з'єднань для кожного проєкту, окремий SSH-клієнт не потрібен.

Менеджер секретів

Зберігайте API-ключі, токени та паролі в ключовому сховищі вашої ОС, посилайтеся на них як {{secret:NAME}} у командах розробки та середовищах агентів, а AgentsRoom підставить значення під час запуску. Агенти бачать імена, але ніколи не значення, і нічого не надсилається на сервер.

Remote Fleet

Запускайте Claude, Codex та Antigravity агентів на кожному Mac, який ви маєте, та запрошуйте колег співпрацювати над тими ж агентами в реальному часі. Офісний комп'ютер, домашній комп'ютер, сервер для збірки, спільні командні проекти: все в єдиному уніфікованому, наскрізь зашифрованому вигляді.

Надсилайте запити до бази даних, до якої ніхто не дістанеться

Завантажте AgentsRoom, збережіть з'єднання AWS SSM, спрямуйте через нього базу даних MySQL або MariaDB і надсилайте запити до свого приватного інстанса RDS без бастіона, без VPN і без спільного пароля.

БезкоштовноЗавантажити

Додаток-компаньйон: контролюйте своїх агентів на ходу

Використовуйте свого: Claude, Codex, Antigravity CLI або іншого AI-провайдера.

Отримати розширення
Chrome Web Store

Надсилайте баги та запити прямо у свій публічний беклог.

Погляд на AgentsRoom в дії.

Кілька проектів
Багато постачальників
Кілька агентів
Статус в реальному часі
Різниця файлів і коміт
Мобільний компаньйон
Попередній перегляд в реальному часі
Команди агентів
Автоматизація браузера
Розробка, орієнтована на беклог
Бібліотека підказок
Бібліотека навичок
Переглянути всі функції