vibecode.wiki
RU EN
~/wiki / bezopasnost / polnaya-zashita-db

Полная защита базы данных в 2026: Supabase, PostgreSQL и продакшен-безопасность

◷ 6 мин чтения 03.03.2026

Следующий шаг

Открой бота или продолжай маршрут внутри раздела.

$ cd раздел/ $ open @mmorecil_bot

Статья -> план в ИИ

Отправь ссылку на эту статью в любой ИИ и получи план внедрения под свой проект.

Прочитай эту статью: https://vibecode.morecil.ru/ru/bezopasnost/polnaya-zashita-db/ Работай в контексте моего текущего проекта. Сделай план внедрения под мой стек: 1) что изменить 2) в каких файлах 3) риски и типичные ошибки 4) как проверить, что всё работает Если есть варианты, дай "быстрый" и "production-ready".
Как использовать
  1. Скопируй этот промпт и отправь в чат с ИИ.
  2. Прикрепи проект или открой папку репозитория в ИИ-инструменте.
  3. Попроси изменения по файлам, риски и короткий чеклист проверки.

Закрыть SQL-инъекции — это только первый шаг. Настоящая безопасность базы данных начинается там, где заканчиваются очевидные уязвимости. В 2026 году атакуют не только код, но и конфигурации, роли доступа, резервные копии, сетевые настройки и секреты окружения.

Если в базе хранятся пользователи, платежи или персональные данные — она становится главной целью. Утечка означает не только технический инцидент, но и юридические последствия, финансовые потери и репутационный ущерб.

В этом материале собрана системная модель защиты базы данных: от выбора хостинга до RLS-политик, шифрования на уровне колонок, настройки PITR и мониторинга. Статья ориентирована на разработчиков, которые хотят построить продакшен-уровень безопасности без избыточной сложности — и использовать ИИ как инструмент усиления, а не источник новых рисков.

1. Почему твоя база — это главная цель хакера

  • В ней лежат пароли, платежи, персональные данные пользователей.
  • Одна утечка = штрафы по GDPR/152-ФЗ + потеря репутации.
  • Средняя стоимость взлома БД в 2025–2026 — $4.5 млн (IBM Cost of a Data Breach).

Даже если ты один кодер с ИИ — хакеры не спят. Они сканируют Supabase, Railway, Render и Vercel 24/7.

2. Многоуровневая защита (Defense in Depth) — главный принцип

Никогда не полагайся на одну меру. Строим «луковицу»:

3. Шаг 1. Выбор хостинга с максимальной безопасностью из коробки (2026)

Топ-3 для вайб-кодеров:

  • Supabase — лучший для соло/стартапов (RLS, PITR, встроенный WAF).
  • Neon (serverless Postgres) — branching + авто-бэкапы.
  • AWS RDS / GCP Cloud SQL — если нужен enterprise.

Промт для ИИ:

code
Сравни Supabase, Neon и AWS RDS по безопасности в 2026 году (RLS, encryption, PITR, compliance). Рекомендуй для Telegram-бота на 10k пользователей. Напиши миграцию с одного на другой.

4. Шаг 2. Принцип наименьших привилегий (Least Privilege)

Никогда не используй postgres или supabase_admin в приложении!

Как сделать правильно:

В Supabase:

sql
-- Создаём отдельного пользователя
CREATE ROLE app_readonly WITH LOGIN PASSWORD 'strong-pass';
GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_readonly;

В коде (SQLAlchemy пример):

python
# SECURITY: только readonly соединение
engine = create_async_engine(
    "postgresql+asyncpg://app_readonly:strong-pass@...",
    pool_size=10
)

5. Шаг 3. Row Level Security (RLS) — король защиты PostgreSQL/Supabase

Пользователь видит только свои строки.

Пример для таблицы users:

sql
-- Включаем RLS
ALTER TABLE users ENABLE ROW LEVEL SECURITY;

-- Политика: пользователь видит только свои данные
CREATE POLICY "Users can view own data"
ON users
USING (auth.uid() = id);

Промт для генерации RLS (копируй!):

code
Напиши все RLS-политики для таблиц: users, orders, messages в Supabase.
- Пользователь видит только свои данные
- Админ видит всё
- Используй auth.uid() и auth.role()
- Добавь политики для INSERT/UPDATE/DELETE
- Сделай максимально безопасно + комментарии

6. Шаг 4. Шифрование — три уровня

  1. In-transit (SSL/TLS) — включается по умолчанию в Supabase/Neon.
  2. At-rest — шифрование диска (TDE в Postgres 16+).
  3. Column-level (самое мощное):
sql
-- Используем pgcrypto
CREATE EXTENSION pgcrypto;

-- Шифруем чувствительные данные
UPDATE users 
SET email_encrypted = pgp_sym_encrypt(email, 'super-secret-key');

Промт:

code
Напиши функцию encrypt/decrypt для колонок passport и phone в PostgreSQL с pgcrypto + хранение ключа в Supabase Vault.

7. Шаг 5. Бэкапы и восстановление (PITR — Point-in-Time Recovery)

В Supabase:

  • Автоматические ежедневные + WAL-логи каждые 5 минут.
  • PITR до секунды за последние 7–30 дней.

Команда восстановления:

bash
supabase db restore --to-timestamp "2026-03-03T12:00:00Z"

Промт для ИИ:

code
Напиши скрипт ежедневного бэкапа + теста восстановления для Supabase через GitHub Actions. Добавь уведомление в Telegram при ошибке.

8. Шаг 6. Мониторинг, логи и алерты

Что мониторим:

  • Подозрительные запросы (pg_stat_statements)
  • Количество подключений
  • Дисковое пространство
  • Slow queries (> 100ms)

Инструменты:

  • Supabase Logs + pgBadger
  • Prometheus + Grafana (бесплатно)
  • Sentry + Telegram-бот алертов

9. Шаг 7. Сетевые настройки и firewall

  • В Supabase: включай Database Restrictions (только твои IP).
  • В Neon/AWS: VPC + Security Groups.
  • Никогда не открывай порт 5432 в интернет!

10. Шаг 8. Управление секретами и ключами

  • Supabase Vault — хранилище ключей шифрования.
  • Doppler / Infisical — для всех переменных окружения.
  • Никогда не коммить .env в git!

Промт:

code
Напиши полный .env.example + docker-compose с Doppler для безопасного хранения секретов в Supabase-проекте.

11. Полный чек-лист перед деплоем

Доступ и аутентификация

  • Используешь отдельный DB-юзер (не postgres)
  • RLS включён на 100% таблиц
  • Row Level Security политики проверены
  • MFA в Supabase Auth

Шифрование

  • SSL enforced
  • Column-level encryption для чувствительных данных
  • Ключи в Supabase Vault / Doppler

Бэкапы

  • PITR включён
  • Еженедельный тест восстановления
  • Бэкапы за пределами региона

Мониторинг

  • Алерты на > 90% CPU / диск
  • Логирование всех DDL-команд
  • Slow query log включён

Сеть

  • Database Restrictions по IP
  • WAF включён
  • Нет прямого доступа 5432 из интернета

Код

  • Все запросы через ORM / prepared statements
  • Rate limiting на всех эндпоинтах
  • Секреты не в коде

Дополнительно

  • Регулярный supabase db diff и аудит
  • Зависимости обновляются еженедельно (npm audit)
  • Incident Response Plan написан