AWS cloud

☁️ AWS 프리티어 인프라 구축기 – 외부 접속을 위한 RDS 보안그룹 실전

테크와재테크 2025. 7. 29. 20:00

❓ 처음에 이런 고민이 있었습니다

“RDS(PostgreSQL)를 만들었는데… DBeaver로 접속이 안돼요.”
AWS 프리티어로 인프라를 세팅하다 보면 대부분 겪는 문제죠.

  • 퍼블릭 액세스는 예로 했는데도?
  • 비밀번호, 포트도 다 맞는데 접속 실패?
  • 뭐가 문제지?

바로 저도 이 상황이었습니다.
그런데 알고 보니 보안그룹 설정과 VPC 서브넷 구조가 발목을 잡고 있더군요.


📌 이 글에서 다룰 내용은요

  • 보안그룹에서 어떤 포트를 어떻게 열어야 하는지
  • 퍼블릭 액세스가 왜 서브넷 구조에 따라 막히는지
  • RDS가 퍼블릭 접속되기 위한 구조 실전 구성 방법
  • 실수 없이 설정하는 체크리스트까지

🧭 제가 이걸 겪게 된 배경

저는 스타트업 CTO로서, AWS 프리티어를 최대한 활용해 MVP 인프라를 구성하고 있었어요.
비용을 아끼면서도 실무에 가까운 구조를 만들고 싶었죠.
그래서 EC2, RDS, S3, CloudFront를 조합해서 단순한 서버 구조를 만들었는데… PostgreSQL(RDS)만 접속이 안 되는 거예요.

그래서 문제 해결을 위해 아래와 같은 과정을 거쳤습니다.


이 구조를 이해해두면 좋습니다. RDS는 생성할때 subnet을 정하면 수정할 수 없습니다.

 

💥 본론 – 핵심 설정 3가지

✅ 1. 보안그룹에서 5432 포트를 열어라

curl ifconfig.me  # 내 공인 IP 확인

그리고 아래처럼 보안 그룹 인바운드 규칙을 설정합니다:

Type Protocol Port Source

PostgreSQL TCP 5432 203.0.113.25/32

절대 0.0.0.0/0 하지 마세요. 그건 테스트 외엔 금지입니다.


 

✅ 2. 퍼블릭 액세스 "예"여도 프라이빗 서브넷이면 무용지물

RDS 생성할 때 퍼블릭 액세스: 예를 해도,
그게 퍼블릭 서브넷이 아니라면 외부에선 접근할 수 없습니다.

서브넷이 퍼블릭인지 확인하려면?

  1. 해당 서브넷이 연결된 라우팅 테이블을 확인
  2. 아래 라우팅이 있어야 퍼블릭 서브넷입니다:
0.0.0.0/0 → 인터넷 게이트웨이(igw-xxxxxx)

 

✅ 3. 서브넷 변경은 안 된다 → 복제해서 새 퍼블릭 서브넷 그룹에 넣자

RDS는 생성 이후 서브넷 그룹을 바꿀 수 없습니다.
그래서 제가 선택한 방법은:

  • 퍼블릭 서브넷 2개 생성
  • IGW가 연결된 라우팅 테이블과 연결
  • 서브넷 그룹 생성 (위 퍼블릭 서브넷들 포함)
  • RDS → 복제 → 퍼블릭 액세스 예 / 새 서브넷 그룹 선택

이제 DBeaver에서 바로 접속 가능했습니다 ✅


 

🛠 실무에서 직접 느낀 팁

  • 서브넷 이름을 RDS-Pub-subnet-a, RDS-Pub-subnet-b 등 명확하게 짓자
  • 보안그룹은 목적별로 나눠서 생성해두면 나중에 관리가 쉬움
  • DBeaver 연결 테스트는 아래 명령어로 미리 확인 가능
nc -vz [엔드포인트 주소] 5432

 

💡 배운 점

항목 인사이트

보안그룹 포트와 IP는 최소 단위로 제한해야 안전
서브넷 퍼블릭 서브넷은 반드시 IGW가 연결된 라우팅 테이블이 필요
RDS 구조 인스턴스는 생성 시 서브넷 그룹을 정하며, 변경 불가
(결국, 보안을 고려하면 내부용 DB와 서비스용 DB 별도 구성할 수 밖에 없음)
실전 운영 초기 개발이라도 보안 설정은 확실히 하고 넘어가야 한다

 


 

📌 마무리하며

이번 작업은 단순히 "RDS에 연결"하는 수준을 넘어서, VPC 서브넷 구조, IGW 라우팅, 보안 그룹 전반을 이해하게 된 경험이었습니다.
민감한 데이터를 다루는 서비스일수록 보안 중심 인프라 설계가 기본이 되어야 하겠죠.