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

Google cloud platform 云SQL代理-消息:权限不足,google-cloud-platform,google-cloud-sql,cloud-sql-proxy,Google Cloud Platform,Google Cloud Sql,Cloud Sql Proxy,我在使用云SQL代理时面临以下连接问题。我已经遵循了这个链接中的详细步骤 使用专用IP和服务帐户连接SQL。我确实添加了这样的服务帐户策略 gcloud projects add-iam-policy-binding <GCP PROJECT ID> --member serviceAccount:<SERVICE_ACCOUNT_NAME>@<GCP PROJECT ID>.iam.gserviceaccount.com --role roles/cloud

我在使用云SQL代理时面临以下连接问题。我已经遵循了这个链接中的详细步骤

使用专用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 -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 &
有什么想法吗?

  • 如果您正在从计算引擎实例运行代理,请确保实例(通常为)正在使用的服务帐户分配了正确的作用域和权限(您已经添加了正确的角色,但请确保在创建实例时启用此角色):

  • 如果您自己创建了一个单独的服务帐户并添加了相关角色,则:
gcloud项目添加iam策略绑定--成员serviceAccount:@.iam.gserviceaccount.com--角色/cloudsql.client
确保将与服务帐户对应的.json文件下载到计算引擎实例,并使用以下命令启动代理:

./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -credential_file=[PATH-TO-CREDENTIALS.JSON-FILE] &
/cloud\u sql\u proxy-instances==tcp:5432-credential\u file=[PATH-TO-CREDENTIALS.JSON-file]&
另外,请确保所有与云SQL和计算引擎相关的API都已启用,并且您已经设置了防火墙规则,以允许数据库使用的特定端口的流量(5432用于Postgres)


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

1/2)这是一个很好的答案。然而,今天我想提出正确的方法。计算引擎作用域是旧式的,在IAM之前使用过。这些作用域限制分配给计算引擎正在使用的服务帐户的权限(角色)。最好为服务帐户分配正确的角色,然后选择“允许完全访问所有云API”。选择范围的原因是,在过去,服务帐户不存在,IAM也不存在。Scopes限制了服务的“总”功能。2/2)一个更好的改进是创建单独的服务帐户,每个计算引擎组/应用程序类型都有特定的IAM角色。感谢各位,我为此创建了单独的服务帐户,并且似乎通过传递凭据文件从VM实例中使用sqlcmd。但是如何从笔记本电脑上使用SQLStudio连接这个sql实例呢?您提到的教程中的任何想法都提到使用PostgreSQL连接到云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
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 -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -credential_file=[PATH-TO-CREDENTIALS.JSON-FILE] &