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

RDS의 공개 접근 설정을 확인하고, 생략 시 기본값과 실제 네트워크 접근 조건을 구분합니다.

설명

RDS 인스턴스에 publicly_accessible: true를 설정하면 공개 접근이 활성화되어 엔드포인트가 VPC 외부에서 공개 IP 주소로 해석됩니다. 실제 연결은 보안 그룹과 네트워크 경로의 허용도 필요하며, 데이터베이스 인증은 별도입니다. 공개 접근 설정만으로 누구나 데이터에 접근할 수 있다고 판단해서는 안 됩니다.

publicly_accessible을 생략했을 때 AWS API가 적용하는 기본값은 엔진과 서브넷 그룹 지정 여부에 따라 달라집니다. 생략을 false와 같은 의미로 취급하지 말고, 배포된 인스턴스의 설정도 확인하세요.

잠재적 영향

  • 네트워크와 보안 그룹이 외부 연결을 허용하면 데이터베이스가 원치 않는 접속 시도의 대상이 될 수 있습니다.
  • 인증이나 데이터베이스 권한에도 문제가 있으면 무단 데이터 접근으로 이어질 수 있습니다.
  • 생략된 값을 비공개로 오인하면 운영 중인 인스턴스의 공개 접근 설정을 놓칠 수 있습니다.

해결 방법

  • 내부 전용 데이터베이스는 publicly_accessible: false를 명시하고, 애플리케이션과 관리자의 사설 연결 경로를 준비하세요.
  • 서브넷 라우팅과 보안 그룹을 필요한 연결로 제한하세요. 이 플래그를 끄는 것만으로 인스턴스가 다른 서브넷으로 이동하거나 모든 다른 접근 경로가 차단되지는 않습니다.
  • 변경 적용 시점과 연결 영향을 검토하고, 적용 후 실제 인스턴스 설정과 정상적인 애플리케이션 접속을 확인하세요.

예시

아래 예시는 publicly_accessible 값의 차이를 보여 줍니다. 두 예시는 엔진과 다른 속성도 다르므로 변경 후 예시 전체를 기존 데이터베이스에 적용하는 마이그레이션 절차로 사용하지 마세요. 인스턴스 유형, 모듈 버전, 변수, 클러스터 등 필요한 리소스는 별도로 확인해야 합니다.

변경 전

yaml
- name: create public db instance
  community.aws.rds_instance:
    id: test-encrypted-db
    state: present
    engine: mariadb
    storage_encrypted: true
    db_instance_class: db.t2.medium
    username: "{{ username }}"
    password: "{{ password }}"
    allocated_storage: "{{ allocated_storage }}"
    publicly_accessible: true

변경 후

yaml
- name: create private db instance
  community.aws.rds_instance:
    engine: aurora
    db_instance_identifier: ansible-test-aurora-db-instance
    instance_type: db.t2.small
    password: "{{ password }}"
    username: "{{ username }}"
    cluster_id: ansible-test-cluster
    publicly_accessible: false

설명:

  • 변경 전: publicly_accessible: true로 공개 접근을 활성화합니다. storage_encrypted: true는 저장 데이터 암호화 설정이며 네트워크 접근 제한을 대신하지 않습니다.
  • 변경 후: publicly_accessible: false로 공개 접근을 비활성화합니다. 사설 네트워크를 통한 연결과 다른 보안 설정은 별도로 점검해야 합니다.

참조