EC2 Instance Connect 엔드포인트를 사용하면 인스턴스에 퍼블릭 IP 주소가 할당되어 있지 않아도 SSH 연결을 통해 접속이 가능하다.
보통 "퍼블릭 IP" 가 할당되어 있지 않은 Private 서브넷에 존재하는 인스턴스에 대해 VPN 구성 또는 Bastion 인스턴스를 통해 접속하는 방식으로 SSH 연결을 진행하여 인스턴스에 접속한다. 이렇듯 Private 서브넷에 존재하는 인스턴스에 접속하기 위해서는 이에 대한 연결 구성을(*Bastion 호스트등) 별도로 구성 해야하기 때문에 추가적인 비용이 발생한다는 단점이 존재한다.
지난 2023년 AWS에서 EC2 Instance Connect 엔드포인트 서비스를 제공하면서 더 이상 Pirvate 서브넷에 존재하는 인스턴스에 접속하기 위하여 Bastion 호스트 등을 사용하지 않아도 된다.
따라서 오늘은 "EC2 Instance Connect 엔드포인트"를 구성하고 사용하는 방법에 대하여 정리해보려고 한다.
EC2 Instance Connect 작동 방식 및 필수 조건
AWS 공식 홈페이지를 통해 "EC2 Instance Connect"의 작동 방식이 아래와 같음을 확인 해볼 수 있다.
먼저 Virtual Private Cloud(VPC)의 서브넷에 EC2 Instance Connect 엔드포인트를 생성합니다. 그런 다음 인스턴스에 연결하려 할 때 인스턴스의 ID를 지정합니다. EC2 Instance Connect 엔드포인트를 제공할 수 있습니다. 엔드포인트는 인스턴스의 프라이빗 터널 역할을 합니다.
서브넷에서 EC2 Instance Connect 엔드포인트를 생성한 후에는 VPC가 서브넷의 통신을 허용하도록 구성된 경우 엔드포인트를 사용하여 VPC의 모든 서브넷에 있는 모든 인스턴스에 연결할 수 있습니다.
결론적으로 접속하려는 인스턴스가 존재하는 VPC에 "EC2 Instance Connect 엔드포인트"를 생성해주는 간단한 절차를 진행한 후, 생성한 엔드포인트를 통해 Private 서브넷에 위치한 인스턴스에 접속이 가능하게 된다.
다만 "EC2 Instance Connect 엔드포인트"를 사용하기 위해서는 아래와 같은 필수 조건 이 성립되어 있어야 한다.
필수 조건
1. AWS 리전 - 캐나다 서부(캘거리)를 제외한 모든 AWS 리전에서 지원됩니다.
2. AMI - EC2 Instance Connect가 설치되어 있는 AMI 또는 설치되어 있지 않다면 설치를 진행
- 인스턴스에 접속하여 아래의 명령어를 통해 EC2 Instance Connect가 설치되어 있음을 확인할 수 있습니다.
- $ sudo less /etc/ssh/sshd_config
AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
AuthorizedKeysCommandUser ec2-instance-connect
3. IPv4 - IPv4 주소(프라이빗 또는 퍼블릿)이 존재하는 인스턴스
4. 보안 그룹 - EC2 Instance Connect 엔드포인트 및 연결하려는 EC2 인스턴스에 아래와 같이 보안그룹 설정이 필요하다
- EIC Endpoint의 보안그룹
- 인바운드 규칙: All 트래픽 또는 22 & 3306 포트에 대한 트래픽 허용
- 아웃바운드 규칙: 접속 대상 인스턴스로 향하는 트래픽 ( * 인스턴스가 존재하는 서브넷 CIDR 등)
- 대상 EC2 인스턴스의 보안그룹
- 인바운드 규칙 : EIC Endpoint의 보안그룹에서의 트래픽
- 아웃바운드 규칙 : All 트래픽 (* 별도로 필요한 포트에 대한 규칙은 존재하지 않음)
5. 권한 부여 - EC2 Instance Connect 엔드포인트를 사용하기 위해서는 아래에 대한 권한이 필요하다.
- 사용자(User)의 EC2 Instance Connect 엔드포인트 생성, 설명 및 삭제 허용 권한(* 필수 )
- 사용자(User) EC2 Instance Connect 엔드포인트를 사용한 인스턴스 연결 허용 (* 필수x )
EC2 Instance Connect 생성 및 사용
1. AWS 관리 콘솔 에서 VPC 콘솔로 이동
2. 엔드포인트 탭으로 이동
3. 엔드포인트 생성 클릭
4. 엔드포인트 생성 ( 서비스 선택 및 VPC 선택 )
- 추가 설정을 확장하고 클라이언트 IP 보존에서 다음 중 하나를 수행합니다.
- 인스턴스에 연결할 때 클라이언트의 IP 주소를 소스로 사용하려면 확인란을 선택합니다.
- 참고: 클라이언트 IP 보존이 켜져 있는 경우 인스턴스의 보안 그룹은 클라이언트 IP 주소의 트래픽을 허용해야 합니다. 자세한 내용은 인스턴스 보안 그룹 규칙 단원을 참조하십시오.
- 인스턴스에 연결할 때 탄력적 네트워크 인터페이스 IP 주소를 소스로 사용하려면 확인란 선택을 취소합니다. 클라이언트 IP 보존이 꺼진 경우 VPC에서 라우팅할 수 있는 모든 IP 주소에 연결할 수 있습니다.
5. 엔드포인트 생성 ( 보안그룹 및 인스턴스가 존재하는 서브넷 선택 )
6. EC2 콘솔로 이동하여 Private 인스턴스 클릭 후 연결 클릭
7. EC2 Instance Connect 엔드포인트를 사용하여 연결
8. 연결 성공
EC2 Instance Connect 엔드포인트를 직접 구성해보며 확인한 결과 이제 Prviate 서브넷에 존재하는 인스턴스 및 DB에 접근할 때 Bastion 호스트 등을 별도로 구성해야하는 작업을 생략 할 수 있음을 확인하였따. 이러한 장점은 운영 관점에서 매우 큰 이점임이 확실하다. 다만 이러한 기능을 사용하기 위해서는 EC2 Instance Connect의 필수 설치 및 사용자의 권한 설정 (IAM) 작업이 필요하다는 것을 확인하면 좋을 듯 하다.
댓글