Google Compute Engine для записи / чтения метаданных - PullRequest
0 голосов
/ 01 марта 2019

Я столкнулся с проблемой при попытке добавить метаданные к экземпляру Compute Engine из себя (изнутри экземпляра).

В IAM я создал специальную учетную запись службы с ролью Compute Instance Admin (v1) test-compute@test.iam.gserviceaccount.com

При создании экземпляра виртуальной машины я указываю предыдущую учетную запись службы: test-compute@test.iam.gserviceaccount.com

При подключении с помощью ssh к виртуальной машине я вижу, что для учетной записи установлена ​​правильная учетная запись службы.

gcloud config list
[core]
account = test-compute@test.iam.gserviceaccount.com
disable_usage_reporting = True
project = test-project

Your active configuration is: [default]

Затем, когда я пытаюсь добавить метаданные в свою ВМ (из самой ВМ), я получаю эту ошибку.

gcloud compute instances add-metadata --metadata "start=true" --zone europe-
west1-b <INSTANCE_NAME>
ERROR: (gcloud.compute.instances.add-metadata) Could not fetch resource:
 - The user does not have access to service account 'test-compute@test.iam.gserviceaccount.com'.  U
ser: 'test-compute@test.iam.gserviceaccount.com'.  Ask a project owner to grant you the iam.service
AccountUser role on the service account

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Когда я добавляю roles/iam.serviceAccountUser в свою учетную запись службы, это работает.Поскольку пользователь является учетной записью службы (User == ServiceAccount), я не понимаю, почему мне нужно добавить эту роль?

0 голосов
/ 02 марта 2019

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

  1. У вашего экземпляра виртуальной машины нет необходимых областей действия.
  2. У вашей учетной записи службы нет необходимых ролей IAM.

Учетная запись службы по умолчанию для Compute Engine имеет только роль редактора.Однако это часто изменяется, поэтому я указываю двухэтапный процесс для решения этой проблемы.

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

  • Перейти кCompute Engine -> экземпляры виртуальных машин.
  • Завершите работу вашего экземпляра.
  • Нажмите на свой экземпляр.
  • Нажмите на кнопку «ПРАВКА» вверху.
  • Прокрутите вниз и нажмите «Установить доступ для каждого API».
  • Прокрутите вниз до «Compute Engine»
  • Измените разрешение на «Чтение-запись».
  • Нажмите «Сохранить» и запустите свой экземпляр.

Обратите внимание, что экземпляр виртуальной машины «Облачные области доступа к API» не может предоставить разрешения для экземпляра виртуальной машины, которого нет у вашей учетной записи службы.Если у вас все еще появляется то же сообщение об ошибке, вам нужно добавить роль roles/iam.serviceAccountUser в свою учетную запись службы.

  • Перейти к IAM & admin -> IAM
  • Найдите свойСервисный аккаунт.С правой стороны находится значок карандаша.Щелкните по нему.
  • Нажмите ДОБАВИТЬ В ДРУГУЮ РОЛЬ
  • Прокрутите вниз до Учетных записей служб.Выберите пользователя учетной записи службы.
  • Нажмите СОХРАНИТЬ.
  • Вернитесь к Перейти к Compute Engine -> Экземпляры виртуальной машины и запустите свой экземпляр.
...