Vpc 내에 있는 aws 퍼블릭 rds에 접근할 수 없음?

VPC 내에서 퍼블릭 IP가 활성화된 RDS를 사용하려고 하고 있는데, 한 VPC(prod)에서는 문제가 발생하고 있는 반면, 다른 VPC(non-prod)는 정상적으로 동작하고 있습니다.
몇 달 전에 non-prod를 설정했을 때는 특별한 설정 없이 잘 작동했고, 해당 테넌트 내에는 네트워크 방화벽도 없습니다.

공통점:

  • 두 환경 모두 RDS 퍼블릭 IP가 활성화되어 있음
  • RDS 인스턴스의 보안 그룹(Security Group)에는 포트 5432 (또는 모든 포트)가 열려 있음
    <— 편집: 이 내용은 잘못됨. 보안 그룹에는 포트가 열려 있었지만 기본 소스(예: 해당 보안 그룹에 속한 리소스들)로만 열려 있었음

차이점:

  • 서로 다른 VPC 사용 중
  • VPC에 대해 로깅을 설정하려 했으나, 퍼블릭 IP를 사용하는 경우 VPC를 통과하지 않아 로깅이 되지 않는 것 같음?

추가 관련 질문들:

(1) 퍼블릭 IP를 사용하는 경우, CloudWatch 로그에 나타나지 않는다는 내 가정은 맞는가?

답변: 아니다,
잘못된 가정이다. 퍼블릭 IP를 통해 접근하더라도 로그에 나타나야 한다. 그러나 로그에 나타나지 않은 이유는, VPC로 들어오지조차 못했고, 보안 그룹 레벨에서 차단되었기 때문이다.

(2) 확인할 수 있는 다른 로그는 있는가?

답변: 없다
데이터베이스 로그도 확인했지만 아무 내용이 없었고, pgadmin4 및 telnet을 통해 포트 5432로 연결을 시도했을 때 “connection timeout expired” 오류가 발생함

기본적으로 VPC의 보안 그룹은 sg-015ed4c212353asd7c / default 와 같은 소스를 사용한다. 이 보안 그룹 자체를 소스로 참조하는 항목은 가장 오른쪽 열에 있으며, 잘 보이지 않을 수 있지만 실제로는 해당 보안 그룹 내의 리소스에만 적용된다. 만약 모든 IP에 트래픽을 허용하려면 소스를 0.0.0.0/0으로 설정해야 한다. 특정 IP만 허용하려면 A.B.C.D/32 형식으로 설정해야 한다.

"VPC의 모든 서브넷에 인터넷 게이트웨이가 완전히 열려 있지만, 이는 인바운드 트래픽에는 영향을 주지 않는다"라는 말은 사실과 다릅니다.
인터넷 게이트웨이는 인바운드와 아웃바운드 인터넷 트래픽을 모두 처리합니다.
인터넷 게이트웨이로 향하는 라우팅 경로가 없다면, 외부 인터넷으로부터의 인바운드 트래픽은 서브넷 내 리소스에 도달할 수 없습니다.

VPC의 서브넷 중 어느 하나라도 기본이 아닌(Network ACL) 네트워크 ACL 규칙이 정의되어 있나요?

정확히 하자면, RDS 데이터베이스에 인터넷에서 접근할 수 있기를 원하시는 건가요?

  • RDS 데이터베이스의 “Publicly accessible” 설정이 "Yes"로 되어 있나요?
  • 해당 RDS 인스턴스에 연결된 보안 그룹(Security Group)의 인바운드 규칙 구성이 어떻게 되어 있나요?
  • RDS 인스턴스에 연결된 서브넷 그룹(Subnet Group)은 오직 퍼블릭 서브넷(라우트 테이블에 인터넷 게이트웨이로의 경로가 있는 서브넷)만 포함하고 있나요? 아니면 프라이빗 서브넷도 포함되어 있나요?

이러한 항목들이 Flow Logs보다 먼저 집중해야 할 핵심 포인트입니다.

(1) 퍼블릭 IP에 대한 내 가정이 맞는가? 즉, 퍼블릭 IP를 사용하는 경우 해당 트래픽은 CloudWatch 로그에 나타나지 않는다는 것? 아니요, 그 가정은 틀렸습니다. 모든 트래픽(허용 및 거부)을 캡처하도록 설정되어 있다면, 퍼블릭 IP를 통해 VPC로 들어오고 나가는 트래픽도 로그에 기록됩니다.

(2) 로그 관점에서 추가로 확인할 수 있는 것이 있는가? 별다른 것이 떠오르지는 않습니다. VPC Flow Logs가 핵심이며, 이를 통해 다음에 어디를 조사해야 할지 알 수 있습니다.