설명
Alibaba Cloud 공급자 1.293.0의 alicloud_db_instance는 최상위 address 속성을 지원하지 않습니다. 이 위치에 0.0.0.0/0이나 사설 주소를 넣어도 유효한 접근 제어가 되지 않습니다. address는 PostgreSQL용 pg_hba_conf 블록 안에서 사용하는 속성입니다.
RDS의 연결 범위는 지원되는 IP 허용 목록과 네트워크 설정으로 관리해야 합니다. pg_hba_conf.address의 0.0.0.0/0은 해당 규칙의 사용자와 데이터베이스에 대해 모든 IPv4 출발지를 포함합니다. 실제 접속에는 네트워크 경로, 인스턴스의 IP 허용 목록과 인증 설정도 관계합니다.
잠재적 영향
- 지원하지 않는 속성은 Terraform 검증 오류로 이어져 배포나 변경을 막을 수 있습니다. 접근 제한을 설정했다고 생각해도 의도한 제어가 적용되지 않을 수 있습니다.
- 실제 연결 제어에서 출발지 범위를 과도하게 허용하면 불필요한 연결 시도에 노출될 수 있습니다. 데이터 접근은 인증과 데이터베이스 권한에도 달려 있습니다.
해결 방법
- 사용 중인 공급자 스키마를 확인하고 최상위
address를 제거한 뒤terraform validate로 검증하세요. 값만 사설 주소로 바꾸지 마세요. security_ips에 필요한 클라이언트의 실제 출발지 IP나 최소한의 네트워크 범위를 지정하세요. PostgreSQL의pg_hba_conf를 사용한다면 주소와 함께 사용자, 데이터베이스와 인증 방식을 검토하세요.- 공용 엔드포인트가 필요한지 확인하고 가능한 경우 내부 연결을 사용하세요. 변경 전에 정상 클라이언트의 경로를 확보하고, 변경 후 허용한 접속과 차단해야 할 접속을 확인하세요.
예시
다음은 속성 위치를 비교하는 부분 예시입니다. 변수와 가상 스위치는 별도로 정의하고, 엔진 버전·인스턴스 사양·스토리지 용량은 해당 리전에서 지원하는 조합으로 선택하세요. 예시 IP는 실제로 필요한 클라이언트 주소로 바꾸세요.
지원되지 않는 속성
hcl
resource "alicloud_db_instance" "example" {
engine = "MySQL"
engine_version = var.engine_version
instance_type = var.instance_type
instance_storage = var.instance_storage
instance_charge_type = "Postpaid"
instance_name = var.name
vswitch_id = alicloud_vswitch.example.id
monitoring_period = "60"
address = "0.0.0.0/0"
}
최상위 address는 지원되지 않으므로 이 구성은 유효하지 않습니다. 이를 적용된 공개 접근 설정으로 해석해서는 안 됩니다.
지원되는 IP 허용 목록
hcl
resource "alicloud_db_instance" "example" {
engine = "MySQL"
engine_version = var.engine_version
instance_type = var.instance_type
instance_storage = var.instance_storage
instance_charge_type = "Postpaid"
instance_name = var.name
vswitch_id = alicloud_vswitch.example.id
monitoring_period = "60"
security_ips = ["10.23.12.24/32"]
}
지원되는 security_ips로 하나의 클라이언트 주소를 지정합니다. 이 설정이 사설 연결 경로를 만들거나 데이터베이스 인증을 대신하지는 않습니다. 실제 IP 허용 목록 전체와 클라이언트의 연결 경로도 확인하세요.