首页 > 解决方案 > 服务帐号未分配给 CloudSQL 实例

问题描述

我需要使用特定服务帐户创建 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,我分配了存储管理员/存储对象管理员角色(这是我需要新创建的实例始终拥有的角色)。我还添加了 cloudsql 管理员角色。当我认为这是一个角色问题时,甚至尝试了项目编辑角色,但这不起作用。

我尝试过 MySQL 和 Postgres db 类型。

你知道为什么我的帐户没有被提取,为什么 CloudSQL 引擎总是分配它自己的吗?自定义 SA 与 CloudSQL 实例一起使用的要求/设置是什么?

标签: google-cloud-sql

解决方案


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

但是,您可以在创建服务帐户后授予访问权限和权限。正如官方文档为特定资源的服务帐户授予角色中所述,您可以为您的服务帐户提供特定权限。您可以尝试使用gcloud如下命令:

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

除此之外,您还可以在此处使用此链接检查所有可用的服务帐户,以验证您的自定义帐户是否存在,甚至通过 UI 添加权限,如果您认为通过这种方式更好。

让我知道这些信息是否对您有帮助!


推荐阅读