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

我正在使用 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)., forbiddenGOOGLE_APPLICATION_CREDENTIALS然后我通过使用服务帐户 xxxx.json 的值设置环境变量来解决。然后在appengine中部署GCP它返回相同的错误googleapi: Error 403..... 那么如何GOOGLE_APPLICATION_CREDENTIALS在GCP appengine中设置。

当年话下
浏览 126回答 3
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 文件的安全风险。

慕仙森

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

扬帆大鱼

另一个答案:在您的控制台中,在 IAM -> Service Accounts 下,您将能够找到与您的应用引擎实例关联的服务帐户:您可以在那里或通过命令行编辑权限。有时通过 UI 做事更容易
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go