繁体   English   中英

我的帐户在 GCP 控制台上具有某些权限,但在 Terraform/命令行中没有

[英]My account has certain permissions on GCP console but not in Terraform/command line

在 GCP 控制台上,我可以成功创建 GCE 虚拟机,并为共享 VPC 子网中的虚拟机创建主地址和别名 IP 地址。

但奇怪的是,当我尝试使用 Terraform 重复该过程时,出现以下错误:

Error: Error creating Address: googleapi: Error 403: Required 'compute.addresses.createInternal' permission for 'projects/xxx/regions/us-central1/addresses/yyy', forbidden

我在 'compute.instances.setDeletionProtection' 上也遇到了另一个权限错误,尝试略有不同。

其他要分享的信息:

  • 我对控制台和 Terraform/命令行使用相同的身份(我的用户帐户)。
  • 我在我们的组织管理员授予的项目中拥有有限的自定义“开发人员”角色。 我不知道它包含的具体权限,但我认为这已经足够了,因为我可以在 GCP 控制台上完成我的任务。
  • VM 在项目 A 中,而共享 VPC/子网在项目 B 中。我在另一个我是 VM 驻留项目的所有者的场景中使用了以下 Terraform 代码,并且没有问题:
resource "google_compute_address" "alias-ips" {
  name = var.name
  address_type = "INTERNAL"
  purpose = "GCE_ENDPOINT"

  region = var.region

  subnetwork = "https://www.googleapis.com/compute/v1/projects/${var.subnet_project}/regions/${var.region}/subnetworks/${var.subnet}"

  project = var.project
}
  • 我尝试了策略疑难解答,但结果没有帮助。 它在项目级别显示“未知”,在自定义“开发人员”角色上显示“未知”。 我在“调查结果”列中“无权查看访问权限”。

接下来我将尝试使用gcloud创建相同的资源。 但我怀疑它也会产生任何有用的错误。

更新1:

我尝试gcloud创建一个虚拟机。 我能够创建虚拟机及其主要和别名 IP。 但是当我尝试设置删除保护(使用gcloud compute instances update XXX --deletion-protection或在创建 VM 时使用选项--deletion-protection时,我再次收到 403 错误。但令人困惑的是我可以创建 IP . 这可能意味着我写的 TF 不是完全正确的方式,或者 TF 处理别名 IP 创建的方式与gcloud不同。

更新 2:

根据请求,我通过gcloud auth application-default login为 TF 设置了 GCP authN。 我从未接触过GOOGLE_APPLICATION_CREDENTIALS ,所以它是空的。 我很确定我使用的是相同的帐户/身份。 我在运行 Terraform 的环境中运行 Terraform 以在我使用的其他 GCP 项目中执行所有操作都没有问题,在那里我的权限限制较少。

我们最终发现这是因为我们的管理员为我创建的自定义角色缺少这两个权限:

  • compute.addresses.createInternal
  • compute.instances.setDeletionProtection

在他们为我添加了这两个权限之后,我就可以完成我的工作了。 对我来说,两个阻塞问题分别是两个权限,1)无法在共享 VPC/子网中创建 IP 地址; 2) 无法为虚拟机开启“删除保护”。

因此,GCP 或 Terraform 检查权限的方式没有问题,我的身份验证也没有问题。 我认为这是一个更大的问题,但结果只是两个权限阻止了我创建 VM。

我可以有计算实例管理员角色和/或计算网络用户角色,这样我就不会遇到这个问题。 我们的管理员决定不直接授予我(开发人员)这两个角色的原因是它们包含的权限太宽泛。

但我仍然怀疑创建别名 IP 时 GCP Console 与 Terraform/gcloud 中的矛盾行为。 我猜是 GCP Console 使用了一些非标准的 API,这与 Terraform/gcloud 的工作方式不同。 它背后可能存在错误或某些未记录的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM