설명
Azure Cache for Redis의 공개 엔드포인트를 사용할 때 방화벽 범위가 필요한 클라이언트보다 넓으면 불필요한 외부 연결 시도를 허용할 수 있습니다. start_ip와 end_ip는 허용 범위의 시작과 끝을 정하므로, 양 끝 주소뿐 아니라 그 사이의 모든 주소와 다른 규칙으로 허용되는 범위까지 검토해야 합니다.
승인된 클라이언트의 공인 주소를 좁게 허용하는 구성과 인터넷 전체를 허용하는 구성은 다릅니다. 사설 IP 문자열을 넣는 것만으로 프라이빗 엔드포인트나 가상 네트워크 연결이 구성되지는 않습니다. 네트워크 접근 제한과 별도로 인증과 데이터 권한도 필요합니다.
잠재적 영향
- 불필요하게 넓은 공개 범위는 캐시에 연결을 시도할 수 있는 클라이언트를 늘립니다.
- 인증 정보 유출이나 과도한 권한이 겹치면 데이터 조회·변경이나 자원 소모로 이어질 수 있습니다.
해결 방법
- 공개 엔드포인트가 필요하다면 NAT 등을 거친 실제 클라이언트 출발지 주소를 확인하고 필요한 주소만 허용하세요. 모든 방화벽 규칙을 합친 접근 범위도 점검하세요.
- 프라이빗 연결만 필요하다면 지원되는 등급에서 프라이빗 엔드포인트, DNS와 클라이언트 경로를 구성하고 시험한 뒤
public_network_access_enabled를false로 설정하세요. - 변경 전 Terraform 계획과 연결 영향을 확인하세요. 변경 후에는 필요한 클라이언트의 접속과 불필요한 출발지의 차단을 시험하고, 인증·데이터 권한·TLS를 함께 점검하세요.
예시
아래 부분 예제는 AzureRM v4.50.0의 non_ssl_port_enabled 문법을 사용합니다. 생략된 리소스 그룹과 random_id.server를 정의하고, 문서용 주소 203.0.113.10을 승인된 클라이언트의 실제 공인 출발지 주소로 바꾸세요. 프라이빗 연결을 구성하는 예제는 아닙니다.
변경 전
hcl
resource "azurerm_redis_cache" "example" {
name = "redis${random_id.server.hex}"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
capacity = 1
family = "P"
sku_name = "Premium"
non_ssl_port_enabled = false
}
resource "azurerm_redis_firewall_rule" "public_rule" {
name = "someIPrange"
redis_cache_name = azurerm_redis_cache.example.name
resource_group_name = azurerm_resource_group.example.name
start_ip = "1.2.3.4"
end_ip = "2.3.4.5"
}
변경 후
hcl
resource "azurerm_redis_cache" "example" {
name = "redis${random_id.server.hex}"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
capacity = 1
family = "P"
sku_name = "Premium"
non_ssl_port_enabled = false
}
resource "azurerm_redis_firewall_rule" "public_rule" {
name = "someIPrange"
redis_cache_name = azurerm_redis_cache.example.name
resource_group_name = azurerm_resource_group.example.name
start_ip = "203.0.113.10"
end_ip = "203.0.113.10"
}
설명:
- 변경 전:
1.2.3.4부터2.3.4.5까지 넓은 범위를 허용합니다. 실제로 필요한 주소인지 검토해야 합니다. - 변경 후: 시작과 끝을 하나의 클라이언트 주소로 맞춰 허용 범위를 줄입니다. 리소스 주소
public_rule은 유지하며, 실제 주소와 연결 경로는 배포 환경에 맞게 확인해야 합니다.