더 나아진 인스턴스 접근, EC2 Instance Connect Endpoint
이전 글에서 Bastion host를 사용하지 않고 내부 Private 서브넷의 인스턴스에 접근하는 수단인 Session Manager에 대해 알아보았다.
Session Manager도 IAM을 이용해 키 페어를 관리할 필요 없이 간편하게 인스턴스 접근할 수 있도록 서비스가 제공되나, 아웃바운드 인터넷 라우팅이 없는 폐쇄망에 접근하는 경우에 엔드포인트 세팅 작업이 필요해 조금은 불편했던 점이 있었다.
추가로, Private 인스턴스로의 연결을 위해 생성하는 3개의 엔드포인트들은 각각 시간당 요금이 부과된다는 점도 마냥 간과할 수는 없는 포인트이다.
비교적 최근 AWS에서는 이러한 폐쇄된 서브넷의 인스턴스에 연결할 수 있는 EC2 Instance Connect Endpoint(이하 EIC 엔드포인트)라는 서비스를 새롭게 게시했다.
EC2 Instance Connect Endpoint
EC2 인스턴스에 연결하기 위한 엔드포인트로 Secure하고 Encrypted된 연결을 제공한다. 앞선 Session Manager와 마찬가지로 EC2 웹 콘솔이나 AWS CLI를 통해서 Endpoint에 접근해 인스턴스로 접근할 수 있다.
EIC 엔드포인트는 Session Manager와는 다르게 SSH와 RDP를 이용해 통신한다. 눈여겨 볼 점은 SSH를 사용한 통신임에도 불구하고 별도의 키 페어를 생성하고 관리할 필요가 없다는 점이다.
EIC 엔드포인트의 내부적인 동작으로 임시 키페어를 발급하고, public키를
또 Session Manager에서 생성한 엔드포인트와는 다르게, 이 EIC 엔드포인트는 과금 측정이 되지 않는 항목이다.
EIC 엔드포인트를 사용함에 따라 얻을 수 있는 이점으로는 아래와 같다.
- 모든 인스턴스에 접근 : 완전히 폐쇄된 망의 인스턴스에도 EIC 엔드포인트를 통해 접근할 수 있다.
- 간단한 구성 : VPC에 EIC 엔드포인트 하나만 구축하고, 인스턴스에 적절한 Role만 설정해주는 간단함이 있다.
- 접근 모니터링 : 연결이 성립되건 안되건, 모든 연결은 Cloudtrail에 로깅된다.
EIC Endpoint 구성
아래는 공식 Docs에서 제공하는 EIC 엔드포인트를 이용해 Private 서브넷에 위치한 인스턴스들에 접근하는 아키텍쳐이다.
먼저 엔드포인트에 설정할 보안그룹을 생성한다.
Session Manager에서 생성했던 인스턴스의 보안그룹과 마찬가지로 인바운드에는 아무 규칙도 설정하지 않아도 무방하다.
아웃바운드로는 Any-open하거나 VPC의 CIDR만 적용해주도록 한다. (물론 추천되는 것은 최소범위를 가진 것)
다음으로 엔드포인트를 생성한다. EC2 인스턴스 연결 엔드포인트가 별도 서비스 범주로 존재한다.
각 서브넷들 간에 통신이 가능하면 엔드포인트를 생성할 서브넷의 위치는 아무 곳이나 설정해도 무방하다고 한다.
다음으로 Private 서브넷에 인스턴스를 생성한다.
EIC 엔드포인트를 통한 인스턴스 접근에도 Session Manager와 마찬가지로 Agent(혹은 패키지)가 필요하다. AWS에서 제공하는 대표적인 AMI에는 EIC 엔드포인트 접근을 위한 Agent가 미리 설치되어있다.
인스턴스의 보안그룹에는 인바운드 규칙과 아웃바운드 규칙에 EIC 엔드포인트에 설정했던 보안그룹을 원본/대상으로 지정한 규칙을 각각 생성해주었다.
EIC 엔드포인트로 인스턴스 접근하는 과정에서의 보안그룹 설정에 대한 Docs를 참고하면 좋다.
이렇게 EIC 엔드포인트를 사용할 환경이 모두 완성되면 연결을 해본다.
인스턴스 연결 > EC2 인스턴스 연결 엔드포인트를 사용하여 연결 에서 EIC 엔드포인트를 지정하고 연결할 수 있다.