AWS

AWS EC2 Instance Connect Endpoint 사용해보기

moonganzi 2023. 6. 28. 17:04

프라이빗 IP 만 보유한 EC2에 접근하기 위해선 기존엔 퍼블릭 IP를 보유한 Bastion Host을 통한 터널링 접속, AWS Session Manager 사용 등의 방법을 사용 했습니다.

 

허나 위 2가지 방법은 Bastion Host의 경우 유지 비용 및 운영 오버헤드가 요구되며, Session Manager는 프라이빗 EC2 내 에이전트 설치 및 SSM 권한 부여, 웹 브라우저를 통한 접속만 제공하는 등의 단점이 있습니다.

 

6월 13일 AWS에서는 새로운 기능인 AWS EC2 Instance Connect (EIC) Endpoint 를 출시했습니다. EIC 엔드포인트를 사용하면 프라이빗 리소스에 연결하기 위해 더 이상 VPC의 IGW, 리소스의 퍼블릭 IP 주소, Bastion Host 또는 에이전트가 필요하지 않습니다.

https://aws.amazon.com/ko/about-aws/whats-new/2023/06/amazon-ec2-instance-connect-ssh-rdp-public-ip-address/

 

Amazon EC2 Instance Connect supports SSH and RDP connectivity without public IP address

With EC2 Instance Connect Endpoint (EIC Endpoint), customers now have SSH and RDP connectivity to their EC2 instances without using public IP addresses. In the past, customers assigned public IPs to their EC2 instances for remote connectivity. With EIC End

aws.amazon.com

 

EIC 엔드포인트는 2가지 방법으로 사용됩니다. 첫째, AWS CLI를 사용하여 로컬 PC에서 엔드포인트까지 Websocket 터널을 생성하는데 사용됩니다. 터널을 설정한 후에는 선호하는 SSH 클라이언트를 사용해 루프백 주소(127.0.0.1 또는 localhost) 로 지정하고 평소와 같이 연결합니다. 둘째, AWS 콘솔을 통해 VPC 내부의 리소스에 액세스 합니다.

 

EIC 엔드포인트에 대한 자세한 내용은 아래 문서 참고바라며, 이번 게시물 에선 EIC 엔드포인트 생성 및 EIC 엔드포인트를 통한 Linux, Window 접속 실습을 진행 해보겠습니다.

 

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect-Endpoint.html

 

Connect to your instances without requiring a public IPv4 address using EC2 Instance Connect Endpoint - Amazon Elastic Compute C

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

 

실습 순서와 아키텍처는 다음과 같습니다. (VPC, 서브넷, 인스턴스 생성 과정은 생략)

  1. EIC 엔드포인트 생성

  2. AWS 콘솔을 통한 접속 (Linux)

  3. AWS CLI를 통한 접속 (Linux, Window)

 


1. EIC 엔드포인트 생성

  1) AWS VPC 콘솔 접속 후 엔드포인트 생성 클릭

  2) 아래 정보대로 엔드포인트 생성

    - 이름 태그 : 원하는 값으로 지정

    - 서비스 범주 : EC2 Instance Connect Endpoint

    - VPC : 접속하고자 하는 인스턴스와 동일한 VPC

    - 보안 그룹 : 아웃바운드 22, 3389, 3306 오픈 돼있는 보안 그룹

    - 서브넷 : 엔드포인트가 위치할 서브넷

 

2. AWS 콘솔을 통한 접속 (Linux)

  1) EC2 콘솔 접속 후 Linux 인스턴스 선택 후 연결 클릭

  2) EC2 인스턴스 연결 엔드포인트를 사용하여 연결 선택 후 1에서 생성한 엔드포인트 선택 및 연결

  3) 정상 접속 확인

 

3. AWS CLI를 통한 접속 (Linux, Window, RDS) : MobaXterm 사용

 3.1 AWS CLI를 통한 Linux 접속

  1) AWS CLI 설치 및 자격 증명 설정 진행  (2.12 버전 이상 필요)

  - CLI 권한 참조 : https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/permissions-for-ec2-instance-connect-endpoint.html

 

Grant IAM permissions to use EC2 Instance Connect Endpoint - Amazon Elastic Compute Cloud

Grant IAM permissions to use EC2 Instance Connect Endpoint To create or use an EC2 Instance Connect Endpoint, you must create an IAM policy that grants your users permissions for the following: Create, describe, and delete EC2 Instance Connect Endpoints Us

docs.aws.amazon.com

 2) open-tunnel 명령을 사용하여 프라이빗 터널 생성 및 인스턴스 접속

예시 명령어

 3.2 AWS CLI를 통한 Window 접속

  1) open-tunnel 명령을 실행하여 새 TCP 연결 및 프라이빗 터널 생성

예시 명령어

  2) AWS EC2 콘솔의 접속하고자 하는 Window 인스턴스 선택 후 연결 클릭

  3) 인스턴스 생성 시 사용한 키파일을 통한 암호 가져오기 진행

  4) 원격 데스크톱 연결 실행 후 2)에서 설정한 로컬 포트 번호로 접속 진행


이상 실습을 통해 EIC를 사용해봤습니다. EIC를 사용해보면서 확인한 장점은 아래와 같았습니다.

  • Bastion Host 필요 없음
  • IAM 을 통해 제어되는 연결
  • 인터넷 연결이 필요없는 VPC
  • 인스턴스에서 에이전트(예: SSM 에이전트)를 실행할 필요 없음
  • Putty 또는 MobaXterm 과 같은 워크스테이션에서 클라이언트 소프트웨어를 사용할 수 있음
  • RDP를 사용하여 Windows 인스턴스에 연결
  • EIC 엔드포인트와 관련된 API 호출은 AWS CloudTrail에 기록되어 엔드포인트 활동에 대한 중앙 집중식 보기를 제공하고 보안 감사에 용이함

단, EIC 수신자의 포트 번호가 TCP 22,3389 이외는 허용하지 않아 아래와 같은 에러가 나오며 WebSocket 접속이 단절됩니다.

awscli.customizations.ec2instanceconnect.websocket - ERROR - {"ErrorCode":"InvalidParameter","Message":"The specified RemotePort is not valid. Specify either 22 or 3389 as the RemotePort and retry your request."}

 따라서 RDS 접속과 같은 다른 포트를 사용하는 프라이빗 서비스와는 사용할 수 없어 Bastion Host를 완벽히 대체하긴 어려워 보입니다.

 

 


- 참고 문서

https://aws.amazon.com/ko/blogs/compute/secure-connectivity-from-public-to-private-introducing-ec2-instance-connect-endpoint-june-13-2023/

 

Secure Connectivity from Public to Private: Introducing EC2 Instance Connect Endpoint | Amazon Web Services

This blog post is written by Ariana Rahgozar, Solutions Architect, and Kenneth Kitts, Sr. Technical Account Manager, AWS. Imagine trying to connect to an Amazon Elastic Compute Cloud (Amazon EC2) instance within your Amazon Virtual Private Cloud (Amazon VP

aws.amazon.com

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect-Endpoint.html

 

Connect to your instances without requiring a public IPv4 address using EC2 Instance Connect Endpoint - Amazon Elastic Compute C

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com