## RDS를 특정 VPC의 서브넷에 배치하려면 서브넷 그룹을 먼저 생성해야 함 ## 

* 퍼블릭일 때는 기본(Default) VPC와 서브넷을 쓰면 AWS가 대충 알아서 배치하지만, 프라이빗 환경은 그렇지 않음.
=> 내가 만든 프라이빗 전용 서브넷들을 하나로 묶어서 "여기에만 DB를 만들어라"라고 명시해 주는 'DB 서브넷 그룹' 단계가 필수

=> Multi-AZ를 위한 설정임!

* 공인 IP 자체가 존재하지 않으므로 반드시 Bastion Host(경유지)가 필요

 

## RDS DB 서브넷 그룹 핵심 정리 ## 

1. IP 주소 가용성 확정 (IP Address Reservation)

  • 목적: 장애 시 즉각적인 Failover를 위한 네트워크 주소 확보.
  • 메커니즘: RDS는 장애 발생 시 다른 가용 영역(AZ)으로 이사를 가야 함. 이때 이사 갈 서브넷에 남는 IP가 없으면 DB가 생성되지 못함.
  • 실무적 이유: 서브넷 그룹은 DB가 사용할 수 있는 IP 대역을 미리 **예약(Reservation)**하여, EC2 등 타 자원에 의한 IP 고갈로 인해 DB 복구가 실패하는 상황을 원천 차단함.

2. 가용 영역(AZ) 간의 로드맵 정의

  • 목적: 고가용성(Multi-AZ) 구성의 물리적 범위 제한.
  • 메커니즘: Multi-AZ 옵션 활성화 시, AWS는 서브넷 그룹에 포함된 AZ 리스트 내에서만 Standby 인스턴스를 생성함.
  • 실무적 이유: 사전에 정의된 물리적 위치(AZ)를 강제함으로써, 인프라 관리자가 의도하지 않은 AZ에 DB가 배치되거나 라우팅이 꼬이는 설계를 방지함.

3. 네트워크 엔드포인트 유지 및 라우팅 보장

  • 목적: 인스턴스 위치가 바뀌어도 접속 주소(Endpoint)를 유지.
  • 메커니즘: Failover 시 DNS는 동일하지만 가리키는 Private IP는 변경됨.
  • 실무적 이유: 바뀐 IP 역시 서브넷 그룹 내의 주소여야 하므로, 해당 VPC 내부 라우팅 테이블 및 보안 정책(Security Group)이 즉시 적용될 수 있는 상태를 보장함.

 

## 프라이빗 서브넷에 RDS 인스턴스 추가하기## 

 

1. DB 서브넷 그룹 생성
RDS는 고가용성을 위해 최소 2개의 가용 영역에 걸쳐 있어야 함.

  • AWS 콘솔: RDS > 서브넷 그룹 > DB 서브넷 그룹 생성.
  • 설정: VPC를 선택하고, 프라이빗 서브넷들이 위치한 2개 이상의 가용 영역과 해당 서브넷 ID를 포함

2. RDS 보안 그룹(SG) 설정
프라이빗 서버가 RDS에 접속할 수 있도록 문을 열어줘야 함

  • 인바운드 규칙 추가:
    유형: MySQL/Aurora (또는 사용하는 DB 포트 3306 등).
    소스: 프라이빗 서버가 사용 중인 보안 그룹 ID를 직접 입력하는 것이 가장 안전 (또는 프라이빗 서브넷 대역)

3. RDS 인스턴스 생성
표준 생성: 원하는 DB 엔진(MySQL, PostgreSQL 등) 선택.

  • 연결 설정:
    VPC: 현재 작업 중인 VPC 선택.
    DB 서브넷 그룹: 1단계에서 만든 그룹 선택.
    퍼블릭 액세스: '아니요' (프라이빗 서브넷에 두기 위함).
    기존 VPC 보안 그룹: 2단계에서 설정한 보안 그룹 선택.

 

4. 프라이빗 서브넷의 RDS 접속방법

- 퍼블릭 서브넷에 위치했을 때와 달리 RDS 엔드포인트로 외부에서 접근 불가

  => Bastion Host를 사용하여 접근!

1) DBeaver 접속

2) RDS 의 connection 정보 입력

3) SSH 연결 설정

- Bastion Host EC2 생성 시 발급한 Private Key를 설정

4) Test Connection 

 


 

## 실제 현업에서는 프라이빗 RDS를 어떻게 접근할까?

- 모든 개발자들이 SSH Key로 세팅하는 것은 비효율적일텐데, 프로젝트마다 다르겠지만 알아본 바를 정리해봄.

 

1. IAM + SSM 터널링 (표준)
방식: .pem 키 대신 사번 계정(IAM) 권한으로 보안 통로 구축
동작: AWS CLI로 내 PC와 RDS 사이의 가상 터널을 생성 (Port Forwarding)
실무: 디비버(DBeaver)에서 서버 주소를 localhost로 설정하여 접속
강점: SSH 포트(22번)를 닫아도 접속 가능, 모든 명령어 로그 기록

2. AWS Client VPN (네트워크 통합)
방식: VPN 접속을 통해 내 PC를 회사 내부 망에 합류
동작: 로그인 시 내 PC가 10.x.x.x 대역의 사설 IP를 할당받음
실무: 별도 터널링 없이 RDS의 **사설 주소(Private Endpoint)**로 직접 연결
강점: 실제 사내 랜선을 꽂은 것과 동일한 편리한 작업 환경 제공

3. DB 접근 제어 솔루션 (보안 강화)
방식: DB와 개발자 사이에 중계 플랫폼(QueryPie, Chakra 등) 배치
동작: 사내 포털 승인 후, 솔루션 에이전트를 통해서만 쿼리 실행
실무: 쿼리 로그 실시간 감시 및 개인정보 마스킹 자동 적용
강점: 금융권/대규모 커머스의 강력한 보안 감사(Audit) 대응용

+ Recent posts