Очень хороший вопрос и нет абсолютного правильного ответа ИМО.
Вопросы спросить себя:
1) Каково влияние ключа становится известной
2) Каков уровень доверия в компании
3) Насколько важно для инженеров, чтобы иметь возможность производить выпуск строит
Идеи я использовал на протяжении многих лет включают в себя:
Хранится в хранилище управления версиями, но с ограниченным «secure_group» доступа
Pros
- Key пролиферация снижается
- Права доступа контролируются Scm админов
Cons
- сборки выпуска ограничен теми с защищенными правами
- Требуется неявное доверие защищенных членов группы
Ключи, введенные системой сборки Стандартная сборка содержит фиктивный ключ (ключи).
Release сборок генерируется сервер сборки, который не заменяет или впрыскивает ключи производства
Pros
- Нет узкое места на инженерах, когда код
- Управление ключей здания ограничивается построить сервер + админ
Против
- Все данные/системы должны поддерживать фиктивный ключ
- Построить сервер становится узкое место/критически важный компонент
Пользовательского DRM пакет
Создайте свой собственный пакет ключей RSA, т.е. зашифрован заголовок с сеансом генерируется симметричный ключ для шифрования данных ключа. DRM подход также позволяет делать такие вещи, как набор пакетов истечения времени или максимального количество использований
Pros
- Ключи может быть заключены
- ключей может безопасно распределен
- аудит след, как ключевой пакет генерируется для каждого пользователя по требованию с паба/секретный ключ пары
Cons
- много пользовательского кода
- Все построения системы должны быть реорганизованы, чтобы прочитать основные данные пакета - Key Package необходимо Lib/API для извлечения и поэтому инженер может читать ключевые данные
Есть другие варианты таких как защищенный сервер шифрования или веб-сайты аутентификации с двумя проходами для извлечения ключевых данных.
В моем опыте нет идеального решения, хотя я был бы очень интересно услышать предложения или мнения от сообщества
Надежда, что помогает