Azure 데이터베이스 방화벽의 광범위한 접근 허용

Azure 데이터베이스 방화벽의 넓은 주소 범위와 서비스 접근 예외를 검토하고 필요한 클라이언트만 허용하세요.

설명

데이터베이스의 공개 엔드포인트에 넓은 주소 범위를 허용하면 접속이 필요 없는 클라이언트까지 연결을 시도할 수 있습니다. 적절한 허용 범위는 주소 개수만으로 정할 수 없으며, 실제 애플리케이션과 관리 도구의 출발지 및 모든 방화벽 규칙을 함께 검토해야 합니다.

Azure SQL Database에서 start_ip_address와 end_ip_address를 모두 0.0.0.0으로 설정하면 Azure 서비스 연결을 허용하는 예외가 됩니다. 다른 고객의 Azure 리소스도 포함될 수 있으므로 자신의 구독으로만 제한하는 설정이 아닙니다. 서비스마다 방화벽 예외의 의미를 확인해야 하며, 네트워크 연결 허용이 인증이나 데이터베이스 권한을 대체하지는 않습니다.

잠재적 영향

  • 업무상 필요하지 않은 출발지나 광범위한 서비스에서 데이터베이스에 연결을 시도할 수 있습니다.
  • 유출된 인증 정보나 과도한 데이터 권한이 악용될 수 있는 접근 경로가 늘어날 수 있습니다.

해결 방법

  • 승인된 애플리케이션과 관리 도구의 실제 출발지를 확인하고 필요한 주소만 허용하세요. 공개 경로에서는 NAT 이후의 공인 주소를 사용하고, 모든 방화벽 규칙과 불필요한 Azure 서비스 예외를 함께 정리하세요. 범위를 여러 규칙으로 나누기만 해서는 접근이 줄어들지 않습니다.
  • 공개 접근이 필요 없다면 해당 서비스가 지원하는 프라이빗 연결, DNS와 클라이언트 경로를 구성하고 시험한 뒤 공개 접근을 비활성화하세요.
  • AzureRM 버전에 맞는 문법을 사용하고 Terraform 상태와 변경 계획을 확인하세요. 적용 후 필요한 연결, 불필요한 출발지의 차단, 인증과 최소 데이터 권한을 검증하세요.

예시

아래 부분 예제는 AzureRM v4.50.0의 azurerm_mssql_firewall_rule로 넓은 허용 범위를 단일 클라이언트 주소로 줄이는 방법을 보여줍니다. azurerm_mssql_server.example을 정의하고 문서용 주소를 실제 승인된 출발지로 바꿔 사용하세요. 이전 리소스에서 옮길 때는 Terraform 상태와 계획을 확인해야 합니다.

변경 전

hcl
resource "azurerm_mssql_firewall_rule" "wide_firewall_rule" {
  name                = "FirewallRule1"
  server_id           = azurerm_mssql_server.example.id
  start_ip_address    = "203.0.113.0"
  end_ip_address      = "203.0.113.255"
}

변경 후

hcl
resource "azurerm_mssql_firewall_rule" "wide_firewall_rule" {
  name                = "FirewallRule1"
  server_id           = azurerm_mssql_server.example.id
  start_ip_address    = "203.0.113.10"
  end_ip_address      = "203.0.113.10"
}

설명:

  • 변경 전: 예시 범위 전체를 허용합니다. 이 범위에 포함된 모든 주소가 필요한지 검토해야 합니다.
  • 변경 후: 하나의 출발지 203.0.113.10만 허용하도록 범위를 줄입니다. 다른 규칙과 서비스 예외를 포함한 전체 접근 범위도 확인하세요.

참조