Private Subnet에 EC2 만들어서 SessionManager로 편하게 접속하기

개발해규스·2025년 1월 26일

인프라

목록 보기
5/5
post-thumbnail

들어가며

서버에 허가되지 않은 사람이 접속하는 것은 보안상 위험합니다. Public Network에서 서버에 접근이 가능하다면, 접근 허가를 받은 사람의 서버 접근 편의성은 높아지겠지만, 동시에 접근이 허가 받지 않은 사람도 서버에 접근하기가 쉬워집니다.
Private Network에서만 접근이 가능하다면 보안성은 높아지겠지만, 서버 자기 자신 혹은 같은 Private Network에 있는 다른 Host외에는 접근이 불가능 하겠죠.
AWS에서는 이러한 불편함을 최소화하고, 안전한 서버접근을 위해 SessionManager 서비스를 제공하고있습니다.
이를 이용해 보안성을 높이면서 접근성도 비교적 편리하게 Private Network에 EC2 인스턴스를 실행시키도록 구성 해보겠습니다.

VPC, Subnet, Internet/NAT Gateway 만들기

AWS에 계정을 만들면 기본적으로 만들어진 VPC가 있는데요, 구성하는 것을 설명하기위해 저는 새로 2개의 Public/Private Subnet을 갖도록 만들어보겠습니다. 편의상 AWS 콘솔을 이용해 구성하며 아래 이미지 순서대로 참고하셔서 만드시면 됩니다.
(퍼블릭 서브넷은 없으시면 같이 만들어주세요!)

NAT Gateway를 만드는 이유는 Private Subnet에 있는 EC2에 SessionManager가 접근하는 목적과 Public Network의 접근을 하나로 통합하기 위해 만듭니다.(외부 인터넷과 접근을 따로 안하셔도되면 VPC Endpoint로 구성하셔도 됩니다)

다음은 각 서브넷의 라우팅 테이블에 NatGateway를 연동하겠습니다. EC2가 위치할 Private subnet에 모두 추가해주시고, Public subnet은 igw에 연결 합니다.(안하면 외부 인터넷과 통신이 안되니 주의!)

EC2 생성 및 Session Manager 적용하기

EC2를 생성합니다. 생성 이미지는 Amazon Linux 2023으로 진행하겠습니다. (생성할때 무제한 크레딧 여부를 표준으로 해주셔야 생성이 되네요 참고하세요!)
Amazon Linux에는 SessionManagerAgent가 기본으로 포함되어 있기 때문에 별도로 설치는 안해주셔도 됩니다.

배포 스크립트를 작성하기 전 Private Subnet에 있는 EC2에 접근하기 위해 SessionManager를 연동해보겠습니다.
먼저 IAM으로 이동후 역할(Role) 카테고리에서 역할 생성버튼을 눌러주세요.
여기서 우리는 EC2에서 SessionManager 접근을 담당하는 역할을 설정하겠습니다.

Session Manager 접근 담당 역할
AmazonS3ReadOnlyAccess
AmazonSSMManagedEC2InstanceDefaultPolicy

이제 이 역할을 EC2로 이동해 우리가 만든 인스턴스에 모두 할당합니다.

다음으론 우리가 SessionManager를 통해 EC2에 명령어를 전송할 수 있도록 보안그룹에 HTTPS 통신을 위한 443포트를 열도록 하겠습니다.

잠시 기다린 뒤 SessionManager를 통한 인스턴스 연결을 해보겠습니다. 연결은 인스턴스 클릭 -> 연결 -> SessionManager로 접근하시면 됩니다.

혹시 잘 안되신다면 AWS 공식문서를 확인해주세요.

profile
개발, 기타 좋아하는 뒷단 개발자

0개의 댓글