Не совсем ответ:
- Если вы сохраняете ключи в модели, любой, кто может развернуть, может прочитать ключи из модели и выполнить развертывание снова, чтобы скрыть свои следы. Хотя Google позволяет загружать код (если вы не отключите эту функцию), я думаю, что он сохраняет только последнюю копию каждой пронумерованной версии.
- Если вы храните ключи в незарегистрированном конфигурационном файле и отключаете загрузку кода, то только люди с ключами могут успешно развертывать, но никто не может прочитать ключи, не пробираясь в бэкдор в развертывание (потенциально это не так сложно) .
В конце концов, любой, кто может выполнить развертывание, может получить ключи, поэтому вопрос заключается в том, считаете ли вы, что риск сводится к минимуму путем хранения ключей в хранилище данных (например, для резервного копирования), или при машины развертывания.
Жизнеспособной альтернативой может быть объединение двух: хранить зашифрованные ключи API в хранилище данных и поместить главный ключ в файл конфигурации. Это имеет некоторые потенциально хорошие функции:
- Злоумышленникам необходим как доступ к копии хранилища данных, так и копия файла конфигурации (и, по-видимому, разработчики не создают резервные копии хранилища данных на ноутбуке и не теряют его в поезде).
- Указав два ключа в конфигурационном файле, вы можете выполнять смену ключей (поэтому злоумышленникам требуется хранилище данных / конфигурация того же возраста).
- Асимметричная криптография позволяет разработчикам добавлять API-ключ к хранилищу данных без необходимости читать другие.
Конечно, тогда вы загружаете криптографию на серверы Google, что может или не может считаться «экспортом» криптографии с обычными юридическими проблемами (например, что если Google настроит Азиатско-Тихоокеанский центр обработки данных?).