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

google-cloud-kms - 使用 Python 从 KMS 解密文件失败,出现错误“400 Decryption failed: the ciphertext is invalid”

我已经使用 Python 客户端库加密了密码字符串,将内容写入文件,将其上传到 GCS。接下来,当我下载文件、读取内容并使用相同的客户端库解密时,它给了我这个错误。

我正在使用此代码来加密和解密

0 投票
0 回答
145 浏览

java - Java KeyManagementServiceClient 创建在 Jruby 中挂起

我在运行良好(单元测试)的 java 文件(GcpEncrypt.java)中有以下块。

但是,当我将其 jar 并从 a 中调用它时logstash Jruby input plugin,它会挂在客户端创建部分。

我可以看到ENTERED KEY CREATION日志,然后它就挂了,我该如何调试呢?

编辑

KeyManagementServiceClient通过将 实例化为实例变量,我能够找到相关的。似乎'com.google.cloud', 'google-cloud-kms', '0.81.0-beta'罐子缺少com/google/cloud/kms/v1/ListKeyRingsRequest课程。

0 投票
3 回答
3178 浏览

google-cloud-kms - Google Cloud KMS 解密问题

我是 Cloud KMS 的新手,我开始完全按照此处所写的内容进行操作

我通过运行此命令加密了以 UTF-8 格式保存的数据文件

然后结果我的加密数据在我新创建的加密文件中以这种格式呈现

这是我读取加密文件数据的方式:

现在每当我尝试通过此功能对其进行解密时:

它扔这个

关键类型是:Symmetric encrypt/decrypt默认算法:Google symmetric key

戒指位置:global

你能帮我看看谷歌文档中缺少什么吗?

0 投票
2 回答
282 浏览

google-cloud-platform - 轮换密钥和反应式再加密数据

我想在我的系统中引入密钥轮换,但需要重新加密。对某些事件、触发器等进行反应性操作会很好,但我在谷歌文档中找不到类似的东西。

在旋转事件之后,我想用新密钥重新加密数据并销毁旧密钥。

任何想法,如何实现这个目标?

0 投票
2 回答
209 浏览

go - 使用 KMS 时尝试将某些代码转换为 Go CDK

我有一些代码可以从 Google Cloud Storage 上传和下载文件。下面是一个简短的例子:

棘手的部分是我使用 Google KMS 来管理用于加密文件的密钥(Google 所谓的“客户管理的加密密钥”方案)。我的理解是,这种加密发生在 Google 端。

我发现使用 Go CDK 的唯一解决方案是使用 Google KMS 加密文件,然后上传加密的 blob。有没有办法像我以前用 Go CDK 一样指定加密密钥?

谢谢

0 投票
2 回答
742 浏览

google-cloud-kms - 为什么 gsutil 从使用 KMS 加密的存储桶中恢复文件(使用没有 DECRYPT 权限的服务帐户)?

我正在使用 GCP KMS,似乎当我将文件发送到 GCP 存储桶(使用 gustil cp)时,它是加密的。

但是,我有一个与使用不同服务帐户从同一存储桶恢复该文件的权限有关的问题。我的意思是,我用来从存储桶中恢复文件的服务帐户没有解密权限,即使如此,gustil cp 也可以工作。

我的问题是这是正常行为,还是我遗漏了什么?

让我描述一下我的问题:

  1. 首先,我确认bucket的默认加密是我之前设置的KEY:

    /li>
  2. 接下来,使用 gcloud config,我设置了一个服务帐户,该帐户具有“Storage Object Creator”和“Cloud KMS CryptoKey Encrypter”权限:

    /li>
  3. 我将本地文件发送到存储桶:

    将文件发送到存储桶后,我确认文件已使用我之前创建的 KMS 密钥加密:

    /li>
  4. 接下来,我设置了另一个服务帐户,但这次没有 DECRYPT 权限和对象查看器权限(以便它能够从存储桶中读取文件):

    /li>
  5. 设置新的服务帐户(没有解密权限)后,从存储桶中恢复文件的 gustil 工作顺利......

    /li>

