Я создал экземпляр вычисления 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
не существует)