EKS에 올린 Spring Boot 애플리케이션에 IAM Role 연결하기
최근 EKS에 Spring Boot 애플리케이션을 올렸는데, ServiceAccount에 IAM Role을 연결했음에도 AWS API를 호출하지 못하는 문제가 있었습니다. 이 문제를 해결하기 위해 테스트 한 과정을 남겨보려고 합니다.
우선, AWS의 Java 버전 SDK는 부여된 권한을 어떻게 찾는지 알아보겠습니다. 따로 설정을 하지 않았다면, 아래와 같은 순서로 찾습니다.
- Java의 시스템 properties
- 환경 변수
- AWS의 STS(Security Token Service)로 부터 얻은 Web Identity Token
- 공유된
credentials
,config
파일: 별도의 설정이 없으면default
프로필을 이용 - ECS 컨테이너 credentials
- EC2 인스턴스에 부여된 IAM Role
그리고 EKS의 IAM Roles for Service Accounts(이후 IRSA로 표기) 기능은 STS(Security Token Service)의 AssumeRoleWithWebIdentity
API 호출을 통해 권한을 얻습니다. (참고) 그렇기 때문에 STS을 사용할 수 있어야 합니다.