Push-подписка Google Pub/Sub в IAP-защищенный App Engine
Я тестирую очень простую подписку Pub/Sub. У меня установлена конечная точка push-приложения для приложения, развернутого через службу Python Flex в App Engine. Служба находится в проекте с включенным Identity-Aware Proxy. IAP настроен на пропуск аутентификации через наш домен через пользователей.
Я не вижу никаких push-запросов, обрабатываемых моим приложением.
Я отключил защиту IAP, а затем вижу, что запросы обрабатываются. Я включаю его снова, и они больше не обрабатываются.
У меня были похожие проблемы с IAP при попытке запустить сервис Cron; эта проблема решилась сама собой после того, как я развернул новое тестовое приложение в том же проекте.
У кого-нибудь был успех с настройкой принудительной подписки через IAP? Я также экспериментировал с помещением различных учетных записей служб в список доступа IAP, и ни одна из них не работала.
1 ответ
У меня была довольно похожая проблема - стандартное приложение GAE 2nd G в проекте A, которое подключено к IAP, не может получить отправленное сообщение pub/sub из проекта B.
Мое решение:
- Настройка облачной функции (запускается по HTTP) в проекте A;
- Настройте подписку на тему Pub/Sub проекта B, чтобы отправить сообщение в указанную выше конечную точку Cloud Function;
- Вышеупомянутая облачная функция работает как прокси-сервер для фильтрации (необходим в моем случае, ymmv) и пересылает сообщение Pub/Sub в http-запросе в приложение GAE;
- Поскольку облачная функция находится в том же проекте, что и приложение GAE, необходимо только добавить аутентификацию IAP для вышеуказанного HTTP-запроса (который извлекает токен, назначенный из конкретной SA).
- В IAM проекта B должна быть настройка SA проекта A, которая может иметь как минимум роли Pub/Sub Subscriber и Pub/Sub Viewer.
Надеюсь, это может быть вариант для вашего случая.
Я не знаю, как получить принудительную подписку Pub/Sub + Flex + IAP. Интересно... это может сработать, если подписчик на Standard.
Некоторые другие потенциальные обходные пути: - Переключитесь на подписчика Pull. - Настройте функцию облачных функций в качестве вашего подписчика Pub/Sub - https://cloud.google.com/functions/docs/writing/background - и затем в этой функции передайте запрос приложению GAE, используя https://cloud.google.com/iap/docs/authentication-howto для аутентификации в качестве учетной записи службы.
Извините, я бы хотел получить лучший ответ для вас, но AFAIK - это те варианты, которые работают сегодня. - Мэтью, ведущий инженер IAP