Kubernetes集群中的Cloud SQL代理:需要哪些服务帐户权限?

时间:2019-07-11 17:09:06

标签: google-kubernetes-engine google-cloud-sql google-cloud-composer cloud-sql-proxy

我正在按照Google(https://github.com/GoogleCloudPlatform/cloudsql-proxy/blob/master/Kubernetes.md)的指南在Kubernetes集群中设置Cloud SQL代理。

文档说:

You need a service-account token with "Project Editor" privileges

我很困惑,因为我的应用程序(Composer)运行在Kubernetes上,而我试图连接的Cloud SQL数据库则位于不同的项目中。我是否只需要两个项目的“项目编辑者”特权?我认为我们的系统管理员不希望授予我的项目编辑者特权给包含要连接的SQL数据库的项目。

我问是因为我遇到了连接问题:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
googleapi: Error 403: The client is not authorized to make this request., notAuthorized

我认为连接错误是由于我使用的服务帐户令牌造成的,因为我严格遵循了指南中的所有其他内容

我已经测试了两个服务帐户令牌。

  1. Kubernetes所在项目的具有项目编辑器的服务帐户。

  2. 我们的系统管理员向我提供的服务帐户具有连接到云SQL数据库的特权。

1 个答案:

答案 0 :(得分:0)

要使用Cloud SQL代理,您的凭据应具有以下IAM角色之一:

  • Cloud SQL Client(首选)
  • Cloud SQL Editor
  • Cloud SQL Admin

或者,您可以手动分配以下IAM权限:

  • cloudsql.instances.connect
  • cloudsql.instances.get

您的凭据需要同时具有两个帐户的权限-具有数据库的帐户和具有您所使用的凭据的帐户。