EKS Pod通过工作负载身份联邦访问GCP Vertex AI认证失败求助
排查EKS Pod通过AWS工作负载身份联邦访问GCP Vertex AI的401/403错误
身份池与AWS提供商配置验证
- 确认身份池的AWS提供商配置中,AWS账户ID和EKS集群所在账户完全一致,无拼写错误。
- 检查身份池状态为「活跃」,且已启用工作负载身份联邦功能。
- 验证AWS提供商的受众(audience)设置为默认的
sts.amazonaws.com,不要随意修改该值。
身份映射规则检查(核心环节)
不管采用「服务账号模拟」还是「直接联邦授权」,映射规则的正确性直接决定认证结果:
- 服务账号模拟方式:
- 映射规则的条件需精准匹配EKS Pod的AWS IAM角色ARN,示例规则:
attribute.aws_role == 'arn:aws:iam::AWS_ACCOUNT_ID:role/EKS_POD_ASSUMED_ROLE' - 确保联邦身份被授予
roles/iam.serviceAccountTokenCreator角色,无此权限无法完成服务账号模拟。
- 映射规则的条件需精准匹配EKS Pod的AWS IAM角色ARN,示例规则:
- 直接联邦授权方式:
- 映射规则需将联邦身份关联到包含Vertex AI访问权限的IAM权限集,比如
roles/aiplatform.user或aiplatform.predictions.create等细粒度权限。 - 检查规则优先级,避免低优先级规则覆盖正确的权限配置。
- 映射规则需将联邦身份关联到包含Vertex AI访问权限的IAM权限集,比如
EKS Pod内AWS身份有效性验证
Pod能否获取到正确的AWS身份是认证的前提:
- 在Pod内执行
aws sts get-caller-identity,确认返回的角色ARN与身份池映射规则中指定的ARN完全一致(包括大小写、账户ID、角色名)。 - 检查EKS IRSA配置:Pod绑定的ServiceAccount是否通过
eks.amazonaws.com/role-arn注解关联了正确的AWS IAM角色。 - 确认EKS集群的OIDC提供商已在AWS IAM中注册,且目标AWS IAM角色的信任策略允许该OIDC提供商对应的ServiceAccount进行角色假设。
GCP权限配置确认
- 服务账号模拟方式:
- 目标GCP服务账号需拥有Vertex AI必要权限,比如
roles/aiplatform.user。 - 确保联邦身份在GCP IAM中被授予「模拟该服务账号」的权限(即绑定
roles/iam.serviceAccountTokenCreator到联邦身份)。
- 目标GCP服务账号需拥有Vertex AI必要权限,比如
- 直接联邦授权方式:
- 确认身份池的成员(映射后的联邦身份)已被授予Vertex AI相关权限,比如直接为身份池成员绑定
roles/aiplatform.user。
- 确认身份池的成员(映射后的联邦身份)已被授予Vertex AI相关权限,比如直接为身份池成员绑定
- 注意:GCP IAM权限变更存在1-5分钟的生效延迟,配置完成后需等待片刻再测试。
SDK与环境配置细节检查
- 升级
google-cloud-aiplatformSDK到最新版本(>=1.39.0),旧版本可能对工作负载身份联邦支持不完善。 - 确认
GOOGLE_APPLICATION_CREDENTIALS环境变量指向的配置文件正确,文件type字段为external_account,且audience、subject_token_type、service_account_impersonation_url(模拟方式)等参数与身份池配置一致。 - 在Pod内执行
gcloud auth application-default print-access-token,测试能否获取有效访问令牌。若失败,错误信息会直接提示问题原因(如角色不匹配、权限不足)。 - 验证Python脚本中指定的GCP项目ID和Vertex AI区域正确,比如
aiplatform.init(project="your-gcp-project", location="us-central1"),区域错误也会触发403。
调试补充
若以上排查仍未解决问题,可在Pod内开启调试日志:
- 设置环境变量:
export GOOGLE_API_USE_CLIENT_CERTIFICATE=false、export GRPC_VERBOSITY=debug - 重新运行脚本,查看详细的认证流程日志,定位具体的失败环节。
内容的提问来源于stack exchange,提问作者Gilad Tayeb
相关产品推荐
相关产品推荐

