Как мне получить доступ к переменным, которые я определяю в Google Secret Manager из моего конвейера сборки Google Cloud?
Доступ к переменным среды, хранящимся в Google Secret Manager, из Google Cloud Build
Ответы (1)
Вы можете получить доступ к секрету из Cloud Build, используя стандартный Cloud Builder gcloud
Но есть 2 проблемы:
- Если вы хотите использовать секретное значение на другом шаге Cloud Build, вы должны сохранить свой секрет в файле, это единственный способ повторно использовать предыдущее значение с одного шага на другой.
- Текущая версия Cloud Builder gcloud устарела (сегодня, 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 (и инициализированным с помощью учетной записи службы, авторизованной для доступа к секретам), либо через вызов 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 также может выполнить эту работу.
ИЗМЕНИТЬ 2
Новый способ получить секреты теперь в облаке Строить. Меньше бойлера, безопаснее. Посмотрите и используйте этот способ сейчас.
File "/usr/local/lib/python3.8/site-packages/environ/environ.py", line 273, in get_value value = self.ENVIRON[var] File "/usr/local/lib/python3.8/os.py", line 675, in __getitem__ raise KeyError(key) from None KeyError: 'SECRET_KEY'
codelabs.developers.google.com/codelabs/cloud-run-wagtail#7
- person dev-jeff; 24.12.2020