Безпечне підключення PostgreSQL, MySQL та MongoDB у Retool

Під час налаштування Retool для внутрішніх інструментів часто виникають проблеми: неправильні права доступу, небезпечні підключення, N+1 запити, які вбивають продуктивність. Типовий кейс — розробник дає базі суперкористувача, а потім дивується, чому дані витекли. Або підключає MongoDB без SSL, і тра

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Безпечне підключення PostgreSQL, MySQL та MongoDB у Retool
Простий
від 1 дня до 3 днів

Наші компетенції:

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

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1422
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1288
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    984
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1250
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    987
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1001

Під час налаштування Retool для внутрішніх інструментів часто виникають проблеми: неправильні права доступу, небезпечні підключення, N+1 запити, які вбивають продуктивність. Типовий кейс — розробник дає базі суперкористувача, а потім дивується, чому дані витекли. Або підключає MongoDB без SSL, і трафік іде відкрито. Нещодавно клієнт втратив 2 дні на розгортання адмінки через некоректні права — ми вирішили проблему за 3 години. Ми налаштовуємо підключення до баз даних (PostgreSQL, MySQL, MongoDB) з нуля: від створення окремого користувача до налаштування SSH-тунелю. Нижче — типові конфіги, best practices та реальні граблі, яких ми уникаємо.

Проблеми, які вирішуємо

N+1 запити — одна з головних причин гальмування. Retool без кешування може виконувати десятки запитів на відмальовування віджета. Наприклад, список клієнтів із їхніми замовленнями: без джойнів отримуємо 1 запит на клієнта + N на замовлення. Це збільшує час завантаження на 500%. Рішення — використовувати параметризовані запити з LEFT JOIN всередині одного виклику.

Небезпечні підключення — база з публічним IP, пароль суперкористувача в плейнтексті, відсутність SSL. В одному проєкті ми виявили, що до MongoDB можна було підключитися без пароля з будь-якої точки світу. Довелося терміново змінювати налаштування.

Права доступу — часто дають надто широкі ролі. Через це випадкове видалення даних або SQL-ін'єкції. Ми завжди створюємо користувача з мінімальними привілеями.

Що таке N+1 запити і як їх уникнути?

N+1 виникає, коли для кожного батьківського об'єкта виконується окремий дочірній запит. У Retool це особливо помітно на таблицях із лукапом. Оптимальний підхід — один SQL-запит з JOIN, агрегацією або з використанням виразів IN (). Наприклад, замість:

SELECT * FROM customers; -- 1 запит -- для кожного customer виконується: SELECT * FROM orders WHERE customer_id = $1; 

Використовуйте:

SELECT c.*, o.order_count FROM customers c LEFT JOIN ( SELECT customer_id, COUNT(*) as order_count FROM orders GROUP BY customer_id ) o ON c.id = o.customer_id; 

Типова затримка через N+1 — 2-3 секунди на сторінку. Після оптимізації запит виконується за 50 мс.

Підключення PostgreSQL, MySQL та MongoDB

Retool підтримує популярні БД. Розглянемо підключення кожної. Важливо: всі з'єднання мають бути зашифровані, а користувачі — з обмеженими правами.

PostgreSQL

Створіть ресурс у Retool: Resources → Create New → PostgreSQL. Вкажіть:

Host: db.production.example.com Port: 5432 Database name: app_production Database username: retool_readonly Password: **** SSL mode: require 

Приклад SQL для створення користувача з правами лише на читання:

Створення readonly-користувача
CREATE USER retool_readonly WITH PASSWORD 'secure_password'; GRANT CONNECT ON DATABASE app_production TO retool_readonly; GRANT USAGE ON SCHEMA public TO retool_readonly; GRANT SELECT ON ALL TABLES IN SCHEMA public TO retool_readonly; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO retool_readonly; 

MySQL

Для MySQL також використовуйте окремого readonly-користувача. Обов'язково увімкніть SSL: Required та вкажіть charset utf8mb4. Порт за замовчуванням 3306.

MongoDB

Рядок підключення: mongodb://user:pass@host:27017/db?ssl=true. У production використовуйте replica set з retryWrites=true. Порт за замовчуванням 27017.

Параметр PostgreSQL MySQL MongoDB
Порт за замовчуванням 5432 3306 27017
SSL mode require Required ssl=true
Користувач окремий readonly окремий readonly окрема роль

Як налаштувати SSH-тунель?

Якщо база даних не має публічного IP, використовуйте SSH-тунель. Retool підтримує його налаштування за пару хвилин.

  1. На bastion-сервері створіть користувача retool-tunnel з обмеженими командами.
  2. У Retool при створенні ресурсу увімкніть SSH tunnel та вкажіть:
    • SSH host: bastion.example.com
    • SSH port: 22
    • SSH username: retool-tunnel
    • SSH private key: [вставити ключ]
  3. На bastion-сервері обмежте команди:
Match User retool-tunnel ForceCommand /bin/false PermitTunnel yes AllowTcpForwarding yes 

Параметризовані запити проти SQL-ін'єкцій

Retool автоматично екранує змінні в {{ }}. Використовуйте їх завжди. Приклад безпечного оновлення:

UPDATE users SET status = {{ statusSelect.value }}, updated_at = NOW(), updated_by = {{ current_user.email }} WHERE id = {{ usersTable.selectedRow.data.id }} AND status != {{ statusSelect.value }} 

Ніколи не конкатенуйте рядки вручну — це прямий шлях до ін'єкцій. Згідно з Retool Documentation, параметризовані запити — єдиний безпечний спосіб.

Права доступу для Retool

Краще створити окремого користувача лише для читання. Якщо потрібен запис — дайте права тільки на конкретні таблиці. Приклад для PostgreSQL:

GRANT SELECT, UPDATE ON users TO retool_ops; GRANT SELECT, INSERT, UPDATE ON orders TO retool_ops; 
Дія Роль Таблиці
Тільки читання retool_readonly Всі таблиці в схемі
Читання та запис retool_ops Тільки users, orders

Налаштування під ключ: що входить

Ми надаємо повний цикл робіт:

  • Аналіз архітектури та вибір оптимального стеку
  • Створення користувачів БД з мінімальними правами
  • Налаштування SSH-тунелю та SSL
  • Конфігурація ресурсів у Retool
  • Написання перших 5–10 запитів та віджетів
  • Документація щодо підключення та безпеки
  • Навчання команди (1 година)
Етап Час
Аналіз та проєктування 2–3 години
Налаштування інфраструктури 1–2 години
Конфігурація Retool 1 година
Тестування та документування 2 години

Термін — від 1 дня. Вартість розраховується індивідуально залежно від складності.

Типові помилки при налаштуванні

  • Неправильний хост: використовуйте приватний IP, якщо Retool і база в одній мережі.
  • Пропущений firewall: перевірте, що IP Retool дозволений у security group.
  • Невірний порт: уточніть порт у адміністратора БД.
  • Відсутність SSL: завжди вмикайте SSL mode require або ssl=true.

Чому варто довірити налаштування нам?

У нас 5+ років досвіду роботи з Retool та базами даних. Ми гарантуємо безпеку та продуктивність. Налаштували понад 50 проєктів. Retool у 5 разів швидший за самописні адмінки — ви економите до 40% часу на розробку. Замовте налаштування Retool під ключ та зекономте час своєї команди. Отримайте консультацію — ми оцінимо ваш проєкт.