ЧАСТЬ 1
Что контролирует доступ для отдельных виртуальных машин, кроме областей доступа?
Объединение областей Compute Engine и разрешений сервисного аккаунта.
Области Google Compute Engine ограничивают разрешения, области не предоставляют разрешения.
Учетная запись службы, назначенная Compute Engine, определяет доступные разрешения/роли. Области действия могут ограничивать разрешения, предоставленные учетной записи службы. Области не могут предоставлять разрешения, которых еще нет у учетной записи службы.
Области — это устаревший механизм авторизации.
ЧАСТЬ 2
gcloud iam service-accounts list ОШИБКА: (gcloud.iam.service-accounts.list) Пользователь [] не имеет разрешения на доступ к экземпляру проекта [] (или он может не существовать): в запросе недостаточно областей проверки подлинности.
Часть этого сообщения сбивает с толку большинство людей. Scopes — это устаревший механизм аутентификации, который Google использовал до IAM. Области аналогичны разрешениям и в этом сообщении означают OAuth 2 Permissions
.
Для команды gcloud iam service-accounts list
требуется разрешение iam.serviceAccounts.list
, которое присутствует в таких ролях, как roles/iam.serviceAccountUser
с именем Service Account User
. Учетная запись службы, упомянутая в ошибке, не имеет ни одной из ролей, предоставляющих разрешение на перечисление учетных записей служб, или Области ограничивают разрешение, предоставленное учетной записи службы. Прочтите мою рекомендацию в конце.
Роли сервисного аккаунта
Часть 3
Если я смотрю на роли IAM проекта, у моего пользователя есть следующие роли:
Роли, назначенные пользователю, не связаны с ролями, назначенными сервисной учетной записи Compute Engine.
Если вы вошли в Compute Engine с помощью SSH и ничего не сделали для аутентификации, значит, вы используете учетные данные служебной учетной записи Compute Engine по умолчанию. Учетная запись службы и области действия влияют на ваши разрешения.
Если вы вошли в Compute Engine с помощью SSH и используете свою собственную учетную запись для аутентификации (gcloud auth login
или аналогичную), то ваше удостоверение пользователя использует разрешения, предоставленные вашей учетной записи пользователя, а не учетные данные учетной записи службы Compute Engine по умолчанию.
Часть 4
Исходная виртуальная машина — это ubuntu-16, новая виртуальная машина — ubuntu-18, только что созданная из образа Google.
Если области одинаковы для обеих виртуальных машин, проблема заключается в служебной учетной записи. Обычно виртуальные машины Compute Engine используют учетную запись службы Compute Engine по умолчанию. Вы можете изменить учетную запись службы, назначенную каждой виртуальной машине. Дважды проверьте, что назначено каждой виртуальной машине.
Сводка
Я рекомендую вам установить области на Allow full access to all Cloud APIs
и управлять разрешениями с помощью ролей, предоставленных учетной записи службы. Не используйте такие роли, как Project Owner
или Project Editor
. Эти роли очень сильные. Используйте детальные разрешения для каждой службы Google Cloud, к которой Compute Engine должен получить доступ.
person
John Hanley
schedule
28.11.2020