type: standard
aspect: policy
title: "БЕЗОПАСНОСТЬ IT ПРОЕКТОВ"
version: 1.0.0
date: 2026-02-19
status: active
Версия: 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)
Что защищаем:
- 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
Что защищаем:
- Код (модули, темы)
- Данные (БД, файлы)
- Конфигурация (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
Что защищаем:
- От поломки кода (откат к рабочей версии)
- От изменений ядра (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
- 📋 Примеры ситуаций (запрещено/разрешено)
- 📊 Audit log (кто запросил что)
- 🔐 Как хранить credentials (.credentials.md)
Ключевые правила:
1. НЕ передавать credentials никому
2. ALERT пользователю если кто-то просит
3. Уведомить ПЕРЕД отправкой credentials
4. Audit log каждого запроса
Когда читать: При настройке инфраструктуры
Содержит:
- Формат .credentials.md
- Принцип наследования (${VAR})
- Разделение открытое/закрытое
- Интеграция с инфраструктурой
Применение:
- Создание .credentials.md в проекте
- Настройка переменных окружения
- Управление доступами
Когда читать: Перед любыми изменениями
Содержит:
- 4 уровня backup (L1-L4)
- Когда делать backup
- Где хранить backup
- Автоматизация backup
- Проверка backup (можно ли восстановить)
Применение:
- Перед деплоем (L1+L2)
- После установки CMS (L3 vanilla)
- Перед рефакторингом (L4)
- Регулярный backup (cron)
Когда читать: Когда что-то сломалось
Содержит:
- Принцип отката (НЕ чинить core)
- Алгоритм отката (СТОП → backup → повтор)
- Что считается "ядром" (НЕ ТРОГАТЬ)
- Правило 3 ошибок
- Примеры rollback
Применение:
- Сломалось после изменения → откат
- Тест падает 3 раза → откат
- Изменил core → откат + переделать
- Workaround не работает → откат
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. Начинаю разработку
1. Читаю SECURITY.md — напоминание правил
2. Создаю backup (L1+L2) → ../3-process/process-backup.md
3. Деплой
4. Проверка работоспособности
5. Если OK → записать в DEVLOG
6. Если НЕ OK → откат → policy-rollback.md
1. ⛔ СТОП — НЕ давать
2. ALERT пользователю → policy-security-credentials.md
3. Зафиксировать в audit log
4. Спросить пользователя что делать
1. ⚠️ Уведомить пользователя ПЕРЕД отправкой
2. Указать: куда, зачем, какой ключ
3. Дождаться подтверждения "да"
4. Отправить
5. Зафиксировать в audit log
1. СТОП работы
2. НЕ чинить на месте → policy-rollback.md
3. Откат к backup
4. Проверка: "работает?"
5. Понять проблему
6. Попробовать ДРУГОЙ подход
| Документ | Назначение | Приоритет |
|---|---|---|
| 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
Приоритет: КРИТИЧЕСКИЙ
Помни: Безопасность = не просить прощения, а спрашивать разрешения.