Я не могу получить доступ к API вычислений с помощью gcloud?

У меня есть экземпляр, работающий с областью доступа "Установить доступ для каждого API" и явно разрешающий API Compute Engine с доступом для чтения и записи, как показано на этом изображении ниже.

Список доступа API

Итак, я зашел внутрь экземпляра через SSH и попытался запустить эту команду:-

gcloud compute instances list

и я получил ошибку:

- Required 'compute.zones.list' permission for 'projects/dotted-hxxl-xxx'

Мой пользователь явно разрешает доступ к Compute Engine API, но я все равно получаю сообщение об ошибке. Я не должен получать эту ошибку, верно? Что мне здесь не хватает?

2 ответа

  1. остановить экземпляр вычислительной машины

gcloud compute instances stop instance-1 --zone us-central1-c

  1. получить сервисный аккаунт экземпляра

gcloud compute instances describe instance-1 --zone us-central1-c | grep email

  1. назначить роль roles/compute.instanceAdmin в сервисный аккаунт

gcloud projects add-iam-policy-binding your_project -- member="serviceAccount:SERVICE_ACCOUNT_ID@your_project.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin"

  1. запустить экземпляр

gcloud compute instances start instance-1 --zone us-central1-c

  1. ssh к экземпляру

gcloud compute ssh instance-1 --zone us-central1-c

  1. запустите команду gcloud

gcloud compute instances list

Также прочтите о разнице между ролями IAM и областями действия OAuth.

Когда вы настраиваете экземпляр для работы в качестве учетной записи службы, вы определяете уровень доступа, который имеет учетная запись службы, по ролям IAM, которые вы предоставляете учетной записи службы. Если учетная запись службы не имеет ролей IAM, то учетная запись службы в этом экземпляре не может запускать методы API.

Более того, области доступа экземпляра определяют области действия OAuth по умолчанию для запросов, сделанных через инструмент gcloud и клиентские библиотеки на экземпляре. В результате области доступа потенциально дополнительно ограничивают доступ к методам API при аутентификации через OAuth.

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

  • Перейдите к подробным сведениям о вычислительном движке и просмотрите раздел "Учетная запись службы".
  • Если есть сервисный аккаунт, проверьте его разрешения.
  • Если нет, добавьте учетную запись службы на свою виртуальную машину (вам нужно будет остановить ее, чтобы выполнить эту операцию).
Другие вопросы по тегам