首页 > 解决方案 > GCLB 背后的 Cloud Run - 使用 IAM 管理访问

问题描述

我正在尝试使Cloud Run 的 IAM 策略在 Google Cloud Load Balancer 后面工作。

直接调用 Cloud Run 服务时,我需要将目标受众设置为等于 Cloud Run 服务的 URL,例如my-service-abcdef.a.run.app

import { credentials } from '@grpc/grpc-js';
import { GoogleAuth } from 'google-auth-library';

const clientCredentials = await new GoogleAuth().getIdTokenClient(
  'https://my-service-abcdef.a.run.app',
);

const client = new MyServiceClient(
  'my-service-abcdef.a.run.app',
  credentials.combineChannelCredentials(
    credentials.createSsl(),
    credentials.createFromGoogleCredential(clientCredentials),
  ),
);

现在,当我将 Cloud Run 服务放在 GCLB 后面时,当我提供已链接到 GCLB 的域时,我实际上仍然可以调用它(例如my-domain.com),但我需要保持目标受众(对于 getIdTokenClient 调用)完好无损(https://my-service-abcdef.a.run.app)。

一旦我在 GCLB 后面添加更多具有不同“本机”URL(在.run.app域中,因此需要不同的受众)的区域,这就会中断(这是完全可以理解的)。

Cloud Run 服务是否接受任何其他受众?我可以指定我自己的吗?

标签: google-cloud-platformgoogle-cloud-rungoogle-cloud-iamgoogle-cloud-load-balancer

解决方案


我正在尝试使 Cloud Run 的 IAM 策略在 Google Cloud Load Balancer 后面工作。

使用谷歌授权,目前没有解决办法。

目前,IAP 不适用于无服务器 NEG(Cloud Run、Cloud Functions、App Engine)。

无服务器网络端点组 - ​​限制

Cloud Run 服务是否接受任何其他受众?

不,受众由 GFE/IAP 前端验证。无效请求不会到达您的服务入口点。

我可以指定我自己的吗?

如果您指的是 IAP 验证的您自己的受众,则不会。如果您关闭授权,您可以实现自己的身份令牌/API 密钥/密码并在您的代码中进行验证。


推荐阅读