본문 바로가기

Management

AWS Session Manager로 Private RDS, ElastiCache 접근

 

 

AWS SSM으로 EC2 인스턴스에 접근하기 (SSH 대체)

목차 서론 들어가기: 더 좋은 방법 대상 독자 SSM: AWS Systems Manager 원격 호스트 접속 방법 비교: SSH (기존) vs. SSM (개선) S...

musma.github.io

 

 

기존에는 AWS Private VPC 내의 EC2 접근을 위해서 Bastion Host(Jumping Host)를 사용했다.

 

그러나 AWS SSM(Systmes Manager)의 세션매니저가 발표되고, 더이상 Bastion Host는 사용하지 않는 것을 권장한다.  

 

AWS SSM(AWS Systems Manager) 세션매니저를 사용하면 계정과 인증키 관리가 필요 없어지고, 보안에 대한 안전성 또한 높일 수 있다.

 

다만 문제는 SSM을 이용할 경우 VPC Private 내의 AWS PaaS로 접근이 불가능하다.

 

예를 들어 AWS의 VPC Private 내의 RDS, Memcache 구간은 로컬에서 접근할 수가 없다.

 

이럴 경우 AWS SSM의 포트포워딩 기능과 리눅스 socat 패키지를 이용하면 로컬에서도 AWS Private 내의 PaaS에 접근이 가능하다.

 

로컬에서 테스트 목적으로 유용하다.

SSM with socat

1) Private 서브넷에 있는 Bastion EC2에 socat을 설치한다. 

apt-get instlal socat

yum install -y socat

 

2) Local Client에서 ssm cli를 이용하여 bastion EC2와 세션을 연결한다.

aws ssm start-session --target i-0xxxxx

 

3) EC2에서 socat 명령어를 이용하여 소켓을 연결한다.

socat TCP-LISTEN:6379,reuseaddr,fork TCP4:xxxx.cache.amazonaws.com:6379

 

4) Local Client에서 aws ssm의 AWS-StartPortForwardingSession 옵션 명령을 통해 로컬 포트와 타겟 포트를 포워딩한다. (서비스 포트: 6379)

 

aws ssm start-session --target i-0xxx --document AWS-StartPortForwardingSession --parameters '{"portNumber":["6379"], "localPortNumber":["6379"]}'

 

그럼 Local 에서도 SSM을 이용하더라도 구성 변경 없이, AWS Private 서브넷 내의 PaaS에 접근이 가능하다.