GKE连接Cloud SQL MySQL时认证权限不足问题排查求助
问题原因与排查方案
问题原因
从报错信息里的ACCESS_TOKEN_SCOPE_INSUFFICIENT和Request had insufficient authentication scopes可直接定位:创建GKE集群时,未给节点服务账号配置访问Cloud SQL Admin API的权限范围(Scope),导致Pod内应用无法通过节点元数据服务器获取足够权限,调用Cloud SQL Admin API的GetConnectSettings方法时被拒绝。
排查与修复步骤
检查集群节点的权限范围
执行命令查看当前集群的服务账号及关联的Scope:gcloud container clusters describe questy-java-cluster --zone us-central1-c | grep -A 10 "serviceAccount"确认输出中是否包含
https://www.googleapis.com/auth/sqlservice.admin,若无则说明缺少必要权限范围。验证节点服务账号的IAM角色
即使Scope配置正确,也要确认节点使用的服务账号拥有访问Cloud SQL的IAM权限。执行以下命令查看服务账号的IAM绑定:gcloud projects get-iam-policy quizdev --filter="bindings.members:serviceAccount:$(gcloud container clusters describe questy-java-cluster --zone us-central1-c --format='value(serviceAccount)')"确保该账号拥有
Cloud SQL Client或更高级别的相关角色。确认应用的认证方式
检查应用是否依赖节点元数据服务器获取访问令牌(无独立服务账号密钥):- 若是这种情况,必须确保节点Scope包含所需权限;
- 若应用使用独立的服务账号密钥文件,要确认密钥对应的账号有足够权限,且密钥已正确挂载到Pod中。
重新创建集群补充权限范围
由于已创建的GKE集群无法直接修改Scope,需重新创建集群并添加必要配置:gcloud container clusters create questy-java-cluster \ --num-nodes 2 \ --machine-type n1-standard-1 \ --zone us-central1-c \ --scopes=https://www.googleapis.com/auth/sqlservice.admin,default测试环境可简化使用
--scopes cloud-platform获取全权限(生产环境建议遵循最小权限原则)。
内容的提问来源于stack exchange,提问作者fascynacja
相关产品推荐
相关产品推荐

