Безопасность и 152-ФЗ
Безопасность и 152-ФЗ
Терма Гранд обрабатывает персональные данные (ПД) граждан РФ. 152-ФЗ «О персональных данных» требует соблюдения ряда организационных и технических мер.
Персональные данные в системе
| Данные | Категория ПД | Где хранятся |
|---|---|---|
telegram_id | Идентификатор физлица | PostgreSQL: users, residents |
| Госномера автомобилей | ПД (идентификация владельца) | PostgreSQL: vehicles, passes |
| ФИО жителей | Общие ПД | PostgreSQL: residents |
| Номера телефонов | Контактные ПД | PostgreSQL: residents, users |
Требования к инфраструктуре
1. Регион хранения
Обязательно: VM и Object Storage в регионе ru-central1 (Москва + Ярославль).
Данные не покидают территорию РФ — требование ст. 18 152-ФЗ.
# Проверить регион VMyc compute instance get terma-grand-prod | grep zone# Ожидаемо: zone_id: ru-central1-a2. DPA с Yandex Cloud
Оформить «Поручение на обработку персональных данных» с Яндексом:
- Войти в Yandex Cloud Console
- → Биллинг → Договоры → Поручение на обработку ПД
- Подписать через ЭЦП или загрузить скан
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_configsudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_configsudo systemctl restart ssh
# Проверитьssh root@termagrand.ru # должно отказать6. Audit Trails (Yandex Cloud)
Включить логирование действий в YC Console:
- → Audit Trails → Создать трейл
- Ресурс: Folder (весь folder)
- Destination: Object Storage bucket
terma-grand-audit
7. 2FA для Yandex Cloud Console
Обязательно для всех администраторов аккаунта YC:
- Yandex ID → Безопасность → Двухфакторная аутентификация
Права доступа (IAM)
# Создать отдельный SA для деплоя (минимальные права)yc iam service-account create --name terma-deploy-sa
# Роли: только compute.editor + storage.editoryc 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-sayc resource-manager folder add-access-binding <folder_id> \ --role storage.editor \ --subject serviceAccount:<backup_sa_id>Принцип минимальных привилегий: каждый сервисный аккаунт имеет только нужные роли.
Чеклист 152-ФЗ
| Пункт | Статус | Ответственный |
|---|---|---|
VM в регионе ru-central1 | ☐ | DevOps |
| DPA с Yandex Cloud подписан | ☐ | Руководитель |
| Уведомление в Роскомнадзор подано | ☐ | Руководитель |
| Политика обработки ПД опубликована | ☐ | Руководитель |
| Шифрование диска VM (LUKS/YC KMS) | ☐ | DevOps |
| Бэкапы шифруются GPG | ✅ | backup.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>;Зафиксировать в журнале обработки ПД: дата запроса, дата исполнения.