❓ 처음에 이런 고민이 있었습니다
“RDS(PostgreSQL)를 만들었는데… DBeaver로 접속이 안돼요.”
AWS 프리티어로 인프라를 세팅하다 보면 대부분 겪는 문제죠.
- 퍼블릭 액세스는 예로 했는데도?
- 비밀번호, 포트도 다 맞는데 접속 실패?
- 뭐가 문제지?
바로 저도 이 상황이었습니다.
그런데 알고 보니 보안그룹 설정과 VPC 서브넷 구조가 발목을 잡고 있더군요.
📌 이 글에서 다룰 내용은요
- 보안그룹에서 어떤 포트를 어떻게 열어야 하는지
- 퍼블릭 액세스가 왜 서브넷 구조에 따라 막히는지
- RDS가 퍼블릭 접속되기 위한 구조 실전 구성 방법
- 실수 없이 설정하는 체크리스트까지
🧭 제가 이걸 겪게 된 배경
저는 스타트업 CTO로서, AWS 프리티어를 최대한 활용해 MVP 인프라를 구성하고 있었어요.
비용을 아끼면서도 실무에 가까운 구조를 만들고 싶었죠.
그래서 EC2, RDS, S3, CloudFront를 조합해서 단순한 서버 구조를 만들었는데… PostgreSQL(RDS)만 접속이 안 되는 거예요.
그래서 문제 해결을 위해 아래와 같은 과정을 거쳤습니다.
💥 본론 – 핵심 설정 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 생성할 때 퍼블릭 액세스: 예를 해도,
그게 퍼블릭 서브넷이 아니라면 외부에선 접근할 수 없습니다.
서브넷이 퍼블릭인지 확인하려면?
- 해당 서브넷이 연결된 라우팅 테이블을 확인
- 아래 라우팅이 있어야 퍼블릭 서브넷입니다:
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 라우팅, 보안 그룹 전반을 이해하게 된 경험이었습니다.
민감한 데이터를 다루는 서비스일수록 보안 중심 인프라 설계가 기본이 되어야 하겠죠.
'AWS cloud' 카테고리의 다른 글
AWS 비용 Azure와 비교해보기, 프리티어 이후 어떻게 살아야 하나 01 (0) | 2025.02.16 |
---|