无法连接公有云PostgreSQL与Data Fusion实例,报403权限错误
解决Data Fusion连接Cloud SQL PostgreSQL的403权限错误
核心问题分析
你遇到的403错误本质是Data Fusion用于访问Cloud SQL的服务账号缺少必要权限。Data Fusion有两个关键服务账号需要关注:你创建实例时指定的自定义服务账号,以及Data Fusion内置的服务代理账号(格式通常为service-<项目编号>@gcp-sa-datafusion.iam.gserviceaccount.com),后者是运行时实际发起Cloud SQL请求的身份,你之前可能忽略了它的权限配置。
具体修复步骤
找到内置服务代理账号
- 进入Data Fusion实例详情页,在「实例设置」中查看「服务代理账号」;
- 或用gcloud命令查询:
输出结果里的gcloud data-fusion instances describe <你的实例名> --location=<实例区域>serviceAccount字段就是该账号。
给内置账号添加Cloud SQL权限
给这个内置账号至少添加roles/cloudsql.client角色(如果需要更细粒度权限,可单独配置cloudsql.instances.connect、cloudsql.databases.select等权限,根据你的业务需求)。双重验证权限配置
- 确认你创建实例时指定的自定义服务账号,已正确配置
roles/cloudsql.admin或roles/cloudsql.client; - 进入Cloud SQL实例的IAM页面,确保上述两个服务账号都被添加并赋予对应的Cloud SQL访问角色。
- 确认你创建实例时指定的自定义服务账号,已正确配置
额外检查项
- 核对JDBC连接字符串中的Cloud SQL实例ID格式是否正确(必须是
项目ID:区域:实例名); - 确认PostgreSQL用户
chatbot-dev已被授权访问analytics数据库(可在Cloud SQL中执行GRANT ALL PRIVILEGES ON DATABASE analytics TO "chatbot-dev";); - 确认Data Fusion实例与Cloud SQL实例的VPC网络连通(若使用私有网络,需配置VPC peering或私有服务访问)。
- 核对JDBC连接字符串中的Cloud SQL实例ID格式是否正确(必须是
内容的提问来源于stack exchange,提问作者Ahmad Coachendo
相关产品推荐
相关产品推荐

