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

EKS部署Spring Boot配置IRSA无法通过ServiceAccount正确扮演AWS角色

问题排查结果

当前配置的核心错误是AWS SDK依赖版本过低+缺失IRSA认证适配模块,附带存在权限配置隐患,最终导致SDK没有使用IRSA注入的角色凭证,回退读取了EKS工作节点绑定的默认角色,也就是日志里显示的集群生成默认角色。
具体原因拆解:

  • 你引入的com.amazonaws:aws-java-sdk-sts:1.12.9版本过旧,该版本的AWS Java SDK 1.x 没有内置EKS IRSA场景下的环境变量自动识别逻辑,无法自动读取Pod里已经注入的AWS_WEB_IDENTITY_TOKEN_FILE、AWS_ROLE_ARN两个环境变量完成Web身份令牌认证。同时你只引入了单独的STS SDK包,没有引入Spring Cloud AWS对应的STS自动配置组件,Spring框架不会帮你组装Web Identity对应的凭证提供方。
  • 你配置的securityContext.fsGroup=123456存在权限隐患:EKS IRSA webhook注入到Pod里的身份令牌文件默认属组ID为65534,如果你的应用以非root用户运行,且fsGroup和令牌文件属组不匹配,会直接出现令牌文件无读权限的问题,进一步导致IRSA认证流程初始化失败,直接回退到EC2实例元数据服务拉取节点角色的凭证。
修复方案

按以下步骤调整配置即可解决:

  • 升级并补全Maven依赖:将AWS Java SDK的STS组件升级到1.12.300以上版本(该版本后1.x SDK正式稳定支持IRSA环境变量自动识别),同时引入Spring Cloud AWS的STS自动配置starter,如果你已经配置了Spring Cloud AWS的官方依赖管理,不需要手动指定SDK版本:
<dependencies>
    <!-- 新增Spring Cloud AWS STS自动配置依赖 -->
    <dependency>
        <groupId>io.awspring.cloud</groupId>
        <artifactId>spring-cloud-starter-aws-sts</artifactId>
    </dependency>
    <!-- 替换原有低版本STS SDK,版本可随Spring Cloud AWS依赖管理自动对齐,无需硬编码 -->
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-sts</artifactId>
        <version>1.12.500</version>
    </dependency>
</dependencies>
  • 调整Deployment的安全上下文配置:将securityContext.fsGroup的值改为65534,和IRSA令牌文件的默认属组对齐,或者补充fsGroupChangePolicy: OnRootMismatch配置,确保应用运行用户有权限读取/var/run/secrets/eks.amazonaws.com/serviceaccount/token路径下的令牌文件。
  • 重新发布应用后校验:进入业务Pod执行cat $AWS_WEB_IDENTITY_TOKEN_FILE确认可以正常输出令牌内容,再观察应用启动日志,此时拉取Secrets Manager配置时使用的身份会变为你在ServiceAccount注解里配置的目标角色,不会再出现AccessDenied报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:57:35