설명
azurerm_redis_firewall_rule의 start_ip가 0.0.0.0이고 end_ip가 255.255.255.255이면 허용 범위가 전체 IPv4 주소를 포함합니다. 이 규칙은 방화벽의 IPv4 출발지 제한을 없앱니다. 실제 외부 연결 가능 여부는 공개 네트워크 설정과 경로에 달려 있으며, Redis 인증과 권한 검사까지 없애지는 않습니다.
잠재적 영향
공개 엔드포인트에 도달할 수 있는 외부 클라이언트가 연결을 시도할 수 있습니다. 인증 정보 유출이나 취약한 인증 설정이 겹치면 캐시 데이터의 조회·변조 또는 서비스 장애로 이어질 수 있습니다.
해결 방법
- 전체 규칙의 허용 범위를 검토하고, 캐시에서 보이는 승인된 클라이언트 출발지 IP나 필요한 최소 범위로 제한하세요.
- 비공개 연결을 사용하려면 프라이빗 엔드포인트와 DNS 경로가 동작하는지 확인한 뒤 공개 네트워크 접근을 비활성화하세요. 사설 주소를 허용 목록에 넣는 것만으로는 비공개 연결이 구성되지 않습니다.
예시
AzureRM 4.x용 발췌 예시이며, 참조하는 리소스 그룹과 random_id는 별도로 정의되어 있다고 가정합니다. 203.0.113.10은 문서용 주소이므로 실제 승인된 클라이언트 출발지 IP로 바꾸세요.
변경 전
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
minimum_tls_version = "1.2"
}
resource "azurerm_redis_firewall_rule" "open_rule" {
name = "someIPrange"
redis_cache_name = azurerm_redis_cache.example.name
resource_group_name = azurerm_resource_group.example.name
start_ip = "0.0.0.0"
end_ip = "255.255.255.255"
}
변경 후
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
minimum_tls_version = "1.2"
}
resource "azurerm_redis_firewall_rule" "open_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"
}
설명: 같은 open_rule 리소스의 허용 범위를 전체 IPv4에서 단일 승인 주소로 줄입니다. 다른 규칙에 넓은 허용 범위가 남아 있다면 함께 수정하세요.