我的问题是这是否是正常行为?或者,由于新的服务帐户没有解密权限,gustil cp恢复文件应该不起作用?我的意思是,这不是使用 KMS 加密的想法,第二个gustil cp命令应该失败并出现“403 权限被拒绝”错误消息或其他东西..

如果我从第二个服务帐户撤消“存储对象查看器”权限(从存储桶中恢复文件),在这种情况下,gustil 失败,但这是因为它没有读取文件的权限:

如果其他人可以帮助我并澄清问题,我将不胜感激......特别是我不确定该命令是否gsutil cp gs://my-bucket/my-file .应该工作。

我认为它不应该工作(因为服务帐户没有解密权限),还是应该工作?

0 投票
1 回答
288 浏览

encryption - 在 C# 中使用 Google KMS API 加密的值长度与在 postman 中直接从 API 生成的加密文本的长度不同

我正在尝试使用 google KeyManagementService 加密 C# 中的文本。我无法解密KeyManagementServiceClient.Encrypt使用KeyManagementServiceClient.Decrypt方法生成的密码。解密给了我:

我尝试使用 google Try this API 链接来获取密码,并且 google API 生成的密码长度和 C# 结果不同。

例如:纯文本:text

来自 C# 的密码:

来自 API 的密码:

有没有人分阶段解决这个问题?

这是我的示例代码

0 投票
2 回答
720 浏览

java - EC_SIGN_P256_SHA256 的 Bouncycastle 算法标识符

我需要使用来自谷歌 KMS 的密钥签署证书,然后验证即将到来的证书实际上是使用该密钥签署的。我对大多数东西都使用了 bouncycastle 提供程序,但是无法找到 EC_SIGN_P256_SHA256 的正确算法标识符(谷歌用来签署内容的算法)。

证书创建如下所示:

signAsymmetric - 或多或少是从谷歌示例复制粘贴,似乎很好。

验证是这样完成的:

如果我在 signatureCertificate.verify(...) 上使用 prime256v1,它会给出“java.security.NoSuchAlgorithmException:1.2.840.10045.3.1.7 Signature not available”,而其他一些算法只会给出签名验证异常。那么使用正确的方法或算法ID是什么?或者根本不可能以这种方式?

0 投票
0 回答
73 浏览

google-cloud-platform - 使用客户管理的加密上传到存储桶失败

基于https://cloud.google.com/storage/docs/encryption/using-customer-managed-keys

重现步骤:

  1. 在 Cloud KMS 中的特定位置(例如 us-central-1)创建密钥环和密钥。
  2. 将 Cloud KMS CryptoKey Encrypter/Decrypter 权限授予已创建密钥的存储服务帐户。
  3. 在位置 (us-central-1) 创建一个新的区域存储桶,并设置创建的 KMS 密钥进行加密。
  4. 尝试将文件上传到存储桶。

结果:

我很确定这是一个错误配置问题,但无法弄清楚我的错误。该请求并非来自受限制的国家/地区 - https://cloud.google.com/compute/docs/disks/customer-supplied-encryption#general_restrictions

0 投票
0 回答
53 浏览

google-cloud-kms - 通过 Google KMS API 进行签名的权限

我有许多在 GCP 中运行并使用 KMS 签署证书的应用程序。我为特定密钥授予每个应用程序签名权限(projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.asymmetricSign)。为了签名,我需要提供特定的密钥版本(实际上我想使用密钥的最后一个版本),所以我必须获取密钥的版本列表,这需要 projects.locations.keyRings.cryptoKeys.get 或项目.locations.keyRings.cryptoKeys.cryptoKeyVersions.list 权限。

问题是为什么我需要授予此权限来签署证书,以及是否有办法在不获取版本列表的情况下进行签名。