개발일지

AWS SSM으로 Private RDS 접근하기 본문

Infra, AWS, Linux

AWS SSM으로 Private RDS 접근하기

lyjin 2024. 2. 2.

개요

현재 Private 서브넷에서 개발계 RDS를 사용하고 있다. 보안을 위한 일이지만 로컬 환경에서도 접근할 수 없다는 문제가 생긴다. 개발할 때 RDS를 직접 확인해야할 일이 빈번할텐데 어떻게 하면 로컬에서 바로 접근할 수 있을까?


기존에는 SSH와 Bastion Host를 사용했었다. SSH를 사용하면 보안 그룹과 Pem 키를 따로 관리해줘야하는 번거로움이 발생한다. 따라서 이번 시간에는 AWS SSM을 이용하여 보다 간편하게 Private RDS에 접근해보고자 한다.

 


SSM (AWS Systems Manager)

SSM은 AWS에서 호스트 및 리소스 관리, 자동화, 보안 및 모니터링을 제공하는 서비스이다. SSM의 이점은 다음과 같다.


  • IAM을 사용한 중앙 집중식 액세스 제어가 가능하다.
  • Bastion Host 또는 SSH 키, 보안 그룹 설정을 필요로 하지않는다.
  • 콘솔 및 CLI를 통해 손쉽게 접근 가능하다.

이외에도 목적에 따라 AWS 리소스를 효율적으로 운영 및 관리할 수 있는 다양한 기능을 제공한다.

 


실습

SSM은 별도의 SSH 키를 필요로 하지않는다고 했다. 그렇다면 어떻게 접근 권한을 부여할 수 있는걸까? 바로 AWS CLI의 자격 증명(Credentials)을 이용하는 것이다.

 


IAM 정책 설정하기

먼저 IAM 사용자에게 SSM을 사용하기 위한 정책을 등록해야한다. AmazonSSMManagedInstanceCore를 추가해준다. 후에 권한 에러가 날 수 있는데 필요한 정책을 추가 등록해주면 된다.



 

AWS CLI 자격 증명하기

  1. 운영체제에 맞는 AWS CLI을 설치 한다,
  2. aws configure 명령어로 IAM 사용자의 Access Key와 Secret Access Key를 설정한다.
$ aws configure

AWS Access Key ID [None]: <Access Key ID>
AWS Secret Access Key [None]: <Secret Access Key>
Default region name [None]: <리전>
Default output format [None]: ENTER

 

참고) 여러 자격증명정보 관리하기

 

자격증명정보를 여러 개 등록하고 원하는 자격증명을 선택하여 사용할 수도 있다. --profile 옵션을 적용하면 된다.

 

$ aws configure --profile <프로필 이름>

 


아래 명령어로 구성된 자격증명 목록을 확인할 수 있다.

 

$ aws configure list-profiles

 

SSM으로 EC2 인스턴스 연결하기

  1. AWS CLI로 SSM을 사용하기 위해 Session Manager 플러그인 을 설치한다.
  2. aws ssm start-session 명령어로 포트포워딩 해준다.
$ aws ssm start-session \
    --target <instance-id> \
    --document-name AWS-StartPortForwardingSessionToRemoteHost \
    --parameters host=<RDS host>, portNumber=<RDS Port>, localPortNumber=<로컬 Port>

 

다음과 같이 뜨면 성공이다.



 

이제 로컬 환경에서도 3307 포트를 사용해서 RDS에 접근할 수 있다.

 


참고한 글

https://musma.github.io/2019/11/29/about-aws-ssm.html
https://inpa.tistory.com/entry/AWS-📚-AWS-CLI-설치-사용법-쉽고-빠르게