Переменные среды построения Google Cloud и App Engine

#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, хотя они также не зашифрованы, и вы не должны хранить свои секреты таким образом, как описано в предостережении здесь