일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬
- 튜플
- async
- 채팅
- node
- Props
- docker
- 카톡
- wetube
- pandas
- AWS
- S3
- git
- NeXT
- lambda
- react
- socket io
- RDS
- dict
- flask
- Class
- 중급파이썬
- merge
- EC2
- SAA
- MongoDB
- Vue
- TypeScript
- crud
- SSA
- Today
- Total
초보 개발자
「AWS」EC2에 접속하는 4가지 방법 본문
시작하며
AWS EC2 Instance에 접속할 때 자주 사용되는 방법으로는 다음 세 가지가 있습니다:
1. SSH
2. Session Manager
3. EC2 Instance Connect
전제 사항
본 게시물에서는 각 접속 방법의 설정 방법에 대한 설명은 생략합니다.
SSH
SSH는 단순히 EC2 Instance에만 국한되지 않고, 서버 접속 시 일반적으로 널리 사용되는 안전한 접속 방법입니다.
SSH는 인증을 위한 키 페어(공개키, 개인키)를 준비할 필요가 있으며, 클라이언트에는 개인키를, 서버에는 공개키를 보관합니다.
개인키를 이용한 인증을 거친 뒤 생성된 대칭키를 이용해 데이터를 암호화하며, 안전하게 통신을 할 수 있게 됩니다.
SSH 명령어 예시
ssh -i /path/private-key.pem user-name@public_dns_name
구성도( 하나의 서버, 하나의 유저 )
구성도( 여러 서버, 여러 유저 )
SSH를 이용할 경우 다음과 같은 크고 작은 불편함이 발생할 수 있습니다
SSH 사용 시의 Pain Points
1. 키 페어 관리 필요성
한 명의 유저가 하나의 서버에 접속하는 경우라면 크게 문제가 되지 않지만, 유저나 리소스가 증가할 경우 관리해야 할 키의 양이 상당히 많아집니다.
1인 1계정 사용이 원칙이지만, 실무에서는 키를 공유하여 사용하는 문제가 발생할 수 있습니다.
2. 로깅 시스템 구축 및 관리
SSH 접속에 대한 기록을 남기려면 별도의 로깅 시스템을 구축해야 하며, 이를 유지관리하는 부담이 생깁니다.
3. 동적 IP 및 포트 개방 문제
퍼블릭 IP를 이용할 경우 보안 그룹 설정으로 일정 부분 보호할 수 있지만, 동적 IP 환경에서는 관리가 어렵습니다.
SSH 접속을 위해 포트 22를 개방해야 하는데, 이는 보안 취약점을 초래할 수 있습니다.
4. 폐쇄망 리소스 접근 불가 문제
폐쇄망에 위치한 리소스에 접근하려면 별도의 VPN 설정이나 Bastion Host를 구축해야 하며, 이는 추가적인 관리와 비용이 발생합니다.
다음에서 설명할 세션 매니저, EIC를 이용하면 위의 Pain Point를 해결할 수 있습니다.
Session Manager
Session Manager는 AWS Systems Manager의 기능 중 하나로, AWS 콘솔 또는 클라이언트의 CLI를 통해 EC2 인스턴스에 접속할 수 있게 해줍니다.
Session Manager를 사용하기 위한 조건은 다음과 같습니다:
- EC2 인스턴스에 AWS Systems Manager Agent(SSM Agent)가 설치되어 있어야 합니다.
- EC2 인스턴스 프로필에 AmazonSSMManagedInstanceCore 권한이 포함되어 있어야 합니다.
- Systems Manager와의 통신을 위한 아웃바운드 연결이 허용되어 있어야 합니다 (인바운드 설정은 필요하지 않음).
- 인스턴스 세션을 실행할 수 있는 권한이 IAM 사용자에게 부여되어 있어야 합니다.
구성도
Session Manager를 사용하면 인스턴스의 보안 그룹에서 인바운드 포트를 열 필요가 없습니다. 이는 EC2 인스턴스에서 설치된 SSM Agent가 지속적으로 Systems Manager로 데이터를 폴링(polling)하여 연결을 유지하기 때문입니다. 따라서 인바운드가 아닌 아웃바운드 연결만 열어두면 됩니다.
기본적으로 EC2와 Systems Manager 콘솔에서 단순 클릭 한 번으로 접속할 수 있으며, CLI를 통해 터미널에서도 접속할 수 있습니다. CLI를 이용할 때는 Systems Manager의 Document를 지정해야 합니다.
Document란, SSM Agent가 설치된 인스턴스가 Systems Manager를 통해 실행할 작업을 기술한 설정 파일입니다. 명시적으로 Document를 지정하지 않으면 기본적으로 SSM_SessionManagerRunShell이 사용됩니다. 다른 Document를 지정하여 SSH를 통한 접속이나 포트포워딩 등의 다양한 기능도 설정할 수 있습니다.
Session Manager가 SSH의 주요 Pain Point를 해결하는 방법
1. 키 페어 관리 필요성
Session Manager는 키 페어 대신 IAM을 통해 인증을 처리합니다. 사용자와 정책 관리를 통합할 수 있어 운영 효율성이 높아지며, IAM 관리 하에 MFA 인증을 강제할 수 있어 보안도 강화할 수 있습니다.
2. 로깅 시스템 구축 및 관리
CloudTrail에서 액세스 로그를 확인할 수 있으며, CloudWatch Logs를 통해 세션 로그도 추적할 수 있어 별도의 로깅 시스템 구축이 필요하지 않습니다.
3. 동적 IP 및 포트 개방 문제
인스턴스의 인바운드 포트를 열 필요가 없습니다. 단, EC2에서 Systems Manager Endpoint로의 아웃바운드가 허용되어 있어야 합니다.
4. 폐쇄망 리소스 접근 불가 문제
기본적으로는 퍼블릭 서브넷에 위치한 EC2를 대상으로 하지만, 몇 가지 설정을 통해 폐쇄망에 있는 EC2에도 접근이 가능합니다.
NAT Gateway
프라이빗 서브넷에 인스턴스를 두고, NAT Gateway를 통해 Systems Manager에 연결할 수 있습니다.
VPC Endpoint
VPC Endpoint와 PrivateLink를 사용하여 높은 보안 수준을 유지하면서 프라이빗한 연결을 구성할 수 있습니다. (PrivateLink는 VPC와 AWS 서비스 간의 비공개 연결을 제공하는 기능입니다.)
AWS는 Systems Manager를 위한 다음의 3가지 VPC Endpoint를 제공합니다:
1. ssm
2. ssmmessages
3. ec2messages
참고: 세션 매니저만 사용하는 경우, SSM Agent 버전에 따라 ec2messages Endpoint는 필수로 설정하지 않아도 됩니다. (자세한 정보는 AWS Systems Manager 설정 가이드에서 확인할 수 있습니다.)
이와 같이 Session Manager를 사용하면 폐쇄망에 있는 인스턴스에도 안전하게 접속할 수 있습니다.
VPC Endpoint를 사용하는 경우, 각 Endpoint 당 약 $10/월의 고정 비용이 발생합니다 (2024년 9월 기준, 데이터 전송 비용 제외).
이는 상황에 따라 Session Manager이용에 있어 Pain point가 될 수 있습니다.
자세한 비용 정보는 AWS PrivateLink 가격 안내에서 확인할 수 있습니다.
3. EC2 Instance Connect(EIC)
EC2 Instance Connect(EIC)를 사용하면, 폐쇄망에 위치한 인스턴스에도 안전하게 접근할 수 있으며, 서비스 자체는 무료로 이용할 수 있습니다.
EIC를 사용하기 위한 조건은 다음과 같습니다:
- EC2에 EC2 Instance Connect가 설치되어 있어야 합니다.
- EIC Endpoint와 접속할 EC2의 보안 그룹에 22번 포트에 대한 인, 아웃 바운드 연결이 허용되어야 합니다.
- EC2 Instance Connect를 사용할 IAM 유저에게 EC2InstanceConnect 권한이 부여되어 있어야 합니다.
구성도
기존에는 EIC가 퍼블릭 환경의 인스턴스에만 접속이 가능했지만, AAWS re:Inforce 2023을 기점으로 EIC Endpoint가 공개되면서 프라이빗 환경에 있는 인스턴스에도 접속할 수 있게 되었습니다.
EIC Endpoint는 TCP Proxy 역할을 하며, WebSocket 터널을 생성하여 폐쇄망 내의 인스턴스와 안전하게 연결할 수 있는 기능을 제공합니다. 사용자가 인스턴스에 접속하려고 하면, 임시 SSH 키 페어가 생성되어 60초 동안 인스턴스 메타데이터에 공개키가 등록됩니다. 이후, 생성된 임시 개인키로 접속이 이루어집니다. 이 임시 키 페어는 매번 생성 및 삭제되기 때문에 사용자가 별도로 관리할 필요가 없습니다.
EIC Endpoint 생성 시 "Preserve Client IP" 옵션을 활성화하면, 서버 측에서 사용자의 글로벌 IP 주소를 확인할 수 있습니다.
세션 매니저와 달리 EIC Endpoint는 무료로 사용할 수 있는 장점이 있지만, 데이터 전송 비용은 발생할 수 있습니다. 다만, 한 계정에서 총 5개의 EIC Endpoint만 생성할 수 있으며, VPC 당 하나의 EIC Endpoint만 생성할 수 있다는 제한이 있습니다.
세션 매니저와 달리 EIC Endpoint는 무료로 사용할 수 있는 장점이 있지만, 데이터 전송 비용은 발생할 수 있습니다. 다만, 한 계정에서 총 5개의 EIC Endpoint만 생성할 수 있으며, VPC당 하나의 EIC Endpoint만 생성할 수 있다는 제한이 있습니다.
또한, EIC는 CloudTrail을 통해 액세스 로그만 제공하므로 세션로그를 확인하기 어렵다는 점이 있습니다.
EIC가 SSH의 주요 Pain Point를 해결하는 방법
1. 키 페어 관리 필요성
EIC는 IAM 기반의 사용자 및 정책 관리를 통해 효율성을 높이며, IAM 관리 하에 MFA 인증을 강제할 수 있어 보안이 강화됩니다.
실제로는 SSH를 사용하지만, 접속 시마다 임시 SSH 키를 발행하여 일시적으로 할당하므로 별도의 SSH 키 페어 관리가 필요하지 않습니다.
2. 직접 로깅 시스템 구축 및 관리
CloudTrail을 통해 액세스 로그를 확인할 수 있지만, Session Manager와 달리 세션 로그를 기록하는 기능은 제공되지 않습니다.
3. 동적 IP 및 포트 개방
EIC Endpoint의 보안 그룹 인바운드 설정만으로 접속을 허용할 수 있어, 보안성을 유지하면서 관리할 수 있습니다.
4. 폐쇄망 리소스 접근 불가 문제
EIC Endpoint를 활용하여 프라이빗 환경에서도 안전한 연결이 가능합니다.
5. 비용 발생
EIC는 서비스 자체는 무료로 제공되며, 별도의 고정비는 발생하지 않지만 데이터 전송 비용은 발생할 수 있습니다.
SSH ・ Session Manager ・ EIC비교 표
항목 | SSH | Session Manager | EC2 Instance Connect (EIC) |
인증 방식 | SSH 키페어 (공개키/개인키) | IAM 기반 인증 (키페어 불필요) | IAM 기반 인증 (임시 SSH 키페어) |
접속 제어 | SSH 키 관리 필요 | IAM 정책으로 접근 제어 가능 | IAM 정책으로 접근 제어 가능 |
MFA 지원 | 기본적으로 불가 | 가능 | 가능 |
로깅 | 별도 구축 필요 | CloudTrail 및 CloudWatch Logs로 로깅 가능 | CloudTrail로 액세스 로깅 가능 (세션 로그는 불가) |
접속 가능한 네트워크 | 퍼블릭 서브넷 (패쇄망은 Bastion Host 필요) | 퍼블릭 및 프라이빗 서브넷 | 퍼블릭 및 프라이빗 서브넷 |
인바운드 포트 개방 | 22번 포트 개방 필요 | 인바운드 포트 개방 불필요 (아웃바운드만 필요) | EIC Endpoint의 인바운드만 개방 |
프라이빗 리소스 접근 | 직접 불가 (Bastion Host 필요) | 가능 (VPC Endpoint 또는 NAT Gateway 필요) | 가능 (EIC Endpoint 필요) |
비용 | 무료 | VPC Endpoint 이용 시 월 $20발생 | 무료 |
가용성 | - | 여러 AZ에 걸쳐 설정 가능, 높은 가용성 | 한 계정에 5개, VPC 당 1개의 EIC만 생성 가능, 생성한 AZ에 종속되어 가용성이 제한적임 |
끝내며
이번 글에서는 EC2에 접근할 수 있는 3가지 방법인 SSH, Session Manager, 그리고 EC2 Instance Connect를 살펴보았습니다.
기존의 SSH는 간편하지만, 키 관리와 보안 문제를 동반하는 반면,
Session Manager는 인바운드 포트를 열지 않고도 IAM 기반 인증과 중앙 집중식 로깅으로 보안을 강화하며 관리 편의성을 제공합니다.
EC2 Instance Connect는 임시 키 발급으로 보안을 유지하면서도 EIC Endpoint를 통해 폐쇄망 인스턴스에 접속할 수 있고, 비용 부담이 적습니다.
'AWS' 카테고리의 다른 글
[CDK] Unable to resolve AWS account to use. (0) | 2024.01.13 |
---|---|
AWS KMS 암복호화 과정 (0) | 2024.01.07 |
AWS Snapshot storage (0) | 2023.08.07 |
AWS RDS 관련 질문 (0) | 2023.06.22 |
AWS Compute optimizer를 활용하여 EC2타입 변경. (0) | 2023.06.21 |