用于 Cloud Run 服务端点调用的 IAM 服务帐户

IAM ServiceAccount for CloudRun service endpoint invocation

我创建了 CloudRun 服务。它按预期由端点公开,我可以从外部调用它。

想要保护它,我只需要提供内部连接。

端点将由 pods 运行 在 GKE 集群上调用。

为了仅提供内部连接,您需要设置适当的 IAM 配置。

我的问题是我必须向谁分配适当的 ServiceAccount? (已被授予适当的角色)?

到集群本身,或者说 VMs 运行 k8s 节点?

您可以在集群、节点和 pod 级别使用服务帐户。我会使用 Kubernetes Secrets(用于精细控制)或集群默认服务帐户来授权 Cloud 运行(最简单)。

除非您更改了集群配置,否则已经为您的集群分配了一个 Compute Engine 默认服务帐户。您可以使用此服务帐户而无需进行其他更改以提供用于访问 Cloud 运行.

的身份

服务帐户不需要任何角色。当您将 IAM 成员添加到 Cloud 运行.

时授予 IAM 角色 roles/run.invoker

要访问受 IAP 保护的云 运行,您需要添加 HTTP Header "authorization: bearer TOKEN"。该令牌是身份令牌。您的 code/program 必须添加此 header,因为 Kubernetes 不会代表您执行此操作。

您可以从节点的元数据服务器请求身份令牌。此元数据服务器提供带有服务帐户身份的身份令牌。输入服务帐户的电子邮件地址作为 Cloud 运行.

的会员 ID