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

#google-cloud-dataflow

#google-облако-поток данных

Вопрос:

Мое задание потока данных завершается с ошибкой при попытке доступа к секрету:

«Исключение в потоке «main» com.google.api.gax.rpc.PermissionDeniedException: исключение ввода-вывода.grpc.StatusRuntimeException: PERMISSION_DENIED: разрешение’secretmanager.versions.access’ отказано для ресурса ‘проекты / ОТРЕДАКТИРОВАННЫЕ / секреты / ОТРЕДАКТИРОВАННЫЕ / версии / последние’ (или оно может не существовать)».

Я запускаю задание с помощью gcloud dataflow flex-template run . Я могу просмотреть секрет в консоли. Тот же код работает, когда я запускаю его на своем ноутбуке. Насколько я понимаю, когда я отправляю задание с помощью приведенной выше команды, оно выполняется под учетной записью службы, которая может иметь разные разрешения. Как определить, под какой учетной записью службы выполняется задание?

Ответ №1:

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

  • Откройте консоль GCP
  • Откройте ведение журнала -> Обозреватель журналов (убедитесь, что вы не используете «Устаревший просмотрщик журналов»)
  • В построителе запросов введите protoPayload.serviceName="compute.googleapis.com"
  • Нажмите кнопку Выполнить запрос
  • Разверните запись для v1.compute_instances.create или любых других ресурсов, используемых compute.googleapis.com
  • Вы должны иметь возможность видеть учетную запись службы, используемую для создания экземпляра. Эта учетная запись службы (выделена красным цветом) используется для всего, что связано с выполнением задания потока данных.

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

введите описание изображения здесь

Ответ №2:

По умолчанию рабочие узлы потока данных выполняются с учетной записью службы compute engine по умолчанию ( YOUR_PROJECT_NUMBER-compute@developer.gserviceaccount.com ), не имеющей прав доступа к секретному доступу Secret Manager.

Либо вам нужно добавить эти права к учетной записи службы, либо вы должны указать учетную запись службы в параметрах конвейера:

 gcloud dataflow flex-template run ... --parameters service_account_email="your-service-account-name@YOUR_PROJECT_NUMBER.iam.gserviceaccount.com"