Проверка подлинности запроса от облачных функций к конечным точкам Google с помощью учетной записи службы - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть простая облачная функция, которая вызывается созданием нового пользователя на Firebase Auth, который делает запрос POST к службе, работающей в Google Kubernetes Engine вместе с ESP (Google-Endpoints).

Из того, что я смог понять, прочитав «Аутентификация между службами» Я должен иметь возможность определить межсетевую аутентификацию, назначив определение безопасности. связанные с учетной записью службы с ролью создателя маркера учетной записи службы. Как мне сделать так, чтобы аутентифицировать этот запрос, используя учетные записи служб, чтобы только эта функция могла выполнить этот запрос? Может ли эта учетная запись службы быть как-то отнесена к функции? Пожалуйста, направьте меня по этому вопросу.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Может ли эта учетная запись службы быть как-то отнесена к функции? Пожалуйста, сообщите мне об этой проблеме.

Во время выполнения функции Cloud Functions использует служебную учетную запись PROJECT_ID@appspot.gserviceaccount.com в качестве своей личности. Тем не менее, вы можете назначить для вашей функции свой собственный идентификатор. Вы можете развернуть облачную функцию с учетной записью службы, которая имеет правильную роль.

Затем функция использует закрытый ключ учетной записи службы для подписи защищенного веб-токена JSON (JWT) и отправляет подписанный JWT в запросе наваш API.

Вы настроите свой API для поддержки аутентификации, добавив учетную запись службы в качестве эмитента в документ OpenAPI.

Перед тем, как ESP направит запрос вашему API, ESP проверяет: подпись,претензии эмитента, претензии аудитории и токен.

Таким образом, только эта функция может сделать запрос API.

Здесь вы можете найти официальную документацию Идентификация функции , Аутентификация между службами .

0 голосов
/ 07 ноября 2019

Облачные функции по умолчанию используют учетную запись службы App Engine.

Для этого вам необходимо выполнить следующие четыре шага:

1) Добавить учетную запись службы в список доступа для проекта, защищенного облачным IAP

2) Сгенерировать основанный на JWT токен доступа

3) Запросить токен OIDC для идентификатора клиента, защищенного с помощью Cloud IAP

4) Включите токен OIDC в ​​заголовок Авторизация: Носитель для выполнения аутентифицированного запроса к приложению, защищенному Cloud IAP

Здесь вы можете увидеть руководство, в котором эти шаги подробно объясняютсяи некоторый пример кода для достижения программной авторизации учетной записи службы по умолчанию.

...