GKE部署Spring Boot应用连接Cloud SQL报403权限不足如何解决?
问题根因
你遇到的403权限报错核心原因是GKE环境下访问Cloud SQL的身份缺少sqladmin.googleapis.com接口的调用权限与对应OAuth认证范围。Cloud Run默认会启用云服务访问所需的基础范围,因此同镜像之前运行正常,而GKE默认节点权限范围未包含Cloud SQL管理接口权限,导致无法创建临时证书连接数据库。
修复步骤
根据你GKE集群是否启用Workload Identity选择对应方案:
场景1:未启用Workload Identity(使用节点默认服务账号)
- 更新对应节点池的OAuth范围,添加Cloud SQL管理接口权限,执行命令:
gcloud container node-pools update [节点池名称] --cluster [集群名称] --zone [可用区] --scopes=https://www.googleapis.com/auth/sqlservice.admin - 为节点池绑定的默认Compute Engine服务账号(格式为
[项目编号]-compute@developer.gserviceaccount.com)授予Cloud SQL 客户端角色。
场景2:已启用Workload Identity(官方推荐方案)
- 确认应用Pod关联的Kubernetes服务账号(KSA)已经和Google Cloud服务账号(GSA)完成绑定
- 为绑定的GSA账号授予
Cloud SQL 客户端角色即可,无需额外修改节点权限范围。
补充:如果你通过Sidecar方式部署Cloud SQL Auth Proxy连接数据库,需要确保Sidecar容器关联的服务账号也持有上述权限,配置逻辑与应用容器一致。
验证操作
修复完成后重启应用Pod,查看Pod日志不再出现权限报错、可正常连接Cloud SQL即为修复成功。
内容的提问来源于stack exchange,提问作者jikar bhati
相关产品推荐
相关产品推荐

