개발일지
AWS SSM으로 Private RDS 접근하기 본문
개요
현재 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 자격 증명하기
- 운영체제에 맞는 AWS CLI을 설치 한다,
- 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 인스턴스 연결하기
- AWS CLI로 SSM을 사용하기 위해 Session Manager 플러그인 을 설치한다.
- 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-설치-사용법-쉽고-빠르게
'Infra, AWS, Linux' 카테고리의 다른 글
AWS Lightsail로 CI/CD 구축하기_2. Github Actions으로 배포 자동화 파이프라인 구축하기 (0) | 2024.06.16 |
---|---|
AWS Lightsail로 CI/CD 구축하기_1. Ligthtsail 생성 및 SSH 접속하기 (0) | 2024.06.05 |
AWS 서버 구축 및 HTTPS 적용기_2. HTTPS 적용 (ACM, ELB, Nginx) (0) | 2024.01.05 |
AWS 서버 구축 및 HTTPS 적용기_1. 도메인 연결 및 프로젝트 배포 (Route53, EC2) (0) | 2023.12.27 |
Presigned Url로 S3에 파일 업로드하기 (0) | 2023.07.16 |