gpt4 book ai didi

google-cloud-functions - 权限 'cloudkms.cryptoKeyVersions.useToDecrypt' 拒绝资源 ...key

转载 作者:行者123 更新时间:2023-12-03 14:16:52 30 4
gpt4 key购买 nike

我正在使用 Google Cloud Functions 构建一个 http 端点。我有一个加密的 secret 存储为文件,该文件在函数中加载和解密,以防止我的 secret 存储在代码中。通常我从 Google Cloud Storage 动态加载一些东西,但似乎 KMS 更适合这个目的。

使用 KMS 的代码如下所示:

getCredentials: async function () {
const kms = require('@google-cloud/kms');
const client = new kms.KeyManagementServiceClient();
const fs = require('fs');
let ciphertext = (fs.readFileSync('secret.enc')).toString('base64')
const name = client.cryptoKeyPath(
'[project]',
'global',
'[keyring]',
'[key]'
);

一切都在本地运行良好,但在使用 http 触发器调用时,我似乎无法使该函数正常工作。检查日志我看到了这个:
textPayload:  "Error: Permission 'cloudkms.cryptoKeyVersions.useToDecrypt' denied for resource 'projects/[projectname]/locations/global/keyRings/[keyring]/cryptoKeys/[key]'.
at Http2CallStream.call.on (/srv/functions/node_modules/@grpc/grpc-js/build/src/client.js:96:45)
at Http2CallStream.emit (events.js:194:15)
at Http2CallStream.EventEmitter.emit (domain.js:459:23)
at process.nextTick (/srv/functions/node_modules/@grpc/grpc-js/build/src/call-stream.js:71:22)
at process._tickCallback (internal/process/next_tick.js:61:11)"

我已经尝试了各种可用的 IAM 权限(包括所有者),所以似乎我必须有更深层次的误解。

这可能与我无法让 Google Cloud Build 部署该功能的另一个问题有关。它在没有帮助的情况下出错:
starting build "b2321cdb-bd4c-4828-8d38-80a86f4fe808"

FETCHSOURCE
Initialized empty Git repository in /workspace/.git/
From https://source.developers.google.com/p/[projectname]/r/[repo]
* branch 314691d6e63199caf867c74bcd0090bc70386a0e -> FETCH_HEAD
HEAD is now at 314691d Merge pull request #2 from [repo]/tristans/update-deploy-cloudbuild
BUILD
Already have image (with digest): gcr.io/cloud-builders/gcloud
Deploying function (may take a while - up to 2 minutes)...
...............failed.
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: Build error details not available
ERROR
ERROR: build step 0 "gcr.io/cloud-builders/gcloud" failed: exit status 1

您似乎不需要任何 KMS 权限即可部署 functions deploy name --trigger-http --runtime=nodejs10 --entry-point=fname --project=project就像我说的,当我运行 gcloud deploy 时它工作正常在本地,所以我不确定为什么会失败。我们有几个具有类似部署流程设置的云功能,所以 KMS 的工作方式似乎有一些不明显或损坏的东西对我有用,但也许这是一个红鲱鱼。

如果有更好的方法来使用 KMS 用于此目的,我全听!

最佳答案

Google Functions docs , 函数的运行时服务帐户是 PROJECT_ID@appspot.gserviceaccount.com您需要向此帐户授予 KMS 解密权限。
这可以在 Google 云网络控制台的“IAM & Admin/IAM”部分下完成

enter image description here

关于google-cloud-functions - 权限 'cloudkms.cryptoKeyVersions.useToDecrypt' 拒绝资源 ...key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57861155/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com