云 SQL 代理 - 消息:权限不足

Cloud SQL Proxy - Message: Insufficient Permission

我在使用云 SQL 代理时遇到以下连接问题。我已按照 link https://codelabs.developers.google.com/codelabs/cloud-sql-connectivity-gce-private#0

中的详细步骤操作

正在使用私人 IP 和服务帐户连接 SQL。我确实像这样添加了服务帐户政策,

gcloud projects add-iam-policy-binding <GCP PROJECT ID> --member serviceAccount:<SERVICE_ACCOUNT_NAME>@<GCP PROJECT ID>.iam.gserviceaccount.com --role roles/cloudsql.client

当我使用下面的 cloud_sql_proxy 抓取 cloud_sql_proxy 后通过 SSH 进入虚拟机时,

wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy && chmod +x cloud_sql_proxy

开始,

./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 &

导致以下错误,因为服务帐户已经绑定到 VM 权限不应该连接或启动 SQL 连接?

Rlimits for file descriptors set to {&{8500 1048576}}
errors parsing config:
        googleapi: Error 403: Request had insufficient authentication scopes.
More details:
Reason: insufficientPermissions, Message: Insufficient Permission

有什么想法吗?

  • 如果您是 运行 Compute Engine 实例的代理,请确保该实例使用的服务帐户(通常是 Compute Engine default service account)分配了正确的范围和权限(您我们已经添加了正确的角色,但请确保在创建实例时启用该角色):

  • 如果您自己创建了一个单独的服务帐户并添加了相关角色:
gcloud projects add-iam-policy-binding <GCP PROJECT ID> --member serviceAccount:<SERVICE_ACCOUNT_NAME>@<GCP PROJECT ID>.iam.gserviceaccount.com --role roles/cloudsql.client

确保将与您的服务帐户对应的 .json 文件下载到您的 Compute Engine 实例,并使用以下命令启动代理:

./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -credential_file=[PATH-TO-CREDENTIALS.JSON-FILE] &

另外确保所有与 Cloud SQL 和 Compute Engine 相关的 API 都已启用,并且您设置了防火墙规则以允许流量流向数据库使用的特定端口(Postgres 为 5432 ).

以下 docs 可以为您提供有关如何解决代理连接问题的进一步建议。