Bastion서버가 필요 없다? EC2 Instance Connect Endpoint 추천 포인트(1)

MZC_Global
Cloud Villains
Published in
9 min readSep 15, 2023

--

AWS를 사용할 때 인터넷에서 격리된 환경의 EC2 인스턴스(서버)에 로그인하는 방법은 여러 가지가 있지만, 그 중에서도 EC2 Instance Connect Endpoint는 쉽고 비용을 절감할 수 있는 수단입니다.

본 게시글에서는 EC2 Instance Connect Endpoint를 사용하여 폐쇄 환경의 EC2 인스턴스에 연결하는 순서에 대해 소개하겠습니다.

목차

  1. 폐쇄 환경에 접속하는 방법
  2. EC2 Instance Connect Endpoint의 이점
  3. 본 게시글의 구성
  4. 주의점
  5. EC2 Instance Connect Endpoint 보안 그룹 만들기
  6. 대상 EC2 인스턴스의 보안 그룹 수정
  7. EC2 Instance Connect Endpoint 만들기
  8. EC2 인스턴스에 로그인 확인
  9. 마지막으로
  10. 참고 URL

폐쇄 환경에 접속하는 방법

먼저 AWS로 인터넷에서 프라이빗 서브넷(폐쇄 환경) EC2 인스턴스에 연결하는 방법 세 가지를 알아보겠습니다.

[1] Bastion

먼저 첫 번째 방법은 공개 네트워크인 퍼블릭 서브넷에 SSH 접속이 가능한 EC2 인스턴스를 준비하고, 그 EC2 인스턴스를 발판으로 프라이빗 서브넷에 포트 포워딩하는 방법입니다. 굉장히 오래된 방식으로 AWS 환경에 관계없이 사무실 네트워크 또는 온프레미스 환경 접속에 자주 사용됩니다.

외부 접속 제어는 입구가 되는 Bastion 서버가 중심이 되기 때문에 통신 제어에 대해 알기 쉽고, 필요할 때만 작동하게 하면 평상시에는 외부로부터의 접속을 할 수 없는 상태로도 만들 수 있어 비용 삭감도 가능합니다.

[2] AWS Systems Manager Session Manager

AWS 리소스 관리 서비스인 Systems Manager(SSM) 기능입니다. Bastion서버와 달리 IAM 정책 기반 액세스를 제어합니다. AWS Management Console 또는 AWS CLI에서 EC2 인스턴스에 로그인할 수 있으므로 EC2 인스턴스에 로그인하기 위해 통신 제어 설정을 하지 않아도 됩니다.
또한 EC2 인스턴스에 로그인하는 단말기에 SSH Key를 저장할 필요가 없다는 이점이 있습니다. (대신 IAM 자격 증명이 필요합니다)

사용에는 몇 가지 조건이 있으며, 로그인 할 EC2 인스턴스에 SSM Agent를 설치해야 합니다. 또한 폐쇄 환경에서 이용하는 경우에는 PrivateLink가 3개 필요한데, 비싸지는 않지만, Bastion 서버와 비교하면 비용이 증가 됩니다.

[3] EC2 Instance Connect Endpoint

AWS 문서 에서 인용

이번에 소개하고자 하는 AWS 기능입니다. 원래 EC2 Instance Connect라는 기능이 있었는데요, 로그인 대상의 EC2 인스턴스에 퍼블릭 IPv4 주소를 할당해야 하기 때문에, 이용 경우가 적지 않았을까 생각 됩니다.

현재는 엔드포인트를 이용하여 퍼블릭 IPv4 주소를 가지지 않는 폐쇄 환경의 EC2 인스턴스 로그인이 가능하게 되었습니다.

접속 방법은 2가지가 있습니다. 하나는 기존의 Instance Connect와 마찬가지로 AWS Management Console에서 연결하는 방법입니다. 다른 하나는 AWS CLI를 사용하여 대상 EC2 인스턴스에 개인 터널을 설정하는 것입니다.
그리고 엔드포인트에 연결하려면 IAM 권한이 필요하며 EC2 인스턴스에 연결하려면 보안 그룹을 설정해야 합니다.

EC2 Instance Connect Endpoint의 이점

고정비가 들지 않는 것이 가장 큰 장점입니다. 다음 내용에 따르면 EC2 Instance Connect Endpoint는 비용이 발생하지 않는다고 합니다.

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

