#google-cloud-functions
#google-cloud-функции
Вопрос:
Я создал облачную функцию Google, и в разрешениях я добавил роль «Вызывателя облачных функций» для 3 отдельных пользователей, которых я хочу, чтобы иметь возможность запускать эту функцию.
Функция доступна в предоставленной конечной точке триггера, аналогично этому: https://us-central1-name-of-my-app.cloudfunctions.net/function-name
Я назначил себе роль вызывающего в функции. Когда я ввожу URL-адрес, я получаю 403
У вашего клиента нет разрешения на получение URL-адреса / имени функции с этого сервера.
Поскольку я уже вошел в свою учетную запись Google, я предполагал, что у меня будут разрешения на доступ к этой функции.
Если нет, то как я могу показать запрос аутентификации как часть функции, не раскрывая всю функцию через allUsers?
Комментарии:
1. Элементы управления аутентификацией Google IAM для облачных функций несовместимы с вызовом из браузера. Браузер не собирается отправлять учетные данные пользователя для авторизации — он предназначен только для доступа к учетной записи службы, где токен аутентификации установлен в заголовках запроса. Если вам нужен веб-интерфейс, вам придется его создать.
Ответ №1:
Вы не можете вызвать функцию напрямую, даже если вы прошли проверку подлинности в своем браузере (эта функция появится позже, когда вы будете находиться за глобальным балансировщиком нагрузки и с активированным IAP).
Итак, для вызова вашей функции вы должны представить идентификационный токен (не токен доступа). Для этого вы можете использовать gcloud SDK с помощью такой команды (в Linux и после инициализации ее с помощью ваших учетных данных пользователя ( gcloud init
))
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://....
Вы также можете создать перед ним шлюз API (я написал об этом статью) и использовать, например, ключи API.
Комментарии:
1. Спасибо. В итоге я перенес свою функцию в Google App Engine вместо облачных функций и защитил ее с помощью IAP, чтобы получить желаемую функциональность.