Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Безопасность и комплаенс (152-ФЗ, GDPR)
security

Безопасность и комплаенс (152-ФЗ, GDPR)

Требования регуляторов, шифрование данных, аудит, политики доступа, соответствие 152-ФЗ и GDPR.

Безопасность и комплаенс (152-ФЗ, GDPR)

Требования регуляторов, шифрование данных, аудит, политики доступа, соответствие 152-ФЗ и GDPR

#Мотивация

Вы развёртываете Gitea в российской компании. На серверах хранится код, персональные данные разработчиков, служебная информация. С 1 сентября 2023 года ужесточились требования Роскомнадзора к обработке персональных данных. Штрафы за нарушения 152-ФЗ достигают 500 000 рублей за первое нарушение и 10 млн рублей за повторные.

Эта тема — практическое руководство по настройке Gitea для соответствия 152-ФЗ, GDPR и лучшим практикам безопасности.

#Архитектура безопасности Gitea

┌────────────────────────────────────────────────────────────────────┐
│                         Уровень защиты                             │
├────────────────────────────────────────────────────────────────────┤
│ 1. Периметр: Firewall, VPN, доступ по SSH-ключам                  │
│ 2. Аутентификация: LDAP/SSO, 2FA, политики паролей                │
│ 3. Авторизация: Ролевая модель, branch protection                 │
│ 4. Данные: Шифрование TLS, шифрование на диске, секреты           │
│ 5. Аудит: Журналы действий, логирование, SIEM-интеграция          │
│ 6. Резервирование: Бэкапы, восстановление, HA                     │
└────────────────────────────────────────────────────────────────────┘

#152-ФЗ: Требования и реализация в Gitea

#Требование 1: Хранение ПДн на территории РФ

Что требует закон:

Обработка персональных данных граждан РФ должна осуществляться на территории Российской Федерации (ч. 5 ст. 18 152-ФЗ).

Реализация в Gitea:

  1. Развёртывание на серверах в РФ:

    • Аренда сервера в российском дата-центре (Selectel, Rostelecom, Cloud.ru)
    • Или on-premise сервер в офисе компании
  2. Проверка локации:

# Проверка IP и локации сервера curl ifconfig.me curl ipinfo.io # Проверка хостинг-провайдера whois $(curl -s ifconfig.me)
  1. Документирование:
    • Договор с хостинг-провайдером
    • Акт размещения оборудования (для on-premise)

#Требование 2: Уведомление Роскомнадзора

Что требует закон:

Оператор ПДн обязан уведомить Роскомнадзор до начала обработки данных.

Реализация:

  1. Подача уведомления:

    • Через сайт pd.rkn.gov.ru
    • Или через Госуслуги
  2. Сведения для уведомления:

Наименование оператора: ООО "Ваша Компания"
Адрес: г. Москва, ул. Примерная, д. 1
Цель обработки: Обеспечение работы Git-платформы для разработчиков
Категории данных: ФИО, email, должность, служебные контакты
Категории субъектов: Сотрудники компании
  1. Получение записи в реестре:
    • Номер записи в реестре операторов ПДн
    • Публикация на сайте компании (если есть)

#Требование 3: Согласие на обработку ПДн

Что требует закон:

Обработка ПДн допускается с согласия субъекта (ст. 6 152-ФЗ).

Реализация в Gitea:

  1. Политика конфиденциальности:

Создайте страницу /privacy в Gitea:

# Политика конфиденциальности ## Какие данные мы собираем - ФИО (для идентификации пользователя) - Корпоративный email (для связи и уведомлений) - Должность и отдел (для управления доступом) - IP-адрес и время входа (для аудита безопасности) - Git-коммиты и код (служебная информация) ## Как мы используем данные - Предоставление доступа к репозиториям - Уведомления о событиях в репозиториях - Аудит действий пользователей - Отчётность по требованиям регуляторов ## Ваши права - Доступ к своим данным - Исправление неточных данных - Удаление аккаунта (с ограничениями) - Экспорт данных в машиночитаемом формате
  1. Согласие при регистрации:

В app.ini:

[service] ; Требовать согласие при регистрации REGISTER_EMAIL_CONFIRM = true ; Показать ссылку на политику конфиденциальности ; (кастомизация через templates)
  1. Публичная оферта:
    • Включение пункта о согласии в трудовой договор
    • Или отдельный документ при приёме на работу

#Требование 4: Защита данных (ст. 19 152-ФЗ)

Что требует закон:

Оператор обязан принимать меры по защите ПДн от неправомерного доступа.

Реализация в Gitea:

#Уровень 1: Базовая защита

[security] ; Запрет простой регистрации DISABLE_REGISTRATION = false ; Требование подтверждения email REGISTER_EMAIL_CONFIRM = true ; Минимальная длина пароля MIN_PASSWORD_LENGTH = 12 ; Запрет слабых паролей PASSWORD_COMPLEXITY = upper,lower,digit,special [session] ; HTTPS только COOKIE_SECURE = true ; SameSite защита COOKIE_SAME_SITE = strict ; Время жизни сессии SESSION_LIFE_TIME = 86400

#Уровень 2: Двухфакторная аутентификация (2FA)

Включение 2FA для всех пользователей:

[security] ; Требовать 2FA для всех ENABLE_2FA = true ; Запрет доступа без 2FA DISABLE_REGISTRATION = true ; Принудительное включение 2FA ; (требуется через API или политику компании)

Настройка 2FA пользователем:

  1. Профиль → Настройки → Безопасность
  2. Включить 2FA
  3. Сканировать QR-код в приложении (Google Authenticator, Authy)
  4. Сохранить резервные коды

#Уровень 3: Шифрование данных

TLS для веб-доступа:

# NGINX конфигурация server { listen 443 ssl http2; server_name git.company.ru; ssl_certificate /etc/letsencrypt/live/git.company.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/git.company.ru/privkey.pem; # Современные настройки безопасности ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; # HSTS add_header Strict-Transport-Security "max-age=63072000" always; }

Шифрование базы данных:

PostgreSQL с шифрованием:

# postgresql.conf ssl = on ssl_cert_file = '/etc/ssl/certs/server.crt' ssl_key_file = '/etc/ssl/private/server.key' ssl_min_protocol_version = 'TLSv1.2'

Шифрование на диске (LVM/dm-crypt):

# Создание зашифрованного раздела cryptsetup luksFormat /dev/sdb1 cryptsetup open /dev/sdb1 gitea_data mkfs.ext4 /dev/mapper/gitea_data mount /dev/mapper/gitea_data /opt/gitea

#Требование 5: Аудит и логирование

Что требует закон:

Оператор должен обеспечивать учёт машинных носителей ПДн и регистрацию действий с данными.

Реализация в Gitea:

#Включение audit log

app.ini:

[log] MODE = console, file LEVEL = info ROUTER = console [log.file] LEVEL = info FILE_NAME = gitea.log MAX_SIZE_SHIFT = 28 DAILY_ROTATE = true MAX_DAYS = 30 [log.audit] MODE = file LEVEL = info FILE_NAME = audit.log

#Формат audit log

timestamp            level  message
2026-03-19 10:30:00  INFO [audit] user=admin action=login source=LDAP ip=192.168.1.100
2026-03-19 10:31:15  INFO [audit] user=admin action=create_repo repo=team/backend
2026-03-19 10:35:22  INFO [audit] user=admin action=push repo=team/backend commit=abc123
2026-03-19 11:00:00  INFO [audit] user=developer action=login source=internal ip=192.168.1.105

#Интеграция с SIEM

Отправка логов в syslog:

[log] MODE = console, syslog [log.syslog] LEVEL = info NETWORK = udp ADDR = 192.168.1.50:514 FACILITY = local0

#GDPR: Европейский регламент

Если у вас есть пользователи из ЕС, применяется GDPR.

#Право на доступ (ст. 15 GDPR)

Реализация в Gitea:

Пользователь может запросить экспорт данных:

  1. Профиль → Настройки → Экспорт данных
  2. Нажать Скачать архив
  3. Получение ZIP со всеми данными

#Право на удаление (ст. 17 GDPR)

Реализация в Gitea:

  1. Пользователь запрашивает удаление аккаунта
  2. Администратор проверяет отсутствие активных репозиториев
  3. Удаление через Панель администратора → Пользователи → Удалить

Важно: Git-история содержит авторство коммитов. Полное удаление требует:

# Фильтрация истории (если критично) git filter-branch --env-filter ' if [ "$GIT_AUTHOR_EMAIL" = "user@company.ru" ]; then export GIT_AUTHOR_EMAIL="deleted@company.ru" export GIT_AUTHOR_NAME="Deleted User" fi ' -- --all

#Право на портативность (ст. 20 GDPR)

Реализация:

Gitea предоставляет:

  • Экспорт репозиториев через git clone --mirror
  • Экспорт профиля через веб-интерфейс
  • API для программного доступа к данным
# Экспорт через API curl -H "Authorization: token $TOKEN" \ https://git.company.ru/api/v1/user/emails curl -H "Authorization: token $TOKEN" \ https://git.company.ru/api/v1/user/repos

#Ролевая модель и политики доступа

#Встроенные роли в Gitea

РольОписание
AdminПолный доступ ко всем функциям
OwnerВладелец организации, управление членами
MemberУчастник организации, доступ к репозиториям
Outside CollaboratorВнешний collaborator с ограниченным доступом

#Настройка политик доступа

#Branch Protection (защита веток)

[repository] ; Требовать review перед merge DEFAULT_BRANCH_PROTECTION = true ; Запрет force push DISABLE_FORCE_PUSH = true ; Требовать CI перед merge DEFAULT_REQUIRE_STATUS_CHECKS = true

Настройка через веб-интерфейс:

  1. Репозиторий → Настройки → Branches
  2. Add Rule для main
  3. Параметры:
    • ✅ Require pull request review
    • ✅ Require status checks to pass
    • ✅ Include administrator
    • ✅ Lock branch

#Protected Tags (защита тегов)

[repository] ; Запрет на создание тегов без прав DEFAULT_TAG_PROTECTION = true

#Ограничение видимости

[service] ; Требовать вход для просмотра REQUIRE_SIGNIN_VIEW = true ; Запрет анонимного доступа ENABLE_BASIC_AUTHENTICATION = true

#Контрольный список комплаенса

#152-ФЗ чеклист

  • Сервер расположен в РФ (дата-центр или on-premise)
  • Подано уведомление в Роскомнадзор
  • Получена запись в реестре операторов ПДн
  • Разработана и опубликована политика конфиденциальности
  • Получено согласие сотрудников (трудовой договор)
  • Включена двухфакторная аутентификация
  • Настроен HTTPS с современными cipher suites
  • Включено логирование audit log
  • Настроено резервное копирование
  • Назначен ответственный за обработку ПДн (приказ)

#GDPR чеклист (если применимо)

  • Назначен DPO (Data Protection Officer)
  • Реализовано право на доступ к данным
  • Реализовано право на удаление (с оговорками)
  • Реализовано право на портативность
  • Ведётся журнал обработки данных (ROPA)
  • Настроены уведомления об утечках (72 часа)

#Интеграция с корпоративными системами безопасности

#Active Directory / LDAP

См. тему LDAP/SSO аутентификация.

#SIEM-системы

Отправка логов в Splunk:

[log.syslog] MODE = syslog NETWORK = tcp ADDR = splunk.company.ru:514 FACILITY = local0

Отправка в ELK Stack:

# Filebeat конфигурация filebeat.inputs: - type: log paths: - /opt/gitea/logs/audit.log fields: log_type: gitea_audit output.logstash: hosts: ["logstash.company.ru:5044"]

#DLP-системы

Интеграция через webhooks:

{ "webhook_url": "https://dlp.company.ru/api/git-events", "events": ["push", "pull_request", "repository.created"], "secret": "your-webhook-secret" }

#Расследование инцидентов

#Поиск подозрительной активности

# Множественные неудачные логины grep "Failed login" /opt/gitea/logs/audit.log | sort | uniq -c | sort -rn # Доступ в нерабочее время grep "action=login" /opt/gitea/logs/audit.log | grep "22:\|23:\|00:\|01:\|02:\|03:\|04:\|05:" # Массовое скачивание репозиториев grep "action=clone" /opt/gitea/logs/audit.log | cut -d' ' -f2 | sort | uniq -c | sort -rn

#Экспорт логов для расследования

# Логи за период grep "2026-03-19" /opt/gitea/logs/audit.log > incident_20260319.log # Действия конкретного пользователя grep "user=suspicious_user" /opt/gitea/logs/audit.log > user_actions.log # Доступ к конкретному репозиторию grep "repo=sensitive-project" /opt/gitea/logs/audit.log > repo_access.log

#Типовые нарушения и как их избежать

НарушениеРискКак избежать
Сервер за пределами РФШтраф до 500 тыс. руб.Развёртывание в российском DC
Нет уведомления РКНШтраф до 100 тыс. руб.Подать уведомление до запуска
Слабые паролиУтечка данныхMIN_PASSWORD_LENGTH=12, 2FA
Нет audit logНевозможно расследовать инцидентВключить логирование в app.ini
Отсутствие бэкаповПотеря данныхЕжедневный backup.sh в cron
Открытый доступ без входаУтечка кодаREQUIRE_SIGNIN_VIEW=true

#Резюме

  • 152-ФЗ требует хранения ПДн в РФ, уведомления РКН, согласия субъектов, защиты данных
  • GDPR даёт пользователям права на доступ, удаление и портативность данных
  • Gitea поддерживает 2FA, шифрование, audit log, ролевую модель
  • Интеграция с SIEM, DLP, LDAP обеспечивает корпоративный уровень безопасности

Следующий шаг: CI/CD: Gitea Actions и внешние интеграции

Далее: CI/CD: Gitea Actions и внешние интеграции