问题标签 [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 回答
431 浏览

google-cloud-platform - Google 部署管理器存储的运行时配置变量显示已损坏

我在通过 runtimeconfig.v1beta1.config 资源声明在 Google 部署管理器中使用加密的 base64 编码值时遇到问题。

执行部署后,我使用 Deployment Manager 存储的值似乎与我使用 gcloud beta runtime-configs 检索的值完全不同。结果,我无法解密该值。

首先,我对一些秘密文本进行了加密和 base64 编码:

然后我将其存储在部署管理器 YAML 文件中:

然后我创建部署(完成时没有错误或警告):

但是当我尝试提取变量值时,它与我存储的完全不同:

这是可重复/可重现的,我不知道我做错了什么。gcloud beta runtime-config variables set使用后跟没有这个问题get-value

0 投票
1 回答
628 浏览

google-cloud-kms - 使用存储在 Google Cloud KMS 中的密钥签署区块链交易

我需要保护用于签署区块链交易的私钥。在我们评估使用 HSM(硬件安全模块)的选项时,我同样想知道 Google Cloud KMS 的适用性。如果您能回答我的以下问题,我们将非常感谢您的帮助 :)

  1. 我们可以在 Google Cloud KMS 中保存可能在外部生成的密钥吗?
  2. 假设我已经在 Google Cloud KMS 中保存了我的私钥,以下哪一项是正确/可能的?
    • 使用 API 调用,首先检索存储在 KMS 中的密钥,然后可以将其用于签署区块链交易。但是在这种情况下,一旦密钥在 KMS 之外,安全性就会受到影响。
    • 密钥一旦存储就永远不会离开 Google Cloud KMS。相反,可以将区块链交易发送到 Google Cloud KMS 以使用其管理的密钥对交易进行签名。在这里,我假设 KMS 可能会为我提供一些自定义功能,以便我可以执行签名过程,或者 KMS 可能具有执行一段代码的能力。
    • Google Cloud KMS 无法执行专门的任务(例如签署区块链交易),它只执行加密/解密。
0 投票
2 回答
594 浏览

kubernetes - Kubernetes 机密和服务帐户

在过去的 6 个月里,我一直在使用 Kubernetes,我们已经部署了一些服务。

我们即将部署另一个存储加密数据并将密钥放入 KMS 的设备。这需要两个服务帐户,一个用于数据,一个用于密钥。

必须审核对此的数据访问。由于对这些数据的访问非常敏感,我们不愿意将这两个服务帐户都放在名称空间中,就好像以任何方式受到损害一样,攻击者可以在未经审计的情况下访问数据和密钥。

现在我们有一个密钥,另一个我们将手动发布到单个 pod。

这很可怕,因为它需要一个人信任这个密钥,并且限制了可扩展性。幸运的是,这项服务的数量非常少。

有没有其他人遇到过同样的问题?你是怎么解决的?

干杯

要求

  • 没有一个人可以访问这两个密钥(数据存储和 KMS)
0 投票
0 回答
522 浏览

java - 如何尽可能实现与服务器无关的 KMS 客户端?

给定一个必须从密钥管理系统 ( KMS)获取私钥(主要是 RSA 密钥)的应用程序,这可能是一个硬件安全模块 ( HSM),如果没有办法知道,实现这种客户端的最佳方法是什么提前KMS执行应用程序将不得不处理?


子问题来自主要问题:

  1. 是否有一个统一的客户端库试图缩小不同实现之间的差距?
    • 至少以KMIP(密钥管理互操作性协议)实现为目标的一个就是一个很好的例子。
    • 它适用于什么语言?同一个图书馆的目标越多越好。
    • 是否有一个Java(我的应用程序将在什么上运行,但我试图让问题保持开放)?
  2. 如果没有或很少针对多个服务器实现,是否有针对特定实现的特定客户端?我主要考虑的是SMBs(中小型企业)大公司中最常用的那些。
    • 它适用于什么语言?同一个图书馆的目标越多越好。
    • 有一些Java吗?
  3. 如果这些都不存在,或者如果没有用于最需要的实现的客户端库,那么设计应用程序以在未来轻松适应其他实现同时专注于第一个实现的最佳方法是什么?
    • 我想首先关注一个KMIP合规的是个好主意?
  4. 互联网上是否有实际的工作代码示例?甚至UML图表?这种资源感觉相当稀缺。
  5. 我只是愚蠢地认为所有存在并且所有这些实现实际上都使用RESTfulAPI 并且所有东西都必须在客户端实现以适应各种服务器实现吗?

奖金问题:

谷歌的合规与否?似乎并非如此,但我实际上无法找到 clear或 clear 。Cloud Key Management Service KMIPyesno


其他有用的资源:

0 投票
1 回答
273 浏览

java - 为什么 Google Cloud Key Management Service 的 Java 客户端库不支持 Android?

它被记录为不支持Android。为什么?是不是因为 Android 的BouncyCastle实现在功能上缩小了,不支持KeyPairGenerator/ECDSA(Elliptic Curve Digital Signature Algorithm)之类的东西?
这是另一个链接。

仅仅使用它还不够SpongyCastle吗?难道只是因为谷歌不支持SpongyCastle它的KMSJava客户端不支持Android?

0 投票
2 回答
603 浏览

google-cloud-kms - 无法使用@google-cloud/kms nodejs 模块解密秘密

代码:

encryptedWebhookSecret 是使用 @google-cloud/storage 客户端的 download() 操作的结果。这将返回一个 [Buffer],我将其转换为一个字符串。我记录了加密的字符串,它的值是正确的。gsutil我可以使用从命令行下载加密的秘密并且gcloud kms decrypt工作正常。

