설명
RDS 서브넷 그룹에 포함된 서브넷에는 VPC 범위 안의 유효한 주소 블록을 지정해야 합니다. 서브넷의 cidr에 0.0.0.0/0을 지정하거나 ipv6_cidr에 ::/0을 지정하는 것은 유효한 AWS 서브넷 구성이 아닙니다.
AWS에서 공개 서브넷은 인터넷 게이트웨이로 직접 향하는 라우트가 있는 서브넷입니다. 사설 CIDR을 사용하더라도 이런 라우트가 있으면 공개 서브넷이므로, 라우트의 목적지로 쓰는 /0과 서브넷 자체의 주소 범위를 구분해서 검토해야 합니다.
잠재적 영향
- 유효하지 않은
/0서브넷 설정은 배포 실패의 원인이 됩니다. - 사설 CIDR만을 근거로 네트워크 격리를 판단하면 실제 인터넷 접근 경로를 놓칠 수 있습니다.
- 라우팅, 공개 접근 설정과 보안 그룹이 외부 연결을 함께 허용하면 RDS가 원치 않는 접속 시도를 받을 수 있습니다.
해결 방법
- 서브넷에는 VPC 범위 안의 유효하고 겹치지 않는 CIDR 블록을 지정하세요. CIDR 변경만으로 서브넷이 비공개가 되지는 않습니다.
- 내부 전용 데이터베이스라면 인터넷 게이트웨이로 직접 향하는 라우트가 없는 서브넷을 선택하고, 서브넷 그룹에 실제로 포함된 서브넷을 확인하세요.
publicly_accessible, 보안 그룹, 애플리케이션의 연결 경로를 함께 점검하세요. 서브넷 그룹의 가용 영역 요건도 사용 중인 RDS 구성에 맞게 확인하세요.
예시
아래는 서브넷 주소 설정을 비교하는 발췌 예시이며 배포용 구성이 아닙니다. 첫 예시의 /0은 유효한 서브넷 CIDR이 아니고, 두 예시 모두 두 번째 서브넷 선언과 라우팅 구성을 생략했습니다. 기존 모듈 이름, 리소스 식별자, RDS 설정도 실제 환경에 맞게 확인해야 합니다.
변경 전
yaml
- name: create minimal aurora 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
db_subnet_group_name: my_subnet_group
- name: Add or change a subnet group
community.aws.rds_subnet_group:
state: present
name: my_subnet_group
description: My Fancy Ex Parrot Subnet Group
subnets:
- "{{ subnet1.subnet.id }}"
- "{{ subnet2.subnet.id }}"
- name: Create subnet for database servers
amazon.aws.ec2_vpc_subnet:
state: present
vpc_id: vpc-123456
cidr: 0.0.0.0/0
register: subnet1
변경 후
yaml
- name: create minimal aurora 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
db_subnet_group_name: my_private_subnet_group
- name: add private subnet group
community.aws.rds_subnet_group:
state: present
name: my_private_subnet_group
description: private database subnets
subnets:
- "{{ subnet_private_a.subnet.id }}"
- "{{ subnet_private_b.subnet.id }}"
- name: create private subnet
amazon.aws.ec2_vpc_subnet:
state: present
vpc_id: vpc-123456
cidr: 10.0.1.16/28
register: subnet_private_a
설명:
- 변경 전:
0.0.0.0/0은 서브넷의 주소 범위로 사용할 수 없습니다. 공개 서브넷을 만들려는 경우에도 유효한 CIDR과 적절한 라우팅이 필요합니다. - 변경 후: 서브넷 주소를
10.0.1.16/28로 바꿨습니다. 이 범위가 VPC 안에 있고 다른 서브넷과 겹치지 않는지 확인하세요. 이름에private가 있거나 CIDR이 사설 대역이라고 해서 인터넷 경로가 차단되는 것은 아닙니다.