google-cloud-platform - 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 服务是否接受任何其他受众?我可以指定我自己的吗?
解决方案
我正在尝试使 Cloud Run 的 IAM 策略在 Google Cloud Load Balancer 后面工作。
使用谷歌授权,目前没有解决办法。
目前,IAP 不适用于无服务器 NEG(Cloud Run、Cloud Functions、App Engine)。
Cloud Run 服务是否接受任何其他受众?
不,受众由 GFE/IAP 前端验证。无效请求不会到达您的服务入口点。
我可以指定我自己的吗?
如果您指的是 IAP 验证的您自己的受众,则不会。如果您关闭授权,您可以实现自己的身份令牌/API 密钥/密码并在您的代码中进行验证。
推荐阅读
- nativescript - NativeScript 5 Core JavaScript Android 侧加载选项卡未禁用
- calendar - 如何在带有日期字段的自定义实体上配置日历视图?
- python - 有没有办法开发 Python GUI 来控制 LabVIEW VI?
- shell - ls -R 如何显示文件(空格)
- visual-studio-code - Visual Studio Code 在与 MVS 相同的文件中具有代码导航?
- python - 如何正确地将具有多个外键的表序列化到同一个表
- python - 使用 Pandas groupby 组合数据
- sql - 如何获取 Oracle 环境变量 LONG?
- json - 传入变量名而不是实际值
- adal - Android - 在具有 Microsoft Authenticator 的设备上静默获取 B2B 令牌