尝试使用启动磁盘加密密钥时出现 Cloud KMS 错误

Cloud KMS error when attempting to use boot disk encryption key

我正在使用 Terraform 在 GCP 项目中构建集群。我在同一个 GCP 项目中手动创建了一个服务帐户,并且我在 terraform GKE 模块中指定了这个相同的服务帐户,如下所示

module "gke" {
...
    service_account = "tf-service-account@<project>.iam.gserviceaccount.com"
...
}

基本上这应该使用该服务帐户创建集群。我还向服务帐户添加了 Cloud KMS CrytpoKey Decrypter、Encrypter 和 Encrypter/Descypter,如下图所示。

同一服务帐户已被授予对 KMS 密钥的权限。如下所示

我已通过将其添加到我的节点池配置来指定要使用的正确加密密钥

boot_disk_kms_key = "projects/<PROJECT>/locations/europe-west2/keyRings/<KEY RING NAME>"

错误

我 运行 通过 GCP 云进行 terraform shell,当我收到以下错误时

Error: Error waiting for creating GKE NodePool: 
│       (1) deploy error: Not all instances running in IGM after 33.708999334s. Expected 2, running 0, transitioning 2. Current errors: [KMS_PERMISSION_DENIED]: Instance '<INSTANCE>' creation failed: Cloud KMS error when using key <KEY PATH>: Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource '<KEY PATH>' (or it may not exist).; [KMS_PERMISSION_DENIED]: Instance '<INSTANCE>' creation failed: Cloud KMS error when using key <KEY PATH>: Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource '<KEY PATH>' (or it may not exist)

您需要向 GCE 服务帐户(而非您的工作负载服务帐户)授予权限。 GCE 服务帐户采用以下格式:

service-[PROJECT_NUMBER]@compute-system.iam.gserviceaccount.com

注意这是 PROJECT_NUMBER,而不是 PROJECT_ID