Отраслевая программа «ИТ-компания» · курс «Безопасная разработка» · модуль 2 из 3

Работа с секретами и учётными данными в коде

Секрет — это пароль, ключ доступа, маркер службы или строка подключения, которые дают доступ к системе. Этот модуль объясняет, почему секретам не место в хранилище кода, как их выдавать и менять и что делать, если секрет оказался в общем доступе.

Цель модуля

Научить разработчика хранить и использовать секреты так, чтобы они не попадали в хранилище кода, историю изменений, журналы и переписку, и действовать по правильному порядку при утечке секрета.

Что считается секретом

Почему секрет нельзя фиксировать в хранилище кода

История изменений хранится целиком и почти всегда доступна шире, чем текущая версия: к ней имеют доступ все, у кого есть копия хранилища, включая бывших работников, подрядчиков и внешние сборочные системы. Даже если удалить строку новым изменением, прежнее значение остаётся в истории и извлекается одной командой.

Секрет, попавший в хранилище, нельзя считать тайной. Единственный правильный выход — считать его раскрытым и заменить.

Как работать с секретами правильно

  1. Храните секреты в отдельной службе управления секретами или в переменных окружения, которые подставляются при запуске.
  2. Выдавайте каждому приложению и каждому разработчику собственный секрет: общий секрет нельзя отозвать точечно.
  3. Ограничивайте срок жизни секрета и меняйте его по расписанию.
  4. Разделяйте секреты сред: ключ от промышленной среды не используется на тестовой и наоборот.
  5. Не выводите секреты в журналы и сообщения об ошибке, маскируйте значения перед записью.
  6. Добавьте защитный список в настройках хранилища кода, чтобы файлы настроек и ключи не загружались по невнимательности.

Типовые ошибки

Если секрет раскрыт

Проверочный список перед выходом на работу

Вопросы для самопроверки

  1. Разработчик удалил файл с паролем следующим изменением. Секрет в безопасности? Нет. Значение остаётся в истории хранилища, поэтому секрет считается раскрытым и подлежит замене.
  2. Почему общий секрет на всех разработчиков — плохо? Его нельзя отозвать у одного человека; при уходе сотрудника приходится менять ключ у всех и во всех службах.
  3. Чем опасен вывод секрета в журнал? Журналы читает широкий круг специалистов, они копируются и хранятся дольше, чем нужен сам секрет.

Основание и что делать при сомнении

Модуль опирается на: ГОСТ Р 56939-2016 «Защита информации. Разработка безопасного программного обеспечения», приказ ФСТЭК России от 11.02.2013 № 17.

Если ситуация не описана в модуле и вы не уверены в правильном действии, не принимайте решение самостоятельно: обратитесь к руководителю и в службу информационной безопасности до того, как выполнить операцию с данными или доступами.