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

Posted

技术标签:

【中文标题】Kubernetes 集群中的 Cloud SQL 代理:需要哪些服务帐户权限?【英文标题】:Cloud SQL Proxy in a Kubernetes cluster: What Service-account Permissions are needed? 【发布时间】:2019-07-11 17:09:06 【问题描述】:

我正在按照 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

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

我已经使用两个服务帐户令牌进行了测试。

    具有项目编辑器的服务帐户,用于 Kubernetes 所在的项目。

    我们的系统管理员向我发送的服务帐户具有连接到云 SQL 数据库的权限。

【问题讨论】:

【参考方案1】:

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

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

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

cloudsql.instances.connect cloudsql.instances.get

您的凭据需要对两个帐户具有这些权限 - 拥有数据库的帐户和拥有您正在使用的凭据的帐户。

【讨论】:

以上是关于Kubernetes 集群中的 Cloud SQL 代理:需要哪些服务帐户权限?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google Cloud Platform 中编辑 Kubernetes 集群的描述字段?

Spring Cloud Kubernetes:啥是集群读取器权限?

在 Google Cloud 上的何处配置 Kubernetes 集群自动扩缩器?

使用FIT2CLOUD在青云QingCloud快速部署和管理Kubernetes集群

将 Google Cloud 中的外部 IP 与 Kubernetes 服务一起使用以将其公开到 Internet

Kubernetes+Promethues+Cloud Alert实践分享