Я думаю, что я должен поместить комментарии в один ответ.
Основная проблема заключается в том, что конфиденциальные данные не должны использовать те же каналы распространения, что и код.Вот почему .gitignore недостаточно.Вы будете использовать тот же канал и зависеть от правильной обработки файла .gitignore, который может изменить любой пользователь.Возможность ошибки всегда будет там.
Приемлемо ли это, зависит от типа секретов.Насколько конфиденциальны эти данные?Если он содержит пароль sa
или sys
для базы данных разработки, не используйте эту учетную запись.Используйте отдельную учетную запись с ограниченными правами, которая предназначена только для доступа к этой базе данных.Потеря пароля для учетной записи ограниченного разработчика, вероятно, не является большой проблемой.Наверное.
С другой стороны, если он содержит API или ключи учетной записи для вашей облачной среды разработки / размещения, упс.Это может быть промежуточная среда, но кто-то может использовать их для запуска виртуальных машин, создания учетных записей или кражи данных.
Большим преимуществом инструмента секретов является то, что он работает внутри архитектуры конфигурации.Для приложения он выглядит просто как другой поставщик конфигурации, который может использоваться или не использоваться, в зависимости, например, от переменной среды или параметра командной строки.
Это не опция only , простоудобный способ обработки секретов, особенно в распределенной среде или среде разработки OSS.Есть и другие варианты:
В корпоративной среде вы можете поместить файл «секретов» в общий файловый ресурс, где только члены команды имеют доступ для чтения и совместно используют местоположение через другого поставщика конфигурации.Например, через переменные среды.Файл может быть защищен через группу безопасности, что означает, что добавить / удалить доступ к нему будет намного проще, чем добавить / удалить доступ к отдельным файлам.Вы можете включить аудит на общей папке, чтобы увидеть, кто также получает доступ к файлу секретов.Это то, что вы не можете сделать с .gitignore
Вы можете использовать переменные среды для выбора различных путей для среды (разработка, qa, сервер сборки и т. Д.).
Вы даже можете использовать базу данных, которая возвращает разные секреты разным ролям / средам.В конце концов, система управления ключами может рассматриваться как криптографически защищенная база данных настроек.
Вы также можете скопировать некоторые файлы настроек.Вы можете сделать это с помощью etcd в Linux или репликации файлов в Windows.Это один из способов доставки изменений настроек на несколько серверов / контейнеров.