본문 바로가기
[AWS-SM]/EKS 구축

[참고] EKS API Endpoint 외부 접근

by SAMSUNG Metaverse-Cloud 2023. 3. 7.
728x90

 

 

개요

특정 고객사에서 이런 문의가 들어왔다. "우리 EKS SG가 보안적으로 잘 설정되어 있는건가요? 외부에서 kubectl로 접근이 제한된 상태인가요?" 나도 이부분이 항상 궁금했다. 분명 cluster SG에는 외부 IP가 허용되어있지 않은데 어떻게 내 PC에서 kubectl명령어가 먹는거지? 함께 확인 해 보자.

 

일단, EKS 네트워킹 설정을 보자. API 서버 엔드포인트 엑세스 퍼블릭 및 프라이빗으로 설정되어있다.

음... 뭐 퍼블릭 및 프라이빗이니까 외부 통신이 가능한건 알겠는데... SG에서 외부 IP에 대한 허용 규칙을 만들어야 접근이 가능해야 하는거 아닌가? 나만 이런 생각이 들은건가? 테스트 해보자.

Resolve 테스트

일단 같은 VPC 안에 있는 서버에서 API 서버 엔드포인트가 내부 IP를 반환하는 지 외부 IP를 반환하는 지 확인 해본다. 사설 IP를 반환한다.

그럼 외부에서 접근할 때는 어떨까? 이번엔 내 MAC PC에서 테스트 해보자. 오 이번엔 공인 IP를 반환하는 것을 확인할 수 있다.

+) 추가로 VPC 외부에서는 모두 Public IP로 resolve된다. VPN이 연결되어 있는 Onprem에서도 결국에는 VPC 외부이기 때문에 Public IP로 resolve되니 주의하자.

그렇다면 API 서버 엔드포인트 액세스가 퍼블릭 및 프라이빗 → 프라이빗 으로 바뀐다면 어떻게 될까?

바꿔보자 (항상 운영중인 환경에서는 어떠한 이슈가 발생할지 모르기 때문에 테스트 환경에서 진행하는 것이 좋다. 물론, API 서버 엔드포인트 액세스 설정 변경한다고 해도 클러스터 안의 POD가 죽거나 하지는 않는다. 그래도 서비스마다 구성이 다르니까 조심하자..)

프라이빗으로 바뀌었는데, 이제 외부에서 접근이 가능할까? 내 MAC PC에서 nslookup 결과가 사설 IP 반환하는 것을 확인할 수 있다. 즉, 내 PC가 VPN으로 연결되어 있지 않다면 접근이 불가능하다는 뜻이다.

SG 설정 테스트

위의 테스트결과로 API 서버 엔드포인트 엑세스에 따라 외부에서 사설 IP로 resolve 되느냐, 공인 IP로 resolve 되느냐를 나눌 수 있다.

Q) 그렇다면 API 서버 엔드포인트 엑세스 퍼블릭 및 프라이빗 으로 설정되어 있고 외부에서 접근할 때 SG로 특정 IP만 허용 가능하게 Whitelist를 설정 할 수 있을까?

→ 이건 아래 사진의 공인 IP가 무엇인지 부터 확인해 봐야한다.

아래 구조가 이해가 될 사진일지는 모르겠지만, 여기서의 공인 IP는 아래 사진의 NLB의 공인IP이다.

외부에서 kubectl 명령어를 실행할 때 NLB를 통해 EKS Control Plane을 거쳐 EKS 클러스터에 접근한다.

https://blog.nuricloud.com/aws-amazon-eks-intro-usages/

그렇다면, 저 NLB의 SG를 바꾸면 되지 않겠냐? 라는 생각이 들 수 있지만 저 NLB는 사용자가 관리 할 수 없는 AWS에서 관리하는 NLB이다. 따라서 외부에서 접근하는 사용자의 접근 권한을 SG로 제어할 수가 없다는 것이다.

 

그렇다면, SG 이외의 다른 방법으로라도 외부 IP를 제한하는 방법은 없을까? 아래의 공식 문서를 보자.

 

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/cluster-endpoint.html

가운데를 보면 "선택적으로 퍼블릭 엔드포인트에 액세스할 수 있는 CIDR 블록을 제한할 수 있습니다." 라고 나와있다. 저 방법은 아래에서 제한할 수있다.

 

현재는 모든 트래픽에 개방되어있지만, 저 부분을 특정 대역대로 제한해서 외부 IP도 제한할 수 있다. 단, SG와 같이 세부적으로 제한은 불가능하다.

결론

고객사의 "우리 EKS SG가 보안적으로 잘 설정되어 있는건가요? 외부에서 kubectl로 접근이 제한된 상태인가요?" 에 대한 물음은 "아니요" 이다. VPC 내부의 IP는 SG로 제한이 잘 되어있지만, API 서버 엔드포인트 엑세스가 퍼블릭 및 프라이빗인 경우 SG로 외부 IP에 대한 제한이 불가능하다.

 

 

 

 

출처 : https://halfmoon95.tistory.com/m/entry/EKS-API-Endpoint-%EC%99%B8%EB%B6%80-%EC%A0%91%EA%B7%BC

728x90