---
name: shared-stand-safety
description: Дисциплина общего стенда при расследовании - read-only по умолчанию, побочные эффекты только по явной команде, сохранность улик, секреты и честность доказательств. Активируется при общий стенд, shared stand, read-only расследование, kubectl restart, rollout restart, apply edit scale, передеплой, рестарт пода, секреты в логах, kubeconfig, не выдумывать метрики, blast radius действия, запись в Jira во время расследования
---

# Безопасность общего стенда - ловушки и anti-patterns

## Побочные эффекты на общий стенд

### Рестарт пода чтобы проверить
Плохо: `rollout restart` / рестарт инстанса "чтобы посмотреть, пройдёт ли"
Правильно: в режиме расследования - только чтение (get / describe / logs / top / events); рестарт - после явной команды
Почему: рестарт уничтожает состояние упавшего инстанса (часто там настоящая ошибка) и мешает другим командам, которые делят стенд

### apply / edit / scale без согласования
Плохо: правка манифеста, scale, изменение configmap на общем стенде в одиночку
Правильно: любой эффект на общий стенд (apply / edit / delete / scale / restart) - отдельное подтверждение перед каждым действием
Почему: стенд общий; молчаливое изменение ломает работу других и затирает улики, по которым шло расследование

### "Безобидное" действие на общем ресурсе
Плохо: удалить "застрявшую" джобу, очистить очередь, сбросить кеш - кажется безвредным
Правильно: считать любой мутирующий вызов небезобидным на общем ресурсе и согласовывать
Почему: то, что выглядит локальной уборкой, меняет состояние для всех потребителей и может стереть воспроизведение инцидента

### Передеплой в режиме расследования
Плохо: сменить образ / передеплоить, чтобы "проверить версию"
Правильно: сверять версии чтением (sha образа, тег), не передеплоивать до команды на фикс
Почему: передеплой меняет то, что расследуется, и обнуляет текущее состояние - после него исходный инцидент уже не наблюдаем

### exec в чужой под меняет состояние
Плохо: `kubectl exec` с запуском команд, меняющих файлы, env или процессы внутри контейнера
Правильно: exec только на чтение (cat, ps, ls); любое мутирующее действие внутри пода - согласовать
Почему: exec выполняется в живом инстансе, которым пользуются другие; запись внутри пода затирает состояние и улики так же, как правка снаружи

## Доказательства и секреты

### Печать секретов в чат или коммит кредов
Плохо: вывести содержимое secret / .env целиком, закоммитить токен или kubeconfig
Правильно: креды только читать для доступа; в отчёте фиксировать "доступ к X есть через Y", без значений
Почему: секрет в чате / коммите утекает и остаётся в истории даже после удаления; в отчёт попадает факт доступа, не значение

### Выдуманные метрики и логи
Плохо: в отчёт попадает метрика / лог / вызов API, который не был реально получен
Правильно: ссылаться только на наблюдённое (команда + её вывод, id лога / трейса); недоступное помечать как пробел
Почему: выдуманное доказательство ведёт расследование по ложному следу и подрывает доверие к выводам; честный пробел лучше придуманного факта

### Запись во внешние системы в режиме чтения
Плохо: расследователь меняет статус Jira / пишет в MR / дёргает пайплайн во время read-only анализа
Правильно: в режиме расследования - ноль записей во внешние системы до явной команды
Почему: преждевременная запись фиксирует невыясненную версию как факт для команды и провоцирует действия по недоказанной причине

### Дорогой read как побочный эффект
Плохо: тяжёлый запрос, полный скан, MONITOR, EXPLAIN ANALYZE с записью "просто посмотреть" на нагруженном стенде
Правильно: оценить стоимость чтения до выполнения; тяжёлую диагностику вести на реплике или с лимитом
Почему: чтение тоже бывает с эффектом - дорогой запрос грузит общий ресурс и деградирует его для остальных потребителей стенда

## Чек-лист безопасности стенда

- По умолчанию только чтение: get / describe / logs / top / events
- Любой мутирующий вызов на общем стенде - отдельное подтверждение
- Состояние упавшего инстанса сохранено, не затёрто рестартом
- Секреты не печатаются и не коммитятся; в отчёте только факт доступа
- В отчёте только наблюдённые улики; недоступное помечено пробелом
- Ноль записей в Jira / MR / CI до команды на действие
