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

Cloud Run通过cloud-sql-proxy启用IAM登录连接Cloud SQL的问题

解决方法

前提配置

  • 为Cloud Run关联的服务账号授予两个必要IAM角色:
    • roles/cloudsql.client:Cloud SQL实例连接权限
    • roles/cloudsql.instanceUser:IAM身份验证登录权限
  • 在Cloud SQL PostgreSQL实例中创建对应服务账号的IAM数据库用户,执行命令:
    gcloud sql users create [服务账号完整邮箱] --instance=[Cloud SQL实例名] --type=IAM_SERVICE_ACCOUNT
  • 登录PostgreSQL实例,为该IAM用户授予目标数据库的访问权限,示例命令:
    GRANT ALL PRIVILEGES ON DATABASE [你的数据库名] TO "[服务账号完整邮箱]";

方案1:使用Cloud Run内置Cloud SQL代理(推荐,无需自行维护代理)

Cloud Run的内置Cloud SQL集成原生支持IAM身份验证,无需额外配置代理启动参数,仅需调整数据库连接配置即可:

  1. 按原有操作在Cloud Run部署配置中添加Cloud SQL实例连接,不需要做额外修改
  2. 调整PostgreSQL连接字符串参数:
    • 用户名填Cloud Run服务账号的完整邮箱
    • 不需要填写固定数据库密码
    • 新增enable_iam_auth=true参数(部分数据库客户端参数名为iam_login=true,可根据你使用的客户端适配)
    • 连接示例:
      host=/cloudsql/[项目ID]:[区域]:[实例名] user=[服务账号邮箱] dbname=[数据库名] enable_iam_auth=true

方案2:自行打包运行Cloud SQL Proxy(适合需要自定义代理配置的场景)

如果你需要自己控制代理的启动参数,可以将Cloud SQL Proxy打包到你的容器镜像中,修改启动命令即可:

  • 代理启动时添加--enable_iam_login参数即可启用IAM身份验证
  • 不需要额外指定credential_file参数,Cloud Run运行环境会自动注入服务账号的默认凭据,代理可直接读取
  • 示例启动脚本:
#!/bin/bash
# 后台启动Cloud SQL Proxy
./cloud_sql_proxy -dir=/cloudsql -instances=[项目ID]:[区域]:[实例名] --enable_iam_login &
# 启动你的业务应用
./你的应用启动命令

部署后验证数据库连接正常即可,后续身份验证完全由Google Cloud IAM统一管控,不需要维护固定的数据库账号密码。

内容的提问来源于stack exchange,提问作者kluu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:24:05