这个错误似乎是在说字符串编码不正确(不应该是 utf8 吗?)。

PROJECT、KEYRING 和 KEY 的值已经过双重和三重检查并且是正确的。

错误:

ERROR: Error: invalid encoding at Error (native) at Object.decode (/user_code/node_modules/@google-cloud/kms/node_modules/@protobufjs/base64/index.js:105:19) at Type.DecryptRequest$fromObject [as fromObject] (eval at Codegen (/user_code/node_modules/@google-cloud/kms/node_modules/@protobufjs/codegen/index.js:50:33), <anonymous>:12:15) at Type.fromObject (/user_code/node_modules/@google-cloud/kms/node_modules/protobufjs/src/type.js:538:25) at serialize (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/protobuf_js_6_common.js:70:23) at Object.final_requester.sendMessage (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/client_interceptors.js:802:37) at InterceptingCall._callNext (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/client_interceptors.js:418:43) at InterceptingCall.sendMessage (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/client_interceptors.js:460:8) at InterceptingCall._callNext (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/client_interceptors.js:424:12) at InterceptingCall.sendMessage (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/client_interceptors.js:460:8)

编辑:当我尝试使用 base64 编码时,我得到“TypeError: Key must be a buffer at TypeError (native) at new Hmac (crypto.js:93:16) at Object.Hmac (crypto.js:91:12)在isRequestValid (/user_code/index.js:81:8) 在decryptWebhookSecret.then (/user_code/index.js:119:21)”。

0 投票
2 回答
2301 浏览

node.js - 使用 Google Cloud KMS 进行 Firebase 实时数据库加密的最佳做法

我们正在使用 Firebase 数据库规则来保护我们的数据库。我们还希望通过加密敏感的用户信息来增加额外的安全性。现在我们的加密方法是:

在用户将数据写入数据库之前使用公钥加密用户数据客户端在通过 GET 请求将数据传递给用户之前使用服务器上的私钥解密

我们的私钥是在服务器代码中硬编码的字符串。我们希望使用 KMS 的加密/解密方法来保护私钥,并且只在代码中存储加密的私钥。

加密后的私钥将存储在服务器代码中,并在运行时使用 KMS 解密,这样开发人员将无法访问私钥。

但是,我们不确定是否有更好的方法使用 Cloud KMS。KMS 可以同时用于客户端加密和服务器端解密吗?或者使用 KMS 增强数据库加密的最佳实践是什么?

0 投票
1 回答
151 浏览

google-cloud-platform - Google Cloud Cloud/Key 活动日志记录

我最近才开始使用 Google Cloud,我正试图了解它的一些内部工作原理,主要是审计日志部分。

我想要做的是从我的密钥用于任何事情以及有人实际登录到谷歌控制台云(它也可能是 Key Vault 或 Key Ring)时获取日志活动。

我一直在使用 power shell 使用 gcloud read logging 提取这些日志,这就是我开始怀疑我是否有正确的地方的地方。我会解释:

我创建了新密钥,我在活动面板中看到了这个动作,我已经可以通过 gcloud read logging resource.type=cloudkms_cryptokey 提取它(命令行上可能有错字,因为我是从顶部编写的我的头,对不起!)。

尽管我有这些信息,但我很好奇这是否是正确的做法。我在我的日志中看到了 CreateCryptoKey 和 SetIamPolicy 方法,好吧,但是我会看到与这些密钥相关的所有操作吗?通过阅读 GCloud 文档,我感觉好像我只得到了一些操作?

正如我所说,我正在努力解决 GCloud 文档,但信息量如此庞大,我并没有真正得到我正在寻找的正确答案,这就是我考虑求助于这个社区的原因.

所以,总而言之,我是否以现在的方式获取与我的密钥相关的所有信息?那些有权访问 Google Cloud Console 页面的人呢,有没有办法找到谁访问了它以及访问了哪个部分(例如 Crypto Keys 页面、Crypto Vault 页面)?遗憾的是,这也是我从文档中无法理解的。也许有人可以向我展示正确的页面,我可以在其中引用我正在寻找的内容?因为在这方面我感觉 Cloud Audit Logging 页面并不完全清楚(我认为我可能在这方面有过错,过去几周一直很严酷!)

感谢任何需要一些时间来回答我的问题的人!

0 投票
1 回答
36 浏览

google-cloud-kms - 从错误的文件创建密钥,我该如何修改它/解决这个问题?

我错误地从错误的文件中创建了一个密钥:

如何更新/编辑此条目?我是否需要更改文件名和对其的所有引用,或者是否有需要较少工作的解决方案?

0 投票
1 回答
1453 浏览

encryption - 加密存储在远程后端(如 GCS 存储桶)上的 Terraform 状态是否有用?

我正在使用 Terraform 来管理 Google Cloud Platform (GCP) 资源。我使用Google Cloud Storage 后端来存储状态文件。GCP 提供托管密钥管理服务,因此可以管理密钥并使用这些密钥轻松启用存储桶上的加密。所以我使用以下来加密我的后端存储桶(test-terraform-state,这个存储桶将只包含 Terraform 状态)。

所以我的问题是:存储桶内容(此处为 Terraform 状态)可以加密,但它真的有用吗?如果存储桶上有策略,例如“只有某些用户可以访问它(读/写)”,那么添加加密是否有好处?我在这里只看到了额外的安全层(必要的?),因为人们需要访问此存储桶 + 角色roles/cloudkms.cryptoKeyEncrypterDecrypter才能访问内容。但我认为我错过了一些证明 Terraform 状态加密的用例。