#google-app-engine #google-cloud-platform #google-cloud-build
#google-app-engine #google-облачная платформа #google-cloud-build
Вопрос:
У меня есть секретный токен в моем движке приложений app.yaml
env_variables:
TOKEN: super-secret-token
И, очевидно, этот токен отсутствует в git. Как я могу установить этот параметр TOKEN
во время сборки или раньше при использовании Google Cloud Build?
Ответ №1:
Вы можете использовать Secret Manager в Cloud Build, чтобы получить фактический секрет и заменить super-secret-token
значение-заполнитель в app.yaml перед развертыванием вашего приложения в App Engine. Это выглядело бы примерно так:
steps:
- name: gcr.io/cloud-builders/gcloud
entrypoint: 'bash'
args: [ '-c', "gcloud secrets versions access latest --secret=secret-name --format='get(payload.data)' | tr '_-' '/ ' | base64 -d > decrypted-data.txt" ]
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: /bin/sh
args:
- '-c'
- |
sed "s/super-secret-token/g" $(cat decrypted-data.txt)
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: 'bash'
args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 amp;amp; gcloud app deploy']
timeout: '1600s'
Сказав это, ваш секретный токен по-прежнему будет доступен в незашифрованном виде в переменной среды вашего движка приложений, что не является оптимальным с точки зрения безопасности. Вместо этого вы можете запросить Secret Manager непосредственно из кода движка вашего приложения. Примеры кода для этого вы найдете здесь.
Комментарии:
1. Это супер некрасиво, ха-ха!
2. Я думаю, мне следует использовать облачный запуск, там я могу напрямую редактировать переменные среды
3. хе-хе, ну, это довольно распространенный вариант использования, например, в этом примере CD для создания нового манифеста для GKE.
4. В соответствии с облачным запуском действительно проще обрабатывать переменные среды, чем в App Engine, хотя они также не зашифрованы, и вы не должны хранить свои секреты таким образом, как описано в предостережении здесь