使用 GCloud KMS 生成加密密钥以访问私有存储库作为依赖项时出现错误

Shu*_*ngh 5 javascript google-app-engine node.js google-cloud-platform gcloud

我正在尝试使用此文档将加密的 ssh 密钥添加到 google KMS ,以访问私有存储库作为 Google App Engine(Node.JS 项目)的依赖项。

我已成功生成 Cloud KMS KeyRing 和 CryptoKey,但在加密密钥时遇到错误。

(gcloud.kms.encrypt)PERMISSION_DENIED:资源“projects/test/locations/global/keyRings/my-keyring/cryptoKeys/key”的权限“cloudkms.cryptoKeyVersions.useToEncrypt”被拒绝。

需要一些帮助来设置此功能,以便我可以在 GAE 上使用此 ssh 密钥。

Joh*_*ley 6

您没有用于加密功能的 IAM 权限。

建议:不要练习 SSH 真实密钥。将它们复制到另一个目录中。然后了解如何在副本上使用 IAM 和 KMS。

需要一些帮助来设置此功能,以便我可以在 GAE 上使用此 ssh 密钥。

我不确定您想通过 KMS 加密 SSH 密钥以在 GAE 上使用来完成什么任务。

要允许用户或服务帐户使用特定密钥进行加密或解密,他们必须具有 cloudkms.cryptoKeyEncrypterDecrypter、cloudkms.cryptoKeyEncrypter、cloudkms.cryptoKeyDecrypter 或所有者角色,如权限和角色中的图表所示。

授予服务帐户权限的示例命令:

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
Run Code Online (Sandbox Code Playgroud)

授予用户权限的类似命令:

gcloud kms keys add-iam-policy-binding \
  golden-egg --location global --keyring golden-goose \
  --member user:sillygoose@gmail.com \
  --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Run Code Online (Sandbox Code Playgroud)

授予使用密钥的权限

权限和角色