【问题标题】:Cloud SQL proxy cannot connect to a database using a second service account with same permissionsCloud SQL 代理无法使用具有相同权限的第二个服务帐号连接到数据库
【发布时间】:2018-12-19 14:26:32
【问题描述】:

按照教程Connecting [Postgres] from Kubernetes Engine 操作后,我能够让我的应用服务器通过 Cloud SQL 代理和授予“SQL 客户端”、“SQL 编辑器”和“SQL 管理员”的服务帐户连接到我的 Postgres 数据库权限。

但是,在第二次学习本教程(创建第二个数据库,用于从另一个集群中使用)并因此创建具有相同权限的第二个服务帐户之后,我意识到我只能连接我的第二个 Cloud SQL 数据库使用我的第一个服务帐号!

每次我尝试使用第二个服务帐户(再次授予对完全相同的 3 个权限的访问权限!)时,我都会收到 couldn't connect to "project:region:instance" 错误...

上下文:我知道 Cloud SQL 尚不支持基于实例的权限,但如果可能的话,我希望为我的 2 个数据库中的每一个都有专用的服务帐户,但不明白为什么第二个服务帐户具有相同的权限不工作。

【问题讨论】:

  • 可能与this有关:您的cloudsql-instance-credentials文件是根据您的服务帐户生成的。您是否生成了第二个并将这个新的凭证文件添加到您的卷中?
  • 谢谢@Mangu!我相信我有!也就是说,一位同事能够创建自己的服务帐户并使用它连接到两个数据库,所以我们很好。注意:“CloudSQL 客户端”权限就足够了。
  • 我可以请您发表一下您的同行是如何做到这一点的答案吗?如果可能的话,当然可以。看起来情况很有趣。

标签: google-cloud-platform google-cloud-sql service-accounts google-kubernetes-engine cloud-sql-proxy


【解决方案1】:

首先,您的云 sql 代理只需要 Cloud SQL Client 角色。不需要其他角色。

其次,您是否使用来自同一个 kubernetes 集群的应用服务器。您是否尝试对两个服务帐户使用 kubernetes 相同的秘密 cloudsql-instance-credentials

如果是,那就是问题所在。您需要使用第二个服务帐户的新凭据 json 更新 cloudsql-instance-credentials 密钥。

或者,您可以保留两个秘密对象,分别为 cloudsql-instance-credentials-service-account-1cloudsql-instance-credentials-service-account-2。并且,更新配置 yml 以安装所需的秘密,如下所示,

  - name: cloudsql-proxy
    image: gcr.io/cloudsql-docker/gce-proxy:1.09
    command: ["/cloud_sql_proxy", "--dir=/cloudsql",
              "-instances=<instance_connection_name>=tcp:5432",
              "-credential_file=/secrets/cloudsql/credentials.json"]
    volumeMounts:
      - name: cloudsql-instance-credentials
        mountPath: /secrets/cloudsql
        readOnly: true
  volumes:
    - name: cloudsql-instance-credentials
      secret:
        secretName: cloudsql-instance-credentials-service-account-2

【讨论】:

  • 你对这个角色的看法是对的!我有同一个应用服务器的两个实例:每个集群一个(proddev)。可能是我确实使用了错误的cloudsql-instance-credentials。谢谢你,@Narendra!
  • 我只想添加(对于需要的人),该角色的别名是roles/cloudsql.client。感谢您的出色回答
猜你喜欢
  • 2016-10-05
  • 2018-08-04
  • 1970-01-01
  • 2018-11-22
  • 2018-01-27
  • 1970-01-01
  • 2020-09-16
  • 2021-02-12
  • 1970-01-01
相关资源
最近更新 更多