为了账号安全,请及时绑定邮箱和手机立即绑定

如何设置在 GCP Appengine 上运行的 GOOGLE_APPLICATION_

如何设置在 GCP Appengine 上运行的 GOOGLE_APPLICATION_

Go
当年话下 2022-05-18 10:11:07
我正在使用 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。GOOGLE_APPLICATION_CREDENTIALS然后我通过使用服务帐户 xxxx.json 的值设置环境变量来解决。然后在appengine中部署GCP它返回相同的错误googleapi: Error 403..... 那么如何GOOGLE_APPLICATION_CREDENTIALS在GCP appengine中设置。
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

您遇到的问题是由在两种环境中开发/测试引起的:您的桌面和 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 默认服务帐户。

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


查看完整回答
反对 回复 2022-05-18
?
慕仙森

TA贡献1827条经验 获得超7个赞

您需要设置 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


查看完整回答
反对 回复 2022-05-18
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

另一个答案:

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

在此处输入图像描述

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

有时通过 UI 做事更容易


查看完整回答
反对 回复 2022-05-18
  • 3 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信