메뉴 닫기

[Tech] VPC 피어링을 사용하여 타 계정 RDS/DB에 안전하게 접속하는 방법

안녕하세요,

AWS에서는 계정 간 리소스 격리가 기본이기 때문에, A 계정의 EC2 인스턴스에서 B 계정의 RDS 인스턴스에 바로 접근할 수는 없습니다. 하지만 특정 상황에서는 이와 같은 계정 간 RDS 접근이 필요한 경우가 있습니다.

이번시간에서는 타 계정의 Amazon RDS 인스턴스에 접근해야 하는 상황과 이를 해결하는 방법을 실습 중심으로 소개하고자 합니다.


1. 어떨 경우 필요한가요?

다음과 같은 경우에 타 계정 RDS 접근이 필요할 수 있습니다.

  • 고객사 계정의 RDS에 접근하여 마이그레이션, 진단, 튜닝 등 기술 지원을 제공해야 할 때
  • 개발/운영 계정 분리 구조에서 운영 계정의 RDS를 개발 계정에서 참조해야 할 때
  • 공통 데이터베이스 공유를 위해 여러 AWS 계정에서 동일 RDS를 조회해야 할 때

2. 아키텍처 예시

Amazon RDS 인스턴스는 보안을 위해 기본적으로 퍼블릭 액세스를 비활성화하고 프라이빗 서브넷에 배치하는 것이 권장됩니다.
이런 경우, 같은 계정 내에서도 외부 인터넷을 통해서는 접속할 수 없으며, 다른 AWS 계정의 리소스에서 접근하려면 명시적인 네트워크 연결 구성이 필요합니다.

다른 계정에서 VPC 피어링(Peering Connection) 을 통해 통신이 가능하도록 설정하는 아키텍쳐는 다음과 같습니다.


3. 접속 방법

✅ Private 접근이 필요할 경우

A 계정의 EC2 인스턴스에서 B 계정의 Private 서브넷에 위치한 RDS 인스턴스에 접속하기 위해서는 두 계정간의 피어링을 생성해야합니다.

  • VPC > 피어링 연결 > 피어링 연결 생성

  • 요청자 VPC: A 계정의 VPC 선택
  • 수락자 VPC: B 계정의 VPC ID 입력
  • 계정 ID: B 계정의 AWS 계정 ID 입력
  • 리전 동일해야 함 (다르면 inter-region 선택)

✅ B 계정에서 피어링 요청 수락

B 계정 콘솔에서:

  • VPC > 피어링 연결 > 수락
  • 수락 후 상태가 활성(Active) 으로 변경되어야 함

✅ 양쪽 라우팅 테이블 구성

A 계정 VPC의 라우팅 테이블에 다음 항목 추가:

Destination: B 계정의 VPC CIDR (예: 172.31.0.0/16)
Target: Peering Connection ID

B 계정 VPC의 라우팅 테이블에도 다음 항목 추가:

Destination: A 계정의 VPC CIDR (예: 10.0.0.0/16)
Target: Peering Connection ID

✅ 보안 그룹 설정 (B 계정 RDS)

  • RDS 인스턴스의 보안 그룹 인바운드 규칙에 A 계정 EC2 인스턴스의 프라이빗 IP 대역 또는 보안 그룹 ID 허용

Type: MySQL/Aurora
Protocol: TCP
Port Range: 3306
Source: A 계정 EC2의 프라이빗 IP or 보안 그룹

✅ 실습 결과 확인

A 계정에서 설정을 마친 후, B 계정의 RDS 인스턴스에 정상적으로 접속되는 것을 확인할 수 있었습니다.

또한 A 계정에서 접근한 RDS의 정보와 B 계정에서 직접 조회한 RDS 정보가 동일함을 통해, 계정 간 VPC 피어링 및 보안 설정이 올바르게 구성되었음을 검증할 수 있었습니다


이처럼 AWS 환경에서는 VPC Peering을 적절히 활용하면,
퍼블릭 액세스를 허용하지 않은 Amazon RDS 인스턴스에도
다른 계정에서 안전하게 접근할 수 있습니다.

이 방식은 외부 노출 없이 계정 간 데이터 연동이 필요한 상황이나
보안성을 강화해야 하는 운영 환경에서 특히 유용하게 활용됩니다.

감사합니다

 

참고 링크

[1]https://aws.amazon.com/ko/blogs/database/security-best-practices-for-amazon-rds-for-mysql-and-mariadb-instances/?utm_source=chatgpt.com