Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义服务帐户在GCP中创建VM时,KMS权限出现400错误

使用自定义服务帐户在GCP中创建VM时,KMS权限出现400错误
EN

Stack Overflow用户
提问于 2021-07-16 03:47:53
回答 1查看 942关注 0票数 0

我正在使用Terraform创建一个VM实例和网络,Compute磁盘,它连接到上述实例,该磁盘的快照和一个KMS密钥环和密钥来加密数据。

我使用自己创建的服务帐户对GCP进行身份验证,使用以下块:

credentials = file("gcp-account.json")

该帐户具有下列权限:

Encrypter/Decrypter

  • Compute

  • Cloud管理

  • Cloud CryptoKey管理

  • 计算网络Admin

  • Editor

然后,在google_compute_snapshotgoogle_compute_disk块中,我为请求提供了kms_key_self_link和服务帐户,以使用新创建的KMS密钥和我的自定义服务帐户加密数据:

代码语言:javascript
运行
AI代码解释
复制
kms_key_self_link       = var.kms_key_selflink
kms_key_service_account = var.service_account

我在google_compute_instance块中做了同样的事情,并在boot_diskattached_disk中提供了kms_key_self_link,并指定VM应该为请求使用自定义服务帐户:

代码语言:javascript
运行
AI代码解释
复制
  service_account {
    email  = var.service_account
    scopes = []
  }

然后,在运行terraform apply时,我会得到以下错误:

错误:错误创建实例: googleapi: error 400:当使用密钥项目/{项目名称}/位置/密钥环/{密钥环名称}/加密键/{密钥名}:资源项目/{项目名称}/位置/{位置}/密钥环/{密钥环}/{密钥名}:‘(或者可能不存在)时,云KMS错误。

当我授予

角色/cloudkms.cryptoKeyEncrypterDecrypter.加密密钥

对Compute Engine Service Agent的权限,则脚本运行良好。

代码语言:javascript
运行
AI代码解释
复制
data "google_iam_policy" "kms_key_encrypt_decrypt" {
  binding {
    role = "roles/cloudkms.cryptoKeyEncrypterDecrypter"

    members = ["serviceAccount:service{{PROJECT_NUMBER}}@computesystem.iam.gserviceaccount.com"]
  }
}

resource "google_kms_crypto_key_iam_policy" "crypto_key" {
  crypto_key_id = google_kms_crypto_key.key.id
  policy_data   = data.google_iam_policy.kms_key_encrypt_decrypt.policy_data
}

但是,我更喜欢使用我的所有资源,只使用我的自定义服务帐户来处理请求,而不以任何方式涉及默认的Compute服务代理。

我检查了Compute Engine Service Agent分配了哪些角色,只有一个:

计算引擎服务代理

并将完全相同的角色分配给我的自定义服务帐户。这没什么用。后来我注意到,这个问题只发生在VM的boot_disk中:

代码语言:javascript
运行
AI代码解释
复制
  boot_disk {
    kms_key_self_link = var.kms_key_selflink

    initialize_params {
      image = var.vm_image
      type  = var.gce_disk_type
    }
  }

当我注释掉kms_key_self_link块中的boot_disk时,其他资源(快照、计算磁盘、附加磁盘)也可以使用kms_key_self_link和自定义服务帐户,而不会出现任何问题。如果我将kms_key_self_link参数留在boot_disk中,问题仍然存在,我需要指定默认代理来解决这个问题。

是否有一种方法可以让我的所有资源只使用自定义服务帐户而不涉及默认的Compute服务代理,而我只是在脚本中遗漏了一些东西,或者默认代理需要保留一些操作?

EN

回答 1

Stack Overflow用户

发布于 2021-07-30 02:25:41

因此,通过提供的答案,如果没有Compute服务代理的参与,就不可能获得所有的资源。它一定有

角色/cloudkms.cryptoKeyEncrypterDecrypter.加密密钥

角色授予,而不管使用的任何其他自定义服务帐户。下面是我在Terraform代码中使用的策略,用于授予它必要的权限:

代码语言:javascript
运行
AI代码解释
复制
data "google_iam_policy" "kms_key_encrypt_decrypt" {
  binding {
    role = "roles/cloudkms.cryptoKeyEncrypterDecrypter"

    members = ["serviceAccount:service{{PROJECT_NUMBER}}@computesystem.iam.gserviceaccount.com"]
  }
}

resource "google_kms_crypto_key_iam_policy" "crypto_key" {
  crypto_key_id = google_kms_crypto_key.key.id
  policy_data   = data.google_iam_policy.kms_key_encrypt_decrypt.policy_data
}

感谢大家的回答。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68408499

复制
相关文章
PostgreSQL - 允许远程访问的设置方法
上边的第7行是新添加的内容,表示允许网段192.168.1.0上的所有主机使用所有合法的数据库用户名访问数据库,并提供加密的密码验证。
雨临Lewis
2022/01/11
7.6K0
PhpStorm的GitHub和git配置,以及不显示git的设置方法
首先要确定 PhpStorm 安装了该插件,打开 File > Settings > Plugins 搜索 GutHub,可以看到插件已安装,如果没有请先安装。
德顺
2019/11/13
5.3K0
PhpStorm的GitHub和git配置,以及不显示git的设置方法
WordPress 版本更新
WordPress 是一个内容管理系统 (WCM),即它是一种以最佳方式组织创建、存储和展示 Web 内容的整个过程的工具。WordPress 作为一种改进工具开始了它的旅程,以增强日常写作的常规排版。但它被视为一种博客工具,当我们进入今年最后一个季度时,WordPress 成为最常用的 WCM 系统,而且不仅在博客社区中也是如此。
海拥
2023/01/01
2.7K0
WordPress 版本更新
如何禁止WordPress版本、主题和插件的自动更新?2种方法
不管是 WordPress 版本还是插件或主题,都不可能百分百完美没问题,发现问题解决问题,然后这也是为什么会有后续版本出来的原因。有时候 WordPress 新版本会自动升级,或者 WordPress 插件/主题也会有新版本出来,这都没有问题,但是最怕的就是它们自动升级,有可能会覆盖我们自己 DIY 的代码功能,也可能会因为兼容问题导致站点崩溃,所以有些站长就想通过禁止 WordPress 版本、插件和主题的自动更新。目前有两个方法,一个是纯代码实现,另一个是安装插件实现。
帝旭科技
2022/11/23
2.4K0
如何禁止WordPress版本、主题和插件的自动更新?2种方法
小程序控制版本更新最佳实践
按照微信小程序官方文档的说明,小程序的更新机制主要分为未启动时更新和启动时更新两种模式。启动时更新会在小程序冷启动时异步检查是否有新版本,如果有新版本,会下载下来,等下次冷启动时候使用新版本代码进行启动;而未启动时更新会有定时检查器对最近7天内使用过的小程序进行定时检查是否有新版本,每6小时一次,如果有新版本就会预下载,下次冷启动时候可以直接使用最新的版本。
790531192
2022/02/08
2.1K1
小程序控制版本更新最佳实践
Phpstorm配置git版本控制器
Phpstorm中配置git版本控制器:打开PhpStorm,点击File ,Settings ,找到Version Control 找到Git填写Path to Git executable点击Test测试成功就可以了。
OwenZhang
2021/12/08
4370
Phpstorm配置git版本控制器
WordPress 4.0 之前的版本将失去安全更新
WordPress 安全团队宣布在2022年12月1日之后,将不再提供 3.7 至 4.0 版本的安全更新,WordPress 3.7 版本是在 2013 年发布的,当时 WordPress 在这个版本引入了后台自动更新,然后 3.8 版本重新设计了后台。
Denis
2023/04/13
3480
WordPress 4.0 之前的版本将失去安全更新
WordPress 后台自动更新详解和设置
WordPress 3.7 发布,其中一个最重大的功能就是 WordPress 可以后台自动更新了,无需人工介入。为了更好安全性和并且使得这个更新的过程更流畅,在默认情况下,只有小版本更新(比如安全和维护更新)以及翻译文件更新才被开启。
Denis
2023/04/15
1.1K0
WordPress 允许上传格式 设置 File Upload Types
最下面追加代码 到最后(如果需要别的类型 自行添加 红色是我允许的格式 applicaiton/格式 即可!!!)
收心
2022/01/19
1.5K0
WordPress 允许上传格式 设置 File Upload Types
实施ERP的最佳方法是什么
也许您已决定加入潮流,并在公司中实施企业资源计划或ERP,或者您要从当前的ERP系统进行升级。令人恐惧的部分可能是进行更改。您应该放弃所有内容并立即启动ERP还是可以分阶段实施?
深圳ERP
2019/12/13
1K0
实施ERP的最佳方法是什么
禁用WordPress后台自动保存和修订版本的方法
/** * 禁用文章版本历史保存功能 */ define(‘WP_POST_REVISIONS’, false);
魏杰
2022/12/23
5260
PhpStorm 头部注释、类注释和函数注释的设置
如下图,设置头部注释、类注释以及函数注释,时间、用户名、文件名称等随机改变的属性,直接使用其下方已经定义的属性即可。
全栈程序员站长
2022/07/11
2.9K0
PhpStorm 头部注释、类注释和函数注释的设置
代码版本控制及托管:我的最佳实践
我一般把代码托管在 Github 网站上,这样既解决了代码备份问题,又方便与他人进行交流。
简说基因
2020/11/19
5840
更新的同时获取被更新的记录的id
更新的同时获取被更新的记录的id 一般我的写法是 select auto_id into v_id from history where state=1 and rownum=1; update history set state=0 where auto_id=v_id 能不能把两条语句合成一条写呀 可以了 UPDATE BIZ_WORKFLOW SET SEND_MARK=1 WHERE AUTO_ID=ID RETURN AUTO_ID INTO ID ;
阿新
2018/04/12
1.8K0
Composer 设置忽略版本匹配的方法
Composer是PHP中用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件。接下来通过本文给大家介绍Composer设置忽略版本匹配的方法,需要的朋友参考下吧
CrazyCodes
2018/09/18
2K0
解决wordpress中php版本太低的方法
  wordpress php版本太低怎么办?如果我们比较关注WordPress程序新版本的话会看到自己在网站后台提示有新的WordPress程序需要升级的时候,如果我们当前的WEB系统PHP版本低于
会长君
2023/04/26
1.4K0
确保云安全的最佳方法是什么?
随着云计算成为企业开展业务的一种基础技术,云安全已变得至关重要。然而,充分了解云安全的最佳策略是一个真正的挑战。
静一
2020/03/25
7900
确保云安全的最佳方法是什么?
利用 Git 和 GitHub 进行版本控制和协作管理的最佳实践
作为现代软件工程和开发的基础,版本控制是一种管理不同版本代码的方法。Git作为最受欢迎的版本控制系统之一,被广泛应用在软件开发中。GitHub是一个基于Git的在线平台,可以帮助团队协作和管理代码。下面将讨论如何使用Git和GitHub进行版本控制和协作管理的最佳实践。
用户1289394
2024/02/26
5210
利用 Git 和 GitHub 进行版本控制和协作管理的最佳实践
WordPress 技巧:在设置菜单下面增加所有设置的页面
有一定熟悉 WordPress 的同学可能都知道,我们可以通过 http://博客地址/wp-admin/options.php 这个地址访问到 WordPress 的所有设置,但是如果每次都要主动敲打链接的话,就会比较麻烦,所以我们可以通过下面的代码在在设置菜单下面增加所有设置的页面。
Denis
2023/04/15
5870
WordPress主题中加载jQuery的最佳方法
一般来说,在html页面底部 (也就是</body>之前)引入JavaScript,如jQuery 和 jQuery插件是个不错的做法。原因很简单,HTTP / 1.1规范表明浏览器不能并行下载两个以上的组件。
丘壑
2019/03/13
2.6K0

相似问题

版本控制WordPress模板文件的最佳方法?

20

恢复和更新我的旧WordPress站点的最佳方法是什么?

20

使用版本控制为自由职业者设置wordpress开发环境的最佳方法是什么?

20

在Wordpress中设置“评论”的最佳方法?

20

安装Wordpress的最佳方法是什么?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档