Доступ к переменным среды, хранящимся в Google Secret Manager, из Google Cloud Build - PullRequest
1 голос
/ 03 февраля 2020

Как я могу получить доступ к переменным, которые я определяю в Google Secret Manager из моего Google Cloud Build Pipeline?

1 Ответ

3 голосов
/ 03 февраля 2020

Вы можете получить доступ к секрету из Cloud Build с помощью стандартного Cloud Builder gcloud

Но есть 2 проблемы:

  1. Если вы хотите используйте секретное значение на другом шаге Cloud Build, вы должны сохранить свой секрет в файле, единственный способ повторно использовать предыдущее значение от одного шага к другому
  2. Текущий gcloud Cloud Builder не подходит для дата (сегодня, 3 февраля 2020 г.) Вы должны добавить обновление компонента gcloud для использования правильной версии. Я открыл для этого проблему.
steps:
    - name: gcr.io/cloud-builders/gcloud
      entrypoint: "bash"
      args:
          - "-c"
          - |
              gcloud components update
              # Store the secret is a temporary file
              gcloud beta secrets versions access --secret=MySecretName latest > my-secret-file.txt
    - name: AnotherCloudBuildStepImage
      entrypoint: "bash"
      args:
          - "-c"
          - |
              # For getting the secret and pass it to a command/script
              ./my-script.sh $(cat my-secret-file.txt)

Подумайте о предоставлении роли Secret Manager Secret Accessor roles/secretmanager.secretAccessor учетной записи службы Cloud Build по умолчанию <PROJECT_ID>@cloudbuild.gserviceaccount.com

РЕДАКТИРОВАТЬ

Вы можете получить доступ к секрету из любого места, либо с помощью установленного gcloud CLI (и инициализированного с помощью учетной записи службы, авторизованной для доступа к секретам), либо с помощью вызова API

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://secretmanager.googleapis.com/v1beta1/projects/PROJECT_ID/secrets/MySecretName/versions/latest:access

Примечание. Вы получаете секрет в поле данных в формате base64. Не забудьте декодировать его перед использованием!

Вы должны сгенерировать токен доступа для учетной записи службы с правильной предоставленной ролью. Здесь я снова использую gcloud, потому что это проще. Но в соответствии с вашей платформой используйте наиболее подходящий метод. Сценарий python также может выполнять эту работу.

...