API облачного хранилища Google: не удается сгенерировать токен доступа, доступ запрещен

# #google-cloud-platform #google-cloud-firestore #oauth-2.0 #google-api #google-cloud-storage

Вопрос:

Я новичок в API Google и уже несколько дней пытаюсь использовать учетную запись службы для загрузки контента в хранилище Google Cloud. Я могу это сделать, но только с помощью временного токена доступа, полученного с игровой площадки Google API, и мне нужно иметь возможность получать новые токены доступа, чтобы учетная запись службы всегда могла загружать контент.

Я экспериментировал со следующим, но мне все время отказывают в доступе, даже несмотря на то, что у рассматриваемой учетной записи есть разрешения «владельца».

 curl -X POST / -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)  -H "Content-Type: application/json; charset=utf-8"  -d @Documents/request.json  https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/content-uploader@kol-hatorah-kulah.iam.gserviceaccount.com:generateAccessToken
 

ответ:

 { "error": { "code": 403, "message": "The caller does not have permission", "status": "PERMISSION_DENIED" } }
 

Когда я запускаю gcloud config list , я получаю правильный проект, и учетная запись-это моя рабочая электронная почта, которая также находится в облаке Google в качестве владельца.

Заранее спасибо!

Ответ №1:

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

Добавьте роль роли/iam.serviceAccountTokenCreator в идентификатор, выполняющий команду.

Комментарии:

1. Попробовал это. Получил ту же ошибку — хотя спасибо. Правка: возможно, это действительно сработало и заняло всего минуту. Я собираюсь подтвердить это, и если это сработает, я отмечу ваш ответ. Спасибо!

2. @DavidReese — Google Cloud IAM-это глобальная служба. Для глобального распространения изменений может потребоваться минута или две.