云 SQL 代理无法使用具有相同权限的第二个服务帐户连接到数据库
Cloud SQL proxy cannot connect to a database using a second service account with same permissions
完成教程 Connecting [Postgres] from Kubernetes Engine 后,我能够让我的应用服务器通过云 SQL 代理和授予 "SQL Client" 的服务帐户连接到我的 Postgres 数据库, "SQL Editor" 和 "SQL Admin" 权限。
但是,在第二次学习本教程(创建第二个数据库,供另一个集群使用)并因此创建第二个具有相同权限的服务帐户后,我意识到我只能连接我的第二个云SQL 数据库使用我的第一个服务帐户!
每次我尝试使用第二个服务帐户(再次授予对完全相同的 3 个权限的访问权限!)时,我都会收到 couldn't connect to "project:region:instance"
错误...
上下文:我知道 Cloud SQL 尚不支持基于实例的权限,但如果可能的话,我希望为我的 2 个数据库中的每一个都设置专用服务帐户,但不明白为什么具有相同权限的第二个服务帐户不起作用。
首先,您只需要 Cloud SQL Client 角色为您的 cloud sql 代理。不需要其他角色。
其次,您是否使用来自同一个 kubernetes 集群的应用服务器。您是否尝试对两个服务帐户使用 kubernetes 相同的秘密 cloudsql-instance-credentials。
如果是,那就是问题所在。您需要使用第二个服务帐户的新凭据 json 更新 cloudsql-instance-credentials 秘密。
或者,您可以保留两个秘密对象作为 cloudsql-instance-credentials-service-account-1 和 cloudsql-实例凭证-服务帐户-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
完成教程 Connecting [Postgres] from Kubernetes Engine 后,我能够让我的应用服务器通过云 SQL 代理和授予 "SQL Client" 的服务帐户连接到我的 Postgres 数据库, "SQL Editor" 和 "SQL Admin" 权限。
但是,在第二次学习本教程(创建第二个数据库,供另一个集群使用)并因此创建第二个具有相同权限的服务帐户后,我意识到我只能连接我的第二个云SQL 数据库使用我的第一个服务帐户!
每次我尝试使用第二个服务帐户(再次授予对完全相同的 3 个权限的访问权限!)时,我都会收到 couldn't connect to "project:region:instance"
错误...
上下文:我知道 Cloud SQL 尚不支持基于实例的权限,但如果可能的话,我希望为我的 2 个数据库中的每一个都设置专用服务帐户,但不明白为什么具有相同权限的第二个服务帐户不起作用。
首先,您只需要 Cloud SQL Client 角色为您的 cloud sql 代理。不需要其他角色。
其次,您是否使用来自同一个 kubernetes 集群的应用服务器。您是否尝试对两个服务帐户使用 kubernetes 相同的秘密 cloudsql-instance-credentials。
如果是,那就是问题所在。您需要使用第二个服务帐户的新凭据 json 更新 cloudsql-instance-credentials 秘密。
或者,您可以保留两个秘密对象作为 cloudsql-instance-credentials-service-account-1 和 cloudsql-实例凭证-服务帐户-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