使用Cloud SQL Proxy的Google Cloud SQL(MySQL)的无密码用户?

关于云SQL代理的文档包含一行,“[B]由于代理始终从除代理以外无法访问的主机名连接,您可以创build一个只能由代理使用的用户帐户。 这样做的好处是,您可以指定这个帐户,而无需input密码,而不会影响您的实例或数据的安全性。

是否有任何可行的方法通过Google云代理连接MySQL客户端,该代理使用仅允许访问特定MySQL用户的服务帐户进行身份validation?

使用云SQL代理时限制访问的一个潜在方法是创build一个云用户代理IP地址 : '[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]' 的MySQL用户帐户 。 但是这对于在多个云虚拟机上运行的服务帐户不起作用。 这基本上是通过IP地址而不是通过服务帐户来validationMySQL用户。

限制服务帐户给MySQL用户的第二种方法可能是使用MySQL用户帐户'[USER_NAME]'@'cloudsqlproxy~%'并依靠IAM来限制访问。 运行Cloud SQL Client的服务帐户需要 roles/cloudsql.clientangular色,相当于cloudsql.instances.connectcloudsql.instances.get权限。 不幸的是,如果您授予多个服务帐户这个angular色,那么看起来没有办法限制他们使用彼此的MySQL用户。

第三种启用无密码身份validation的潜在方式可能是使用客户端证书( gcloud sql ssl-certs create [CERT_NAME] client-key.pem --instance [INSTANCE_NAME] )。 但是客户私钥比密码更难pipe理,因为在刷新服务器证书的1年之内,它们全部同时失效:“当刷新服务器证书时,还必须生成新的客户端证书; 现有的客户证书被吊销“,这使得他们基本上不可能在生产中使用。

基本上,云SQL SQL代理似乎不能通过IAM服务帐户启用对特定MySQL用户的身份validation。 它是否正确?

基本上,云SQL SQL代理似乎不能通过IAM服务帐户启用对特定MySQL用户的身份validation。 它是否正确?

那是对的。 云SQL代理不提供任何限制使用代理连接时可以访问的MySQL用户的机制。 通过代理进行的连接只受任何IAMangular色分配的限制。 限制哪些帐户可以访问哪些用户使用密码保护的机制。