Summary
Реализовать встроенную поддержку безопасных SSH-туннелей (Bastion / Jump host) для всех поддерживаемых баз данных (PostgreSQL, MySQL, MongoDB, Redis, SQLite remote / Extensions).
Context
В реальных production-инфраструктурах (AWS RDS, GCP Cloud SQL, частные Kubernetes кластеры, корпоративные VPC) базы данных не имеют публичных IP-адресов и закрыты файрволами. Единственный легитимный способ подключения — через Bastion-сервер по SSH.
Architecture & Security Model
- Локальный Ephemeral Port Forwarding:
- Сервис
SshTunnelManager поднимает локальный ServerSocket на 127.0.0.1:randomPort.
- Драйверы СУБД (
postgres, mysql_client, mongo_dart, redis) подключаются к локальному сокету без изменения своего сетевого кода.
- Поддерживается TLS поверх SSH.
- Безопасность (Zero-Leak):
- Методы аутентификации:
- SSH Password
- Private Key (OpenSSH, PEM, RSA, Ed25519, ECDSA) + Passphrase
- SSH Agent (
SSH_AUTH_SOCK на Linux/macOS, Named Pipe на Windows)
- Jump Host / ProxyJump (Multi-hop)
- Надежность и Lifecycle:
- Пул туннелей с подсчетом ссылок (ref-counting).
- Keep-alive пинги (
ServerAliveInterval) для предотвращения разрыва соединения облачными NAT.
- Корректный graceful shutdown при закрытии окна или отключении соединения в дереве.
Acceptance Criteria
Summary
Реализовать встроенную поддержку безопасных SSH-туннелей (Bastion / Jump host) для всех поддерживаемых баз данных (PostgreSQL, MySQL, MongoDB, Redis, SQLite remote / Extensions).
Context
В реальных production-инфраструктурах (AWS RDS, GCP Cloud SQL, частные Kubernetes кластеры, корпоративные VPC) базы данных не имеют публичных IP-адресов и закрыты файрволами. Единственный легитимный способ подключения — через Bastion-сервер по SSH.
Architecture & Security Model
SshTunnelManagerподнимает локальныйServerSocketна127.0.0.1:randomPort.postgres,mysql_client,mongo_dart,redis) подключаются к локальному сокету без изменения своего сетевого кода.ConnectionSecretsStore(flutter_secure_storage-> Keychain / DPAPI / libsecret).127.0.0.1(запрет0.0.0.0).SSH_AUTH_SOCKна Linux/macOS, Named Pipe на Windows)ServerAliveInterval) для предотвращения разрыва соединения облачными NAT.Acceptance Criteria
querya.db.