Google Cloud Build – доступ к секретам другого проекта во время сборки

В моем проекте есть настройка сборки для производства и разработки в проекте сборки облака GCP. Это отдельные проекты с отдельными секретами. Обычно мы хотим, чтобы prod использовал только секреты prod, а dev — секреты разработчика.

Однако нам бы хотелось, чтобы модульные тесты выполнялись как для продукта, так и для разработки, и чтобы сборка не завершилась в случае сбоя. Модульные тесты всегда используют секреты среды разработки.

Есть ли способ предоставить учетной записи службы облачной сборки производственных сред доступ к секретам среды разработки?

Вот что я пытался сделать:

availableSecrets:
  secretManager:
    - versionName: projects/$PROJECT_ID/secrets/github_token/versions/latest
      env: 'GITHUB_TOKEN'
    - versionName: projects/617239722448/secrets/gpapi-gcr-env-dev/versions/latest
      env: 'DEV_TEST_ENV'

и используйте $$DEV_TEST_ENV в строфе, чтобы записать секреты в файл .env.test, который используют тесты (используется secretEnv: ['DEV_TEST_ENV'] в строфе).

Это приводит к ошибке, указывающей, что конкретная учетная запись службы не имела доступа к секретам среды разработки сразу после запуска сборки (даже не выполняла никаких шагов).

Итак, я попробовал следовать этим инструкциям, чтобы предоставить сервисной учетной записи из-за ошибки доступ к секретам разработчика. Кажется, это не работает. Я заметил в IAM, что для этой учетной записи службы в проекте разработки, когда я предоставил доступ, не указана информация о безопасности (в отличие от учетной записи prod, где эта учетная запись показывает информацию)... см. снимок экрана ниже, чтобы понять, что я имею в виду. Это заставляет меня думать, что на самом деле это не предоставление доступа.

Есть идеи, как заставить это работать?

Попробуйте использовать новую учетную запись службы для обоих проектов вместо учетной записи службы облачной сборки по умолчанию; это может решить вашу проблему. Также убедитесь, что обе новые учетные записи службы имеют роль секретного доступа диспетчера секретов.

Kapil Sakhare 09.04.2024 11:53

Как мне дать указание облачной сборке использовать эту учетную запись службы для сборки?

stuckj 09.04.2024 17:45

Обратитесь к этому официальному документу GCP для настройки доступа к учетной записи службы Cloud Build.

Kapil Sakhare 10.04.2024 14:07

Я понял это. Спасибо @Капил Схаре. Я начал создавать новую учетную запись службы и при этом заметил, что фактически предоставил доступ к учетной записи службы COMPUTE по умолчанию в разработке, а не к облачной сборке. Они так близки по названию. Облачная сборка не отображается по умолчанию. Отображается только после установки флажка «Включить предоставление ролей от Google».

stuckj 10.04.2024 22:56
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
142
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это была моя собственная глупость. Имена субъектов учетных записей служб очень близки по именам. Я вставил субъект учетной записи вычислительной службы в свой проект разработки. Учетная запись службы Cloudbuild отображается в списке только тогда, когда вы устанавливаете флажок Include Google-provided role grants, как показано ниже. Вычислительный вариант появился в списке первым и на первый взгляд выглядел так же, как принцип учетной записи службы облачной сборки.

После добавления ПРАВИЛЬНОЙ сервисной учетной записи в проект dev IAM и предоставления ей роли Secret Manager Secret Accessor все работает.

Другие вопросы по теме