You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过堡垒机和IAP连接Google Cloud SQL时IAM认证失败

问题背景与故障排查

环境

  • Google Cloud Platform (GCP)
  • 仅配置私有IP的Cloud SQL PostgreSQL实例
  • 仅配置私有IP的堡垒机(Bastion host)
  • 用于堡垒机访问的Identity-Aware Proxy (IAP)
  • SQL客户端DBeaver

问题描述

我需要从本地机器连接仅私有IP的Cloud SQL PostgreSQL实例,因此通过堡垒机中转访问。堡垒机上用systemd运行Cloud SQL Proxy的命令如下:

/usr/local/bin/cloud-sql-proxy --auto-iam-authn --private-ip --address 0.0.0.0 --port 3307 [connection-string]

本地通过IAP建立TCP转发:

gcloud compute start-iap-tunnel [bastion-name] 3307 --local-host-port=localhost:5432 --zone=[zone]

用DBeaver连接时配置:

  • 主机:localhost
  • 端口:5432
  • 数据库:db_name
  • 用户名:myname@company.com
  • 密码:空
    收到错误:
FATAL: Cloud SQL IAM user authentication failed for user "myname@company.com"

此前本地直接运行Cloud SQL Proxy时该配置完全正常,部署到堡垒机后就出现认证失败。

已尝试操作

确认自身账号拥有必要IAM权限且已添加至Cloud SQL实例,本地直连Proxy时无问题。


原因分析与解决方案

核心原因

当Cloud SQL Proxy部署在堡垒机上时,--auto-iam-authn模式会使用堡垒机实例所在的服务账号完成IAM认证,而非你本地机器的用户账号。这和本地直接运行Proxy时使用你本地gcloud身份的逻辑完全不同,因此导致你的IAM用户认证失败。

正确配置方案

方案1:让Proxy传递本地用户身份(推荐)

修改堡垒机上的Cloud SQL Proxy启动命令,去掉--auto-iam-authn,让Proxy仅做中转,由本地客户端传递IAM认证信息:

/usr/local/bin/cloud-sql-proxy --private-ip --address 0.0.0.0 --port 3307 [connection-string]

然后调整DBeaver的连接配置:

  1. 打开PostgreSQL连接设置的「认证」标签页
  2. 选择「Cloud SQL IAM认证」方式
  3. 配置本地gcloud SDK路径,或直接使用已登录的gcloud身份
  4. 用户名填写你的IAM邮箱myname@company.com,密码留空

方案2:给堡垒机服务账号添加IAM数据库权限

如果必须在堡垒机上保留--auto-iam-authn,需要做以下配置:

  1. 找到堡垒机实例使用的服务账号(默认格式为[project-number]-compute@developer.gserviceaccount.com)
  2. 在Cloud SQL实例的IAM设置中,给该服务账号添加Cloud SQL Client角色
  3. 登录PostgreSQL实例,创建对应IAM用户:
CREATE USER "堡垒机服务账号邮箱" WITH LOGIN;
GRANT cloudsqliamuser TO "堡垒机服务账号邮箱";
  1. 本地连接时,用户名填写堡垒机的服务账号邮箱,密码留空

验证步骤

  1. 重启堡垒机上的Cloud SQL Proxy服务:
sudo systemctl restart cloud-sql-proxy.service
  1. 重新建立IAP隧道连接
  2. 用修改后的配置尝试DBeaver连接

内容的提问来源于stack exchange,提问作者Артём Викторович

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:23:09