Как указать secretEnv для cloudbuild.yaml через gcloud cli args или переменные окружения - PullRequest
3 голосов
/ 31 января 2020

Если я следую за облачной сборкой документ , я должен указать зашифрованный секрет в cloudbuild.yaml.

secrets:
- kmsKeyName: projects/[PROJECT-ID]/locations/global/keyRings/[KEYRING-NAME]/cryptoKeys/[KEY-NAME]
  secretEnv:
    MY_SECRET: <base64-encoded encrypted secret>

Даже если он зашифрован, я не передаю секретное значение в коде. Пожалуйста, скажите мне по-другому.

отл. через аргументы из сборок gcloud передайте переменные команды или окружения, ... et c

1 Ответ

5 голосов
/ 31 января 2020

Вместо этого вы можете использовать Google Secret Manager . Мы все еще обновляем документацию, но есть пример того, как вы можете использовать ее с Cloud Build:

Сначала создайте секрет:

$ echo -n "my-secret-data" | gcloud beta secrets create "my-api-key" \
    --replication-policy "automatic" \
    --data-file -

Предоставьте учетную запись службы Cloud Build Service разрешение на доступ к вашему секрету:

$ gcloud beta secrets add-iam-policy-binding "my-api-key" \
    --member "serviceAccount:<project-number>@cloudbuild.gserviceaccount.com" \
    --role "roles/secretmanager.secretAccessor"

Затем получите секрет на ваших шагах сборки:

steps:
- name: 'gcr.io/cloud-builders/gcloud@sha256:c1dfa4702cae9416b28c45c9dcb7d48102043578d80bfdca57488f6179c2211b'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
       gcloud beta secrets versions access --secret=my-api-key latest > /secrets/my-api-key
  volumes:
  - name: 'secrets'
    path: '/secrets'

- name: 'my-step'
  volumes:
  - name: 'secrets'
    path: '/secrets'
  args: # ... /secrets/my-api-key contains the secret
...