Google Pub/Sub 推送消息不适用于启用 IAP 的应用程序引擎

Jef*_*ila 4 google-app-engine authorization google-cloud-pubsub google-cloud-iam google-iap

我正在测试一个非常基本的 Pub/Sub 订阅。我将推送端点设置为通过 App Engine 中的 Python Flex 服务部署的应用程序。该服务位于启用了身份感知代理的项目中。IAP 配置为允许通过我们的域进行身份验证的用户通过。

我没有看到我的应用程序正在处理任何推送请求。

我关闭了 IAP 保护,然后我看到请求已得到处理。我重新打开它,它们不再被处理。

Joh*_*ley 6

注意:此答案使用BETA命令和功能。

要启用启用 IAP 的 App Engine 访问 Pub/Sub 推送通知:

  • 启用 Pub/Sub 以创建身份令牌
  • 创建一个服务帐户,Pub/Sub 将使用该帐户作为 IAP 的身份
  • 使用服务帐户创建推送 Pub/Sub 订阅
  • 将 Pub/Sub 服务帐户电子邮件地址添加到 IAP

允许 Pub/Sub 服务(服务代理)代表服务帐户创建身份令牌:

gcloud projects add-iam-policy-binding PROJECT-ID \
     --member=serviceAccount:service-PROJECT-NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
     --role=roles/iam.serviceAccountTokenCreator
Run Code Online (Sandbox Code Playgroud)

创建一个服务帐户,Pub/Sub 将使用该帐户作为 IAP 的身份:

gcloud iam service-accounts create pubsub-invoker \
     --display-name "Pub/Sub Invoker Service Account"
Run Code Online (Sandbox Code Playgroud)

使用服务帐户创建推送 Pub/Sub 订阅:

gcloud beta pubsub subscriptions create mySubscription --topic myTopic \
   --push-endpoint=SERVICE-URL/ \
   --push-auth-service-account=pubsub-invoker@PROJECT-ID.iam.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)

将服务帐户电子邮件地址添加pubsub-invoker@PROJECT-ID.iam.gserviceaccount.com到 App Engine 的 IAP。

我不知道此步骤的 CLI 命令。在 Google Cloud Console 中执行此步骤。

  • 这个解决方案对我有用,只是做了一些小小的改变。我必须将订阅的推送身份验证“Audience”字段值设置为 IAP Web 应用程序的 OAuth 客户端 ID。我在这里找到了这个 ID:https://console.cloud.google.com/apis/credentials (2认同)