【问题标题】:How to set GOOGLE_APPLICATION_CREDENTIALS running on GCP Appengine如何设置在 GCP Appengine 上运行的 GOOGLE_APPLICATION_CREDENTIALS
【发布时间】:2020-05-28 21:43:37
【问题描述】:

我正在使用 windows 为我的 golang 项目运行本地 appengine。 我收到googleapi: Error 403: Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource 'projects/xxxx/locations/xxxx/keyRings/xxx/cryptoKeys/xxx' (or it may not exist)., forbidden。然后我通过使用服务帐户 xxxx.json 的值设置环境变量GOOGLE_APPLICATION_CREDENTIALS 来解决。 然后部署在GCP appengine 它返回相同的错误googleapi: Error 403..... 那么如何在 GCP appengine 中设置GOOGLE_APPLICATION_CREDENTIALS

【问题讨论】:

    标签: google-app-engine go google-cloud-platform


    【解决方案1】:

    您遇到的问题是由两种环境中的开发/测试引起的:您的桌面和 App Engine。这个问题很容易以干净安全的方式解决。

    在您的桌面上进行开发/测试时,请使用服务帐号。使用环境变量指定服务帐号。

    在 Windows 上:

    set GOOGLE_APPLICATION_CREDENTIALS=c:\fullpath\serviceaccount.json
    

    在 Linux 上:

    export GOOGLE_APPLICATION_CREDENTIALS=/fullpath/serviceaccount.json
    

    您可以在命令提示符下手动运行上一个命令,也可以将其放入启动脚本 (Linux) 或系统环境变量 (Windows)。

    对于 App Engine,我不建议在您的应用程序中使用服务帐户文件。我也不建议设置环境变量。

    Google 客户端库支持应用默认凭据 (ADC)。这意味着库将尝试自动为您查找凭据。然后,客户端库可以使用该环境来查找要在 Windows 上使用的服务帐户,并在部署时自动使用 App Engine 默认服务帐户。

    Google Cloud Application Default Credentials]

    通过在您的代码中包含 ADC,您可以在 Windows/Linux 上进行测试并部署到 App Engine,而无需修改您的代码,也没有在您的部署中包含服务帐户 JSON 文件的安全风险。

    【讨论】:

    【解决方案2】:

    另一个答案:

    在您的控制台中,在 IAM -> 服务帐户下,您将能够找到与您的应用引擎实例关联的服务帐户:

    您可以在那里或通过命令行编辑权限。

    有时通过 UI 做事更容易

    【讨论】:

    • 默认情况下,App Engine 默认服务帐号已经拥有项目中的 Editor 角色,并且拥有对该项目中所有资源的读/写权限。
    • @Daniel Lee 让我将Editor 角色分配给服务帐户
    • @Daniel Lee,我被分配了Editor 角色到xxx-xxx@appspot.gserviceaccount.com 下的服务帐户,但再次获得googleapi: Error 403: Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource 'projects/xxxxxxxx/locations/xxxxxx/keyRings/xxx/cryptoKeys/xxx' (or it may not exist)., forbidden
    • @THIYAGARAJAN SR,尝试添加此角色:cloudkms.cryptoKeyEncrypterDecrypter,具有此特定功能的角色。 Editor 角色不会为您提供足够的权限来执行此操作。
    【解决方案3】:

    您需要设置 IAM 权限才能使用加密功能。

    您可以通过使用以下命令和您的服务帐户的详细信息来做到这一点:

    gcloud kms keys add-iam-policy-binding \
      golden-egg --location global --keyring golden-goose \
      --member serviceAccount:my-service-account@my-project.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    这里有一个community post 已经触及主题,可以为您提供更多信息和文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2013-04-24
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      • 2019-03-03
      相关资源
      最近更新 更多