未分配给 CloudSQL 实例的服务帐户

Service account not assigned to CloudSQL instance

我需要使用特定服务帐户创建一个 CloudSQL 实例。正在尝试 API 调用 instances.insert:

POST https://www.googleapis.com/sql/v1beta4/projects/{project}/instances
{
  "serviceAccountEmailAddress": "<my account>@managed-gcp.iam.gserviceaccount.com",
  "name": "pvtest20200611-3",
  "settings": {
    "tier": "db-n1-standard-1"
  },
  "databaseVersion": "MYSQL_5_7"
}

实例已创建,但它有一个生成的 svc 帐户(例如 p754990076948-kf1bsf@gcp-sa-cloud-sql.iam.gserviceaccount.com)而不是我的。

对于我的 SA,我分配了存储 admin/storage 对象管理角色(这是我需要新创建的实例始终拥有的角色)。我还添加了 cloudsql 管理员角色。当我认为这是一个角色问题时,甚至尝试了 Project Editor 角色,但这没有用。

我试过 MySQL 和 Postgres 数据库类型。

你知道为什么我的账号没有被提取,为什么CloudSQL引擎总是分配它自己的? 自定义 SA 与 CloudSQL 实例一起使用的 requirement/setup 是什么?

当您在 Cloud SQL 中创建实例时,它将在创建过程中使用默认实例,因此,您将无法在创建过程中设置自定义实例。

但是,您可以在创建服务帐户后为其授予访问权限。正如官方文档 Granting roles to a service account for specific resources 中所述,您可以为您的服务帐户提供特定权限。您可以尝试使用 gcloud 命令,如下所示:

gcloud projects add-iam-policy-binding my-project-123 \
  --member serviceAccount:my-sa-123@my-project-123.iam.gserviceaccount.com \
  --role roles/editor

除此之外,您还可以使用此 link here 检查所有可用的服务帐户,以验证您的自定义帐户是否存在,甚至可以通过 UI 添加权限,如果你觉得这样更好

如果这些信息对您有帮助,请告诉我!