EIC Endpoint는 모든 AWS 상용 리전 및 AWS GovCloud(미국) 리전에서 사용할 수 있습니다. EIC Endpoint 사용에는 추가 비용이 발생하지 않습니다. 일반 데이터 전송에 대해서는 소정의 요금이 적용됩니다.

일부 Linux로 제한되지만 Session Manager와 마찬가지로 AWS Management Console로 연결할 수 있기 때문에 SSH의 비공개 키를 연결된 단말에서 관리할 필요가 없다는 것도 큰 이점입니다. 또, AWS CLI로 프라이빗 터널을 만드는 경우는 접속원의 단말로 SSH 비밀키를 관리해야 하지만, Bastion서버의 SSH 포트 포워딩과 같은 이용 방법으로 대상 OS에 독립적으로 사용할 수 있습니다.

이 게시글의 구성

본 게시글은 상기의 구성으로 진행 합니다.
또한 다음과 같이 EC2 Instance Connect Endpoint 이외의 설정은 완료된 것으로 합니다.

주의

이미지와 항목 이름은 영어로 표시됩니다. 한국어 표시로 이용하시고자 하시는 분은 항목명을 한국어로 바꾸시길 바라겠습니다.

EC2 Instance Connect Endpoint 보안 그룹 만들기

  • AWS Management Console에서 EC2 페이지로 이동
  • 왼쪽 메뉴에서 Security Groups를 클릭
  • 오른쪽 상단의 Create security group을 클릭
  • 다음 항목을 입력하거나 선택
  • Create security group 클릭
  • 보안 그룹이 생성되었는지 확인

대상 EC2 인스턴스의 보안 그룹 수정

  • AWS Management Console에서 EC2 페이지로 이동
  • 왼쪽 메뉴에서 Security Groups 클릭
  • 목록에 있는 “example-prod-ssh-sg(연결 대상 EC2 인스턴스의 보안 그룹)” 선택
  • 상단 메뉴에서 Actions->Edit Inbound rules 클릭
  • example-prod-eice-sg (EC2 Instance Connect Endpoint 보안 그룹)에서 SSH 연결 권한 부여 규칙 추가
  • Save rules 클릭

EC2 Instance Connect Endpoint 만들기

  • AWS Management Console에서 VPC 페이지로 이동
  • 왼쪽 메뉴에서 Endpoints 클릭
  • 오른쪽 상단의 Create endpoint 클릭
  • 다음 항목을 입력하거나 선택
  • Create endpoint 클릭
  • EC2 Instance Connect Endpoint 생성이 시작되고 ‘Status’가 ‘Pending’인지 확인
  • 몇 분 후 ‘Status’가 ‘Available’이 되는지 확인

EC2 인스턴스에 로그인 확인

  • AWS Management Console에서 EC2 페이지로 이동
  • 왼쪽 메뉴에서 Instances 클릭
  • 목록에 있는 “example-prod-eic-amzlinux-1a-01(로그인 대상 EC2 인스턴스)” 선택
  • 상단 메뉴에서 Connect를 클릭
  • 다음 항목을 입력하거나 선택
  • Connect 클릭
  • 웹 브라우저에 콘솔 화면이 표시되고 로그인이 시작됨
로그인 후 콘솔 화면

마지막으로

EC2 Instance Connect Endpoint는 보안 그룹 설정 및 엔드포인트 생성만으로 완료되기 때문에 쉽게 배포할 수 있습니다. 다음 번에는 AWS CLI를 사용하여 프라이빗 터널을 통해 연결할 예정입니다. 폐쇄 환경의 EC2 인스턴스에 접속하는 방법의 하나로서 참고해 주시면 좋을 것 같습니다.

읽어 주셔서 감사합니다.

참고 URL

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/connect-with-ec2-instance-connect-endpoint.html

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/WindowsGuide/connect-using-eice.html

원문게시글 : https://zenn.dev/megazone_japan/articles/d82b505744d0b6

메가존 일본 법인 블로그에 업로드 중인 게시글로 작성자 카와나 료(川名(亮))님의 동의를 얻어 번역한 게시글 입니다.

번역 : 메가존클라우드 Cloud Techonolgy Center 박지은 매니저

--

--

MZC_Global
Cloud Villains

A blog post will be posted from the global branch of MegazoneCloud