Что мне нужно добавить в мой веб-запрос для GCP Cloud Function Security? - PullRequest
0 голосов
/ 09 июля 2019

Моя функция HTTP Cloud работает нормально, но она общедоступна. После тестирования я использовал консоль GCP, чтобы ограничить ее определенным пользователем (т.е. моей собственной учетной записью Google), и, как я и ожидал, я получаю 403 при отправке запросов на него. Это хорошо. Но я не знаю, что мне нужно добавить к моему запросу, чтобы обойти безопасность Google. Я предполагаю, что он хочет проверить заголовок для токена и проверить его по IAM, но я пока не нашел никаких примеров.

Существует много информации об использовании Cloudflare для этого, а также кто-то проделал некоторую умную работу по созданию проверки OAuth внутри своей облачной функции. Но очевидно, что Google уже проводит проверку безопасности для меня (это может быть новая функциональность), и я бы предпочел использовать ее, чем создавать свою собственную. Чтобы быть точным, я зашел в раздел разрешений моей облачной функции и добавил члена в роль «Cloud Functions Invoker». Я могу добавить AllUsers в качестве участника, и CF станет общедоступным, вынуть его, и я вернулся к 403 ответам. Так что охрана определенно работает. Мне просто нужен способ идентифицировать звонящего.

Кто-нибудь знает, как добавить правильные ключи или что-то еще в запрос?

1 Ответ

0 голосов
/ 09 июля 2019

Еще немного прочтения, и я нашел ответ здесь

Ответ таков, что CF действительно выполняют OAuth, поэтому мой запрос должен выглядеть примерно так:

curl https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME \

-H "Авторизация: bearer $ (gcloud auth print-identity-token)"

Используется команда gcloud, чтобы опустить JWT и поместить его в заголовок.Чтобы на самом деле заставить его работать, мне нужно было создать учетную запись службы и скачать ее ключ (к файлу, указанному ниже).Затем я добавил это в CF (в разрешениях) и затем использовал

gcloud auth activate-service-account --key-file=sa-cf.json

, чтобы сделать мою текущую активную учетную запись так, чтобы распечатанный токен был для этой учетной записи.Будьте осторожны при этом, потому что токены быстро истекают, поэтому, если вы вставляете их в Postman (как я), они не сработают, если вы оставите их в любое время перед отправкой запроса.

Надеюсь, это поможет кому-то другому.

...