Понимание учетной записи службы и областей действия для экземпляров вычислений gcloud - PullRequest
0 голосов
/ 25 сентября 2019

Я создал экземпляр вычисления gcloud, в котором я хотел бы выполнять операции внутри одного проекта с использованием областей storage.objects.get и firebasedatabase.instances.update.

Каждый экземпляр создается с учетной записью службы по умолчанию Compute Enginenumbers-compute@developer.gserviceaccount.com, у которого есть Editor ролей в проекте.Из-за этого я предположил, что экземпляр будет иметь необходимые разрешения при инициализации с использованием

admin.initializeApp({
  credential: admin.credential.applicationDefault()
});

Однако запрос экземпляра Firestore приводит к ошибке Request had insufficient authentication scopes.

Теперь я заметил, что еслиI gcloud compute instances describe my-instance В результате упоминаются как электронная почта, так и области действия для serviceAccounts:

"serviceAccounts": [
    {
      "email": "numbers-compute@developer.gserviceaccount.com",
      "scopes": [
        "https://www.googleapis.com/auth/devstorage.read_only",
        "https://www.googleapis.com/auth/logging.write",
        "https://www.googleapis.com/auth/monitoring.write",
        "https://www.googleapis.com/auth/pubsub",
        "https://www.googleapis.com/auth/service.management.readonly",
        "https://www.googleapis.com/auth/servicecontrol",
        "https://www.googleapis.com/auth/trace.append"
      ]
    }
  ]

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

Даже если я хочу настроить свои области, мне потребуется некоторая помощь по переводу определений storage.objects.get и firebasedatabase.instances.update iam в формат https://www.googleapis.com/auth/scope.(https://www.googleapis.com/auth/firebasedatabase.instances.update не существует)

1 Ответ

0 голосов
/ 25 сентября 2019

Роли, такие как Владелец, Редактор и Средство просмотра - это то, что мы называем примитивными ролями [1]. Они не содержат разрешений для каждого ресурса в GCP.Я бы предложил создать пользовательскую роль с желаемыми разрешениями или выбрать соответствующую предопределенную роль [2].

[1] https://cloud.google.com/iam/docs/understanding-roles#primitive_roles

[2] https://cloud.google.com/iam/docs/understanding-roles#firebase-roles

...