HTTP-запросы от вычислительного движка к стандарту движка приложения с учетной записью службы по умолчанию для вычислительного движка - PullRequest
0 голосов
/ 05 июня 2018

Мы хотим сделать безопасные HTTP-запросы от вычислительного механизма к стандарту appengine, которые аутентифицируются с помощью API пользователей Appengine

Пользователи API: https://cloud.google.com/appengine/docs/standard/go/users/

Стандартный обработчик GAE (защищен с помощью Users Api- логин: обязательно):

handlers:
- url: /securehandler/.*
  script: _go_app
  login: required
  secure: always

Мы пытались использовать эту библиотеку для создания аутентифицированного HTTPS-запроса от нашего вычислительного движка. Перейти к обработчику GAE, указанному выше:

https://godoc.org/golang.org/x/oauth2/google#ComputeTokenSource

client := &http.Client{
    Transport: &oauth2.Transport{
        // Fetch from Google Compute Engine's metadata server to retrieve
        // an access token for the provided account.
        // If no account is specified, "default" is used.
        Source: google.ComputeTokenSource(""),
    },
}
client.Get("https://myapp.appspot.com/securehandler/search")

Мы получаем ошибку HTTP 403 Forbidden.

Наша учетная запись службы подсистемы вычислений по умолчанию имеет права администратора и редактора App Engine в IAM.

Служба поддержки Google сообщила, что мы должныотправлять запросы стандартным обработчикам GAE с учетной записью службы вычислений по умолчанию.

Спасибо

1 Ответ

0 голосов
/ 05 июня 2018

При отправке защищенных HTTP-запросов из Compute Engine в приложение App Engine необходимо использовать поток авторизации пользователей [1], поскольку вы хотите, чтобы пользователи в приложении GAE предоставляли доступ к запросам, поступающим из GCE.API пользователей App Engine работает только для приложений, работающих на платформе App Engine.Я предполагаю, что ваш работает на экземпляре GCE.

HTTP-запросы, поступающие от других служб GCP, таких как GCE, в этом случае необходимо направлять напрямую, где URL-адрес включает имя или идентификатор ресурса [2].

например

http://[VERSION_ID].[SERVICE_ID].[MY_PROJECT_ID].appspot.com

https://[VERSION_ID]-dot-[SERVICE_ID]-dot-[MY_PROJECT_ID].appspot.com)

Просмотрите эту документацию, чтобы узнать, как обеспечить объем доступа в ваших запросах к информации пользователя, которой требует ваше приложение [3].

Надеюсь, что этопомогает указывать в правильном направлении.

[1] https://cloud.google.com/compute/docs/api/how-tos/authorization

[2] https://cloud.google.com/appengine/docs/standard/go/communicating-between-services

[3] https://cloud.google.com/compute/docs/api/how-tos/authorization#user_auth_flow

...