공개 접근을 활성화한 RDS 인스턴스

RDS 인스턴스의 공개 주소는 외부 연결 경로를 만들 수 있습니다. 필요한 접근 범위를 정하고, 공개 접근 설정과 네트워크 권한을 함께 관리하세요.

설명

CloudFormation의 AWS::RDS::DBInstance에서 PubliclyAccessible을 활성화하면 RDS 인스턴스가 공개 주소를 사용할 수 있습니다. 실제 외부 연결은 서브넷 라우팅과 보안 그룹 등 네트워크 설정에 따라 달라집니다. 네트워크 연결이 가능해도 데이터베이스 인증과 데이터 접근 권한은 별도로 필요합니다.

내부 애플리케이션만 사용하는 데이터베이스에는 불필요한 공개 주소를 부여하지 않는 것이 좋습니다. PubliclyAccessible을 생략했을 때의 기본 동작은 VPC와 DB 서브넷 그룹 구성에 따라 달라질 수 있으므로, 원하는 접근 방식을 명시적으로 설정하세요.

잠재적 영향

  • 인터넷 연결 경로와 넓은 보안 그룹 허용 범위가 함께 있으면 의도하지 않은 출처에서 로그인이나 취약점 악용을 시도할 수 있습니다. 실제 데이터 접근 여부는 인증과 권한 등 추가 조건에 달려 있습니다.
  • 현재는 연결이 제한되어 있어도 불필요한 공개 주소를 유지하면 이후 라우트나 보안 그룹 변경으로 외부 접근이 가능해질 수 있습니다.

해결 방법

  • 내부 전용 인스턴스에는 PubliclyAccessible: false를 명시하세요. 애플리케이션과 관리 도구에 필요한 사설 연결 경로를 먼저 준비한 뒤 공개 접근을 끄세요.
  • DB 서브넷 그룹의 서브넷과 라우트, 보안 그룹을 함께 검토해 필요한 클라이언트와 데이터베이스 포트만 허용하세요. 변경 후 필요한 연결이 유지되는지 테스트하세요.
  • 업무상 공개 접근이 필요하다면 승인된 출처만 보안 그룹에 허용하고 데이터베이스 인증과 전송 암호화를 적용하세요. 배포된 인스턴스의 설정이 템플릿과 일치하는지도 확인하세요.

예시

아래 예시는 공개 접근 설정만 비교하며 DB 서브넷 그룹과 보안 그룹은 포함하지 않습니다. Engine, EngineVersion, DB 인스턴스 클래스는 배포할 리전에서 지원하는 값으로 선택하세요. SecretPassword01은 예시용 비밀번호이므로 실제로 사용하거나 템플릿에 비밀번호를 직접 저장하지 마세요. 지원되는 구성에서는 Secrets Manager를 통한 RDS 비밀번호 관리 등을 사용하세요.

변경 전

yaml
Resources:
  MyDB:
    Type: "AWS::RDS::DBInstance"
    Properties:
      DBInstanceIdentifier: mydbinstance
      DBName: mydb
      DBInstanceClass: db.m5.large
      AllocatedStorage: 50
      Engine: MySQL
      EngineVersion: 8.0.16
      MasterUsername: admin
      MasterUserPassword: SecretPassword01
      PubliclyAccessible: true

변경 후

yaml
Resources:
  MyDB:
    Type: "AWS::RDS::DBInstance"
    Properties:
      DBInstanceIdentifier: mydbinstance
      DBName: mydb
      DBInstanceClass: db.m5.large
      AllocatedStorage: 50
      Engine: MySQL
      EngineVersion: 8.0.16
      MasterUsername: admin
      MasterUserPassword: SecretPassword01
      PubliclyAccessible: false

설명:

  • 변경 전: PubliclyAccessible: true로 공개 주소 사용을 활성화합니다. 외부에서 실제로 연결할 수 있는지는 라우팅과 보안 그룹에도 달려 있습니다.
  • 변경 후: PubliclyAccessible: false로 공개 주소 사용을 비활성화합니다. 필요한 사설 연결, 인증, 비밀번호 관리와 보안 그룹은 별도로 구성하고 검증해야 합니다.

참조