问题标签 [google-cloud-kms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
348 浏览

node.js - 用于签署 JSON Web 令牌的 Google Cloud Key Management Service

首先,我尝试了以下解决方案:Using Google Cloud Key Management Service to sign JSON Web Tokens 但它不起作用。

创建签名:

然后验证:

我无法弄清楚代码有什么问题。

0 投票
2 回答
1805 浏览

php - 谷歌云 KMS 权限问题与加密

我尝试加密文件的内容并将加密的数据写入使用 Google 云 KMS 的密码文件。但是 php 脚本显示权限错误。这是我尝试过的 php 脚本

我收到了这个错误

致命错误:未捕获的 Google\ApiCore\ApiException: { "message": "Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied for resource 'projects/testproject/locations/global/keyRings/test/cryptoKeys/testkey'.", "code" : 7, "status": "PERMISSION_DENIED", "details": [] } 在第 139 行的 /home/xxxxx/xxx.com/vendor/google/gax/src/ApiException.php 中抛出

当我打印用户权限时,它显示

0 投票
0 回答
379 浏览

curl - 尝试使用 Google Cloud KMS 和 API-KEY 加密文本时出现“未验证”

我正在尝试使用 Google Cloud KMS 加密/解密文件。使用 gcloud 命令加密/解密非常有效。但是现在我需要将此传递给其他没有/不应该访问我的 gcloud 帐户的用户。他们应该能够使用 curl 命令进行解密和加密。

我试过: - 使用 gcloud 命令加密/解密。完美运行 - 在谷歌云计算引擎上加密/解密。完美运行 - 使用 curl 进行加密/解密。不工作。

我希望得到加密的文本。

现在我得到:

0 投票
2 回答
4501 浏览

google-cloud-platform - 使用云存储时对 Cloud KMS 密钥的权限被拒绝

我正在使用cloud storage带有 kms 密钥的文件上传。这是我的代码:

我有一个获得许可的cloud-storage-admin.json服务帐户。使用此服务帐户cloud storage admin初始化。storage

而且,我使用gcloud kms keys add-iam-policy-binding添加roles/cloudkms.cryptoKeyEncrypterDecryptercloud-storage-admin.json服务帐户。

当我尝试使用 kms 密钥上传文件时,仍然出现此权限错误:

Cloud KMS 密钥的权限被拒绝。请确保您的云存储服务帐号已被授权使用此密钥。

更新

0 投票
0 回答
380 浏览

c# - 用于 GCP KMS 非对称解密的 C# 加密示例

我们正在使用 GCP 的 KMS 功能进行密钥管理。我们有一个 C# 代理,它将从密钥环中获取最新的公钥,加密一些数据并将其发送到后端服务,该服务将使用非对称解密和密钥环/密钥对其进行解密。

我很难让 C# 生成与 GCP KMS 一起使用的加密有效负载,可能某处的填充设置不正确?KMS 只是响应“解密失败”。

我已经尝试过两者System.Security.CryptographyBouncyCastle.NetCore无济于事。每次都是同样的错误。

KMS 密钥创建如下:

然后我获取公钥:

C# 看起来像这样:

然后尝试解密文件(这是它失败的地方):

我们期望得到解密的文件,但只是得到错误Decryption Failed

0 投票
3 回答
1631 浏览

google-cloud-platform - Google Cloud Build 不会替换 cloudbuild.yaml 的机密部分中的值

我正在尝试创建一个 Cloud Build 触发器,其中秘密环境变量使用云 KMS 加密并存储为 Cloud Build 中的替换变量。这样,我的云构建 yaml 相当通用,并且在我们部署到的所有环境中都是相同的。

此云构建 yaml 工作正常:

构建步骤生成此日志行:

完全符合预期。

现在对于那些不起作用的东西,或者至少我不能去工作。假设我想让密钥环名称动态化。然后,我将该 yaml 中的“keyring-dev”替换为${_KMS_KEYRING_NAME}. 这将产生如下错误:

如果我将 YAML 中的 base64 字符串(以“CiQAH ...”开头)更改为 ${_KMS_VAR_HELLO_WORLD} 之类的替换变量,我将收到此错误:

仅供参考:base64 字符串的值不超过变量值的最大字符数 255。

所以我的猜测是,Cloud Build 不会替代 cloudbuild.yaml 的机密部分中的任何内容。有谁知道解决这个问题?

0 投票
1 回答
452 浏览

node.js - 在 HTTP Google Cloud Function (NodeJS) 中同步加载机密

我有一个提供登录 API 端点的谷歌云函数。该函数使用私钥对 JWT 进行签名。

现在,在部署该功能时,我需要安全地加载用于签署 JWT 的私钥。当然,我不能使用环境变量或将其嵌入代码的任何部分,因为任何可以在 gcloud 中读取函数的人都可以看到。

我考虑过的选项是:

  1. 为该函数创建一个专用服务帐户,以及一个只有该服务帐户可以访问的 GCS 存储桶,并将密钥以纯文本形式存储在其中。当函数加载时,加载秘密(await loadMySecrets(...))并继续。

  2. 推荐的方法:创建一个KMS密钥,用该密钥加密秘密,然后将密文与功能码一起上传。在运行时,要求 KMS 解密密钥 ( await decryptSecret(...))。

问题是:据我所知,当一个 HTTP 函数被加载时,整个加载过程必须是同步的。

您的函数返回一个请求处理程序,然后 GCF 执行它。在您返回请求处理程序之前没有机会await返回 Promise,并且 GCF 不支持 HTTP 函数的返回 Promise。GCS 和 KMS API 是基于 Promise 的,不*Sync()支持调用。

其他人是如何解决这个问题的?我无法同步等待我的 Promise 解决(例如 via sleep()),因为这会阻塞 Node 事件循环。我是否被迫以某种方式同步提供秘密,或者有没有一种方法可以异步执行它与 GCF 配合得很好?

注意:这是普通的 Google Cloud Functions,而不是Firebase。

注 2:有一个核选项,即将异步方面移到 Express 中间件中。我真的,真的不想这样做,因为我必须包装诸如cookie-parserand之类的东西passport,它期望在第一次创建中间件时秘密可用,在异步中间件中加载我的秘密然后委托。丑陋,可能会影响性能。

0 投票
1 回答
503 浏览

encryption - 如何使用 Google Cloud Build 和 Google Cloud KMS 从构建时解密的文件中读取变量

我正在按照教程将加密密钥添加到我的 cloudbuild YAML 文件中。我试图了解我应该如何在我的 YAML 文件的后续步骤中“使用工作区目录中的解密 ... 文件”变量。

我解密密钥文件的 cloudbuild 步骤如下:

该教程不清楚如何执行此操作,我在 Internet 上找不到与此相关的任何内容。

非常感谢任何帮助。

谢谢。

0 投票
1 回答
1985 浏览

encryption - 如何从 Google Cloud Storage 解密文件?

我有一个存储在使用以下命令行生成的 Google Cloud Storage 存储桶中的加密文件:

我现在正在尝试使用以下代码在 Cloud Run 服务中解密此类文件:

我收到以下错误:

其中,根据具有误导性,应被视为未正确破译。我无法摆脱在某处缺少 base64 编码/解码的感觉,但我似乎没有找到解决方案。

如果我从命令行运行解密它就可以了。

非常感谢任何帮助。

谢谢。

编辑:感谢这个很棒的社区,问题解决了。以下是完成这项工作的步骤,以防其他人面临同样的问题:

使用以下命令行加密文件并通过 Web UI 上传。

使用以下代码解密:

0 投票
1 回答
94 浏览

gcloud - 这些 google KMS 客户端软件包有什么区别?(CloudKMS 与 KeyManagementServiceClient)

我有一个似乎使用“com.google.api.services.cloudkms.v1.CloudKMS”来调用 KMS 的 java 代码库。在线文档说使用“com.google.cloud.kms.v1.KeyManagementServiceClient”

当我查找这两个软件包时,似乎都已更新,但是参考文档建议使用后者。

https://developers.google.com/resources/api-libraries/documentation/cloudkms/v1/java/latest/com/google/api/services/cloudkms/v1/CloudKMS.html

https://cloud.google.com/kms/docs/reference/libraries

有人能告诉我这两个客户包有什么区别吗?我是否应该移到参考链接的那个?