我想在两个不同的项目之间克隆 Google Cloud Platform Cloud SQL,但收到错误 403“调用者没有权限”

问题描述 投票:0回答:1

下面是我的 terraform 源代码

provider "google" {
  project = var.preprod_id
  region  = var.reqion
}

provider "google" {
  alias   = "source"
  project = var.prod_id
  region  = var.reqion
}

data "google_sql_database_instance" "source" {
    provider = google.source
    name = "plan-flow-db"
}
resource "google_sql_database_instance" "clone" {
  provider         = google
  name             = "cloned-plan-flow-db"  
  region           = var.reqion
  database_version = data.google_sql_database_instance.source.database_version

  clone {
    source_instance_name = data.google_sql_database_instance.source.name
  }

}

我使用 IAM 并配置如下

预生产

  • 楼主
  • 云sql管理
  • 云sql查看器
  • 云sql客户端

产品

  • 楼主
  • 云sql管理
  • 云sql查看器
  • 云sql客户端

但是我陷入了这个错误

╷
│ Error: Error, failed to create instance cloned-plan-flow-db: googleapi: Error 403: The caller does not have permission, forbidden
│ 
│   with google_sql_database_instance.clone,
│   on main.tf line 16, in resource "google_sql_database_instance" "clone":
│   16: resource "google_sql_database_instance" "clone" {
│ 
╵

有人解决过这个问题吗?

google-cloud-platform terraform terraform-provider-gcp
1个回答
0
投票

我建议仔细检查您的目标项目的权限。

roles/cloudsql.editor(或roles/cloudsql.admin):确认此角色已分配给目标项目中的服务帐户(preprod_id)。此角色对于创建新的 Cloud SQL 实例至关重要。

如果您确定此操作正确,请检查您是否具有 VPC 访问控制并在边界内授予必要的访问权限。

您可以查看项目的权限:

gcloud 项目 get-iam-policy $preprod_id --flatten="bindings[].members"
--format='table(绑定.角色:sort=1, 绑定.成员)'

© www.soinside.com 2019 - 2024. All rights reserved.