【问题标题】:Permission to invoke CloudRun apparently not granted to GKE (pods)调用 CloudRun 的权限显然未授予 GKE(pod)
【发布时间】:2020-01-26 14:54:29
【问题描述】:

我希望能够通过我的一个 GKE pod 调用 GloudRun 端点。

当我描述组成我的 GKE 集群的虚拟机/实例时,我看到了

serviceAccounts:
 - email: 873099409230-compute@developer.gserviceaccount.com

所以我将 CloudRun Invoker 角色添加到上述服务帐户。

我已启用需要身份验证的 CloudRun。

但是,当我执行到我的一个 pod 并尝试curl 端点时,我得到了403(我也从我的笔记本电脑得到了,但预计会是后者)。

有什么建议吗?

【问题讨论】:

    标签: google-cloud-platform google-kubernetes-engine google-cloud-run google-iam


    【解决方案1】:

    Curl 不了解 Google Cloud 的安全性。我的意思是 cURL 不知道如何将安全令牌添加到您的请求中。为此,您必须在请求的标头中显式添加令牌。

    我在我的电脑上使用这个,因为它是我在 Gcloud SDK 中定义的个人帐户。

    curl -H "Authorization: Bearer $(gcloud config config-helper --format='value(credential.id_token)')" <URL>
    

    通过在 gcloud 中定义的服务帐户,您可以使用此命令

    curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" <URL>
    

    在这两种情况下,您都必须将授权标头添加到您的请求中。

    在您的代码中,如果您使用谷歌库,则可以使用默认凭据,将使用您的默认计算服务帐户。 cURL 不知道这样做!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-24
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      相关资源
      最近更新 更多