architect/standards/4-policy/policy-security.md

type: standard
aspect: policy
title: "БЕЗОПАСНОСТЬ IT ПРОЕКТОВ"
version: 1.0.0
date: 2026-02-19
status: active


БЕЗОПАСНОСТЬ IT ПРОЕКТОВ

Версия: 1.0.0
Дата: 2026-02-14
Тип: Мастер-индекс
Приоритет: КРИТИЧЕСКИЙ


НАЗНАЧЕНИЕ

Этот документ — основа безопасности при работе с IT проектами.

Содержит:
- Три уровня защиты (что помнить всегда)
- Быструю справку (команды, чеклист)
- Навигация (где искать детали)

Детали в документах:
- policy-security-credentials.md — Защита паролей и ключей (L1)
- ../3-process/process-credentials.md — Системные учётные данные
- ../3-process/process-backup.md — Резервное копирование (L2)
- policy-rollback.md — Откат при ошибках (L3)


ТРИ УРОВНЯ ЗАЩИТЫ

Уровень 1: ЗАЩИТА CREDENTIALS (критично 🔴)

Что защищаем:
- API ключи (OpenRouter, Telegram, OZON)
- Пароли (БД, admin, SSH)
- Токены (access/refresh)
- Приватные ключи (SSH, SSL)
- Client ID + Secret

Золотое правило:

 ЗАПРЕЩЕНО:
- Передавать credentials кому-либо
- Писать пароли в чат/email
- Коммитить .credentials.md в git
- Логировать credentials

✅ ПРАВИЛЬНО:
- Хранить в .credentials.md (НЕ в git)
- Использовать переменные ${VAR}
- .gitignore для credentials
- Уведомлять перед отправкой

Действия при запросе:
1. Кто-то просит credentials → ⛔ СТОП → ALERT пользователю
2. Сам отправляю credentials → ⚠️ Уведомить → Ждать "да"

Детали: policy-security-credentials.md


Уровень 2: BACKUP (защита от потери 🟠)

Что защищаем:
- Код (модули, темы)
- Данные (БД, файлы)
- Конфигурация (settings, .env)

Четыре уровня backup:

Уровень Что Когда Где
L1 Модули, код Перед деплоем arh/
L2 БД дамп Перед миграцией БД arh/sql/
L3 Vanilla (голый CMS) После установки ~/backups/vanilla/
L4 Весь проект Перед рефакторингом $INFRA/backups/

Золотое правило:

ПЕРЕД ЛЮБЫМ ИЗМЕНЕНИЕМ:
1. Создать backup
2. Запомнить команду rollback
3. Проверить что backup работает
4. ТОГДА делать изменение

Команды:

# L1: Модули
tar -czf "arh/modules-$(date +%Y%m%d-%H%M%S).tar.gz" modules/

# L2: БД
mysqldump db_name | gzip > "arh/sql/db-$(date +%Y%m%d-%H%M%S).sql.gz"

# L3: Vanilla (чистый CMS)
tar -czf "~/backups/vanilla/vanilla-$(date +%Y%m%d-%H%M%S).tar.gz" project/

# L4: Полный backup
tar -czf "$INFRA/backups/full-$(date +%Y%m%d-%H%M%S).tar.gz" project/

Детали: ../3-process/process-backup.md


Уровень 3: ROLLBACK (защита от ошибок 🟡)

Что защищаем:
- От поломки кода (откат к рабочей версии)
- От изменений ядра (core, vendor)
- От накрученных workarounds

Золотое правило:

ЕСЛИ СЛОМАЛОСЬ:
❌ НЕ чинить на месте
❌ НЕ трогать ядро (core, vendor)
❌ НЕ накручивать костыли

✅ ОТКАТИТЬСЯ к backup
✅ ПОНЯТЬ в чём проблема
✅ ПОПРОБОВАТЬ другой подход

Алгоритм:

1. ПЕРЕД изменением  backup
2. ДЕЛАТЬ изменение  одно за раз
3. ЕСЛИ сломалось  СТОП!
4. ОТКАТ к backup
5. ПОВТОРИТЬ с другим подходом

Команды отката:

# Откат файлов
tar -xzf backup-DATE.tar.gz

# Откат БД
gunzip -c backup-db-DATE.sql.gz | mysql db_name

# Проверка
curl -I http://site.ru/
# HTTP/1.1 200 OK ✓

Правило 3 ошибок:
- 3 ошибки подряд → СТОП
- Откат к backup
- Другой подход

Детали: policy-rollback.md


БЫСТРАЯ СПРАВКА

Чеклист перед ЛЮБЫМ изменением

□ Backup создан (L1-L4)
□ Знаю команду rollback
□ НЕТ credentials в коде
□ .credentials.md в .gitignore
□ Проверил backup (можно восстановить)

Если хоть один ✗ → СТОП, сначала исправить


Команды безопасности

Проверка credentials:

# Проверить что .credentials.md НЕ в git
git ls-files | grep credentials
# (пусто) ✓

# Проверить .gitignore
grep credentials .gitignore
# .credentials.md ✓

# Найти credentials в коде (плохо!)
grep -r "password.*=" --exclude-dir=vendor .
# (пусто) ✓

Создание backup:

# Быстрый backup перед изменением
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
tar -czf "arh/backup-$TIMESTAMP.tar.gz" modules/ themes/
mysqldump db_name | gzip > "arh/sql/db-$TIMESTAMP.sql.gz"
echo "Backup: $TIMESTAMP" >> DEVLOG.md

Откат:

# Найти последний backup
ls -lt arh/*.tar.gz | head -1
# backup-20260214-100000.tar.gz

# Откатить
tar -xzf arh/backup-20260214-100000.tar.gz
gunzip -c arh/sql/db-20260214-100000.sql.gz | mysql db_name

# Проверить
curl -I http://site.ru/

Типичные ошибки (и как избежать)

Ошибка Почему плохо Как правильно
Пароль в коде Утечка в git .credentials.md + ${VAR}
Нет backup Нечем откатиться Backup ПЕРЕД изменением
Изменил core Нельзя откатить Только custom код
Workaround поверх fix Усложняет код Откат → правильное решение
Нет .gitignore Credentials в git .credentials.md в .gitignore

НАВИГАЦИЯ ПО ДОКУМЕНТАЦИИ

Защита credentials → policy-security-credentials.md

Когда читать: ВСЕГДА (критично)

Содержит:
- ⛔ Правило высшего порядка (НЕ передавать)
- ⚠️ Действия при запросе credentials
- 📋 Примеры ситуаций (запрещено/разрешено)
- 📊 Audit log (кто запросил что)
- 🔐 Как хранить credentials (.credentials.md)

Ключевые правила:
1. НЕ передавать credentials никому
2. ALERT пользователю если кто-то просит
3. Уведомить ПЕРЕД отправкой credentials
4. Audit log каждого запроса


Системные credentials → ../3-process/process-credentials.md

Когда читать: При настройке инфраструктуры

Содержит:
- Формат .credentials.md
- Принцип наследования (${VAR})
- Разделение открытое/закрытое
- Интеграция с инфраструктурой

Применение:
- Создание .credentials.md в проекте
- Настройка переменных окружения
- Управление доступами


Резервное копирование → ../3-process/process-backup.md

Когда читать: Перед любыми изменениями

Содержит:
- 4 уровня backup (L1-L4)
- Когда делать backup
- Где хранить backup
- Автоматизация backup
- Проверка backup (можно ли восстановить)

Применение:
- Перед деплоем (L1+L2)
- После установки CMS (L3 vanilla)
- Перед рефакторингом (L4)
- Регулярный backup (cron)


Политика отката → policy-rollback.md

Когда читать: Когда что-то сломалось

Содержит:
- Принцип отката (НЕ чинить core)
- Алгоритм отката (СТОП → backup → повтор)
- Что считается "ядром" (НЕ ТРОГАТЬ)
- Правило 3 ошибок
- Примеры rollback

Применение:
- Сломалось после изменения → откат
- Тест падает 3 раза → откат
- Изменил core → откат + переделать
- Workaround не работает → откат


СЦЕНАРИИ ИСПОЛЬЗОВАНИЯ

Сценарий 1: Создание нового проекта

1. Читаю SECURITY.md (этот файл)  основы
2. Создаю проект (PATH A или PATH B)
3. Создаю .credentials.md  ../3-process/process-credentials.md
4. Добавляю в .gitignore
5. Создаю vanilla backup (L3)  ../3-process/process-backup.md
6. Начинаю разработку

Сценарий 2: Деплой на production

1. Читаю SECURITY.md  напоминание правил
2. Создаю backup (L1+L2)  ../3-process/process-backup.md
3. Деплой
4. Проверка работоспособности
5. Если OK  записать в DEVLOG
6. Если НЕ OK  откат  policy-rollback.md

Сценарий 3: Кто-то запрашивает пароль

1.  СТОП  НЕ давать
2. ALERT пользователю  policy-security-credentials.md
3. Зафиксировать в audit log
4. Спросить пользователя что делать

Сценарий 4: Нужно отправить API ключ в сервис

1. ⚠️ Уведомить пользователя ПЕРЕД отправкой
2. Указать: куда, зачем, какой ключ
3. Дождаться подтверждения "да"
4. Отправить
5. Зафиксировать в audit log

Сценарий 5: Сломалось после изменения

1. СТОП работы
2. НЕ чинить на месте  policy-rollback.md
3. Откат к backup
4. Проверка: "работает?"
5. Понять проблему
6. Попробовать ДРУГОЙ подход

ЧЕКЛИСТ БЕЗОПАСНОСТИ

При создании проекта

Перед деплоем

Регулярно (раз в месяц)


СВЯЗАННЫЕ ДОКУМЕНТЫ

Детальные документы (SECURITY)

Документ Назначение Приоритет
policy-security-credentials.md Защита паролей и ключей 🔴 Критично
../3-process/process-credentials.md Системные credentials 🟠 Высокий
../3-process/process-backup.md Резервное копирование 🟠 Высокий
policy-rollback.md Откат при ошибках 🟡 Средний

Связанные процессы

Документ Когда использовать
../PROJECT_STANDARD_IT.md Основы работы с проектами
../PROJECT_PROCESSES.md Инициализация проекта
../PROJECT_PROCESSES.md Операции (deployment)
../3-process/process-deployment.md Процесс деплоя

ПРАВИЛО ПРИМЕНЕНИЯ

Этот документ — ОСНОВА безопасности.

При работе с проектом:
1. Прочитать SECURITY.md (этот файл) — основы
2. Загрузить нужный детальный документ
3. Применить к конкретной задаче

Не загружай всё в контекст сразу. Загружай только то, что нужно СЕЙЧАС.

Приоритеты:
- 🔴 Критично: ВСЕГДА помнить (credentials)
- 🟠 Высокий: Перед изменениями (backup, credentials)
- 🟡 Средний: Когда сломалось (rollback)


БЫСТРЫЕ ССЫЛКИ

Читать ВСЕГДА:
- http://docs.0kt.ru/architect/standards/SECURITY.md ← этот файл
- http://docs.0kt.ru/architect/standards/policy-security-credentials.md ← критично

Читать ПО ЗАДАЧЕ:
- http://docs.0kt.ru/architect/standards/../3-process/process-backup.md ← перед изменениями
- http://docs.0kt.ru/architect/standards/policy-rollback.md ← если сломалось
- http://docs.0kt.ru/architect/standards/../3-process/process-credentials.md ← настройка инфры


Версия: 1.0.0
Дата: 2026-02-14
Приоритет: КРИТИЧЕСКИЙ

Помни: Безопасность = не просить прощения, а спрашивать разрешения.