Skip to content

Безопасность и 152-ФЗ

Безопасность и 152-ФЗ

Терма Гранд обрабатывает персональные данные (ПД) граждан РФ. 152-ФЗ «О персональных данных» требует соблюдения ряда организационных и технических мер.


Персональные данные в системе

ДанныеКатегория ПДГде хранятся
telegram_idИдентификатор физлицаPostgreSQL: users, residents
Госномера автомобилейПД (идентификация владельца)PostgreSQL: vehicles, passes
ФИО жителейОбщие ПДPostgreSQL: residents
Номера телефоновКонтактные ПДPostgreSQL: residents, users

Требования к инфраструктуре

1. Регион хранения

Обязательно: VM и Object Storage в регионе ru-central1 (Москва + Ярославль). Данные не покидают территорию РФ — требование ст. 18 152-ФЗ.

Окно терминала
# Проверить регион VM
yc compute instance get terma-grand-prod | grep zone
# Ожидаемо: zone_id: ru-central1-a

2. DPA с Yandex Cloud

Оформить «Поручение на обработку персональных данных» с Яндексом:

  1. Войти в Yandex Cloud Console
  2. → Биллинг → Договоры → Поручение на обработку ПД
  3. Подписать через ЭЦП или загрузить скан

3. Шифрование at rest

КомпонентШифрование
PostgreSQL (в контейнере)Шифрование диска (LUKS или YC disk encryption)
Object Storage бэкапыGPG AES-256 (реализовано в backup.sh)
RedisДанные в памяти (не персистируются надолго)

Включить шифрование диска VM через YC CLI:

Окно терминала
# При создании VM (добавить параметр)
yc compute instance create \
... \
--create-boot-disk kms-key-id=<key_id>
# Или использовать LUKS на существующем диске (требует перезаписи)

4. Шифрование in transit (TLS)

  • nginx → клиент: TLS 1.2/1.3 (настроено в nginx/prod.conf)
  • app → PostgreSQL: sslmode=require в DATABASE_URL:
    DATABASE_URL=postgresql://terma:<pass>@postgres:5432/terma_prod?sslmode=require
  • app → Redis: TLS (если Redis 7.x с TLS), или принять риск (внутренняя Docker-сеть)

5. SSH и доступ к серверу

Окно терминала
# Отключить password auth (только ключи)
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart ssh
# Проверить
ssh root@termagrand.ru # должно отказать

6. Audit Trails (Yandex Cloud)

Включить логирование действий в YC Console:

  1. → Audit Trails → Создать трейл
  2. Ресурс: Folder (весь folder)
  3. Destination: Object Storage bucket terma-grand-audit

7. 2FA для Yandex Cloud Console

Обязательно для всех администраторов аккаунта YC:

  1. Yandex ID → Безопасность → Двухфакторная аутентификация

Права доступа (IAM)

Окно терминала
# Создать отдельный SA для деплоя (минимальные права)
yc iam service-account create --name terma-deploy-sa
# Роли: только compute.editor + storage.editor
yc resource-manager folder add-access-binding <folder_id> \
--role compute.editor \
--subject serviceAccount:<deploy_sa_id>
# SA для бэкапов (только storage.editor)
yc iam service-account create --name terma-backup-sa
yc resource-manager folder add-access-binding <folder_id> \
--role storage.editor \
--subject serviceAccount:<backup_sa_id>

Принцип минимальных привилегий: каждый сервисный аккаунт имеет только нужные роли.


Чеклист 152-ФЗ

ПунктСтатусОтветственный
VM в регионе ru-central1DevOps
DPA с Yandex Cloud подписанРуководитель
Уведомление в Роскомнадзор поданоРуководитель
Политика обработки ПД опубликованаРуководитель
Шифрование диска VM (LUKS/YC KMS)DevOps
Бэкапы шифруются GPGbackup.sh
TLS для всех публичных соединенийnginx + certbot
SSH без паролей, только ключиDevOps
2FA на YC ConsoleВсе администраторы
Audit Trails включёнDevOps
Процедура удаления ПД по запросу задокументированаРуководитель
Журнал обработки ПД ведётсяРуководитель

Процедура удаления ПД

При запросе субъекта на удаление данных:

-- Анонимизация пользователя (не физическое удаление — сохраняет аудит)
UPDATE users SET
telegram_id = NULL,
phone = NULL,
full_name = 'Удалено'
WHERE id = <user_id>;
-- Или полное удаление (если нет юридических оснований хранить)
DELETE FROM residents WHERE user_id = <user_id>;
DELETE FROM users WHERE id = <user_id>;

Зафиксировать в журнале обработки ПД: дата запроса, дата исполнения.


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

09 — Оценка стоимости