Я пытаюсь разработать приложение Django для GAE и использую CloudBuild для CI / CD. Мне интересно, как лучше всего передать секреты в мое приложение (учетные данные БД и т. Д. c).
Мне удалось выполнить инструкции на https://cloud.google.com/cloud-build/docs/securing-builds/use-encrypted-secrets-credentials, чтобы прочитать секрет из моего этапа сборки, и передать его в мое приложение в качестве переменной среды. Это немного глупо, но работает:
- name: gcr.io/cloud-builders/gcloud
entrypoint: 'bash'
args:
- '-c'
- |
TEST_PW=$(gcloud secrets versions access latest --secret=test-key)
echo "TEST_PASSWORD=$${TEST_PW}" >> env_vars
unset TEST_PW
Однако я не уверен, безопасна ли эта практика. Я сбросил переменные env при запуске в моем приложении (используя print(dict(os.environ))
, и единственными чувствительными значениями являются секреты, которые я передал (все другие связанные с приложением GAE значения являются нечувствительными данными).
Итак, вопросы:
1) Безопасно ли хранить секреты в переменных env в приложении в AppEngine, т. Е. Можно ли их украсть, "как-то" сбросив их через print(dict(os.environ))
?
2) Или это лучший вариант получить их из Secret Manager в Django (например, в settings.py
)? (Меня беспокоит перезапуск или переключение версий здесь, и если они повлияют на эту опцию)
3) Или есть еще лучший вариант?
Спасибо.