Перейти к содержанию

Production-секреты во время выполнения

Требования применяются к доставке и использованию production-секретов запущенным компонентом. Подготовка исходников и сборки регулируется SEC-SCRT-001SEC-SCRT-005. Уровни обязательности определены в корневом README.md.

SEC-SCRT-006. Доверенный источник runtime-секрета

Уровень: MUST

Применяется к: production-компоненту, которому требуется секрет

Секрет должен поступать из утверждённого secret manager или эквивалентного защищённого механизма среды исполнения. Доступ должен предоставляться identity конкретного компонента и окружения, а не общим credential проекта.

Открытое значение не должно находиться в deployment manifest, container image, аргументах процесса, обычной переменной CI или metadata оркестратора.

Обоснование

Отделение секрета от артефакта позволяет ограничить доступ, отозвать значение и не пересобирать приложение при ротации.

Проверка

  • review источника и identity workload;
  • чтение разрешённого и запрет чужого секрета test identity;
  • secret scanning deployment-описания, process arguments и image.

Исключения

Платформенный secret input MAY использоваться вместо отдельного manager, если он шифруется, имеет эквивалентные access controls, аудит и ротацию.

SEC-SCRT-007. Ротация без смены артефакта

Уровень: MUST

Применяется к: секрету с изменяемым значением

Проект должен определить владельца, максимальный срок действия, способ выпуска, активации и отзыва. Компонент должен принимать новое значение без изменения application artifact и атомарно переключаться на него.

Если provider требует период одновременной валидности, его продолжительность должна быть конечной. После подтверждения нового значения предыдущее должно быть отозвано и перестать использоваться.

Обоснование

Ротация, требующая незапланированной пересборки или мгновенного несогласованного переключения, увеличивает окно компрометации и риск отказа.

Проверка

  • integration-тест ротации под нагрузкой;
  • проверка прекращения использования старой версии;
  • аварийный тест внепланового отзыва.

Исключения

Перезапуск экземпляра MAY применяться для загрузки новой версии, если rollout сохраняет SLO и не требует нового артефакта.

SEC-SCRT-008. Недоступность и устаревание секрета

Уровень: MUST

Применяется к: получению или обновлению runtime-секрета

Отсутствие обязательного секрета при старте должно завершать запуск до приёма работы. Последняя принятая версия MAY кэшироваться только в защищённой памяти до документированного максимального срока.

После истечения срока компонент должен прекратить зависящую от секрета операцию либо перейти в явно определённый безопасный режим. Ошибка provider не должна приводить к неограниченным retry, записи значения или fallback на встроенный credential.

Обоснование

Бесконечное использование устаревшего значения скрывает отзыв, а небезопасный fallback превращает отказ secret manager в обход контроля доступа.

Проверка

  • тест отсутствия при старте, timeout provider и истечения cache;
  • тест ограниченных retry и безопасного режима;
  • проверка отсутствия значения в логах и crash report.

Исключения

Публичная операция, не использующая секрет, MAY продолжать работу при изолированном отказе защищённой возможности.

SEC-SCRT-009. Аудит доступа и минимизация значения

Уровень: MUST

Применяется к: чтению и административному изменению production-секрета

Должны фиксироваться identity, имя секрета, версия, операция и результат без открытого значения. Компонент должен получать только необходимые ему секреты, а административные права выпуска и отзыва должны быть отделены от runtime- identity.

Секрет должен находиться в памяти минимально необходимое время и не должен передаваться в telemetry, child process или diagnostic endpoint.

Обоснование

Разделение runtime и management-доступа ограничивает последствия компрометации компонента и позволяет расследовать использование секрета.

Проверка

  • review scopes runtime и administrative identities;
  • аудит успешного и запрещённого чтения;
  • контролируемое сканирование telemetry и process tree.

Исключения

Не допускаются для записи открытого